有人可以解釋為什么會這樣
m := map[string]struct{}{"hello": {}}
是有效的代碼,但是這個
c := make(chan struct{}, 1)
c <- {}
不是?似乎我只能{}在第一個陳述句中通過構造結構,但我需要struct{}{}為第二個陳述句做。
uj5u.com熱心網友回復:
它不是蘋果對蘋果。如果你嘗試這個,你會得到同樣的錯誤:
package main
func main() {
m := make(map[string]struct{})
m["hello"] = {} // syntax error: unexpected {, expecting expression
}
至于你更大的問題,我相信這里有答案[1]:
在 array、slice 或 map type 的
T復合文字中,本身是復合文字的元素或 map 鍵可以省略相應的文字型別,如果它與 的元素或鍵型別相同T。
例如,如果您有一個復合文字:
map[string]struct{}
其中元素也是復合文字:
struct{}
然后你可以省略型別:
{}
- https://golang.org/ref/spec#Composite_literals
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/338477.html
標籤:走
上一篇:除非從容器手動啟動應用程式,否則go不會從容器寫入檔案
下一篇:比較golang中的json字串
