为了账号安全,请及时绑定邮箱和手机立即绑定

GoLang 空结构构造

GoLang 空结构构造

Go
繁星coding 2022-10-10 16:48:50
有人可以解释为什么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


查看完整回答
反对 回复 2022-10-10
  • 1 回答
  • 0 关注
  • 90 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信