有人可以解釋為什么m := map[string]struct{}{"hello": {}}是有效的代碼,但是這個c := make(chan struct{}, 1)
c <- {}不是?似乎我可以{}在第一個語句中構(gòu)建結(jié)構(gòu),但我需要struct{}{}為第二個語句做。
1 回答

牛魔王的故事
TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超3個贊
這不是蘋果對蘋果。如果你嘗試這個,你會得到同樣的錯誤:
package main
func main() {
m := make(map[string]struct{})
m["hello"] = {} // syntax error: unexpected {, expecting expression
}
至于你更大的問題,我相信這里已經(jīng)回答了[1]:
在數(shù)組、切片或映射類型的復(fù)合文字中T,本身是復(fù)合文字的元素或映射鍵可以省略相應(yīng)的文字類型,如果它與 的元素或鍵類型相同T。
例如,如果您有一個復(fù)合文字:
map[string]struct{}
其中元素也是復(fù)合文字:
struct{}
然后你可以省略類型:
{}
https://golang.org/ref/spec#Composite_literals
- 1 回答
- 0 關(guān)注
- 105 瀏覽
添加回答
舉報
0/150
提交
取消