有人可以解释为什么m := map[string]struct{}{"hello": {}}是有效的代码,但是这个c := make(chan struct{}, 1)
c <- {}不是?似乎我可以{}在第一个语句中构建结构,但我需要struct{}{}为第二个语句做。
1 回答
牛魔王的故事
TA贡献1830条经验 获得超3个赞
这不是苹果对苹果。如果你尝试这个,你会得到同样的错误:
package main
func main() {
m := make(map[string]struct{})
m["hello"] = {} // syntax error: unexpected {, expecting expression
}
至于你更大的问题,我相信这里已经回答了[1]:
在数组、切片或映射类型的复合文字中T,本身是复合文字的元素或映射键可以省略相应的文字类型,如果它与 的元素或键类型相同T。
例如,如果您有一个复合文字:
map[string]struct{}
其中元素也是复合文字:
struct{}
然后你可以省略类型:
{}
https://golang.org/ref/spec#Composite_literals
- 1 回答
- 0 关注
- 90 浏览
添加回答
举报
0/150
提交
取消