請注意,這是格式為 {}{} 的雙花括號,而不是嵌套花括號 {{}}。我也不確定這是空接口問題、切片問題還是結構問題。我猜它至少是其中兩個的組合。我正在學習 Golang,并且已經達到了空接口。我發現我需要將空接口聲明為[]interface{}{}或者例如[]interface{}{"aa","bb"}我不想盲目地開始使用它。雖然我理解空接口的概念,并且接口包含數據的兩部分,即值和類型,但我只是不理解 {}{} 結構?我了解到切片是用 make() 創建的,或者例如 []int{}使用空接口時額外的 {} 有何作用?謝謝我已經用谷歌搜索了它,并瀏覽了我的教程。我還將它與我所了解的結構進行了比較,因為我懷疑接口是一個結構。我嘗試谷歌 golang 接口主要產生正常的接口,我沒有問題。
2 回答

牛魔王的故事
TA貢獻1830條經驗 獲得超3個贊
[]interface{}
是類型:[]
空接口的切片interface{}
(實際上是匿名內聯類型聲明)。第二組大括號實例化該類型的實例,因此[]interface{}{}
是空接口的空切片,[]interface{}{"aa","bb"}
是具有兩個項目的空接口的切片。這也可能是包含[]string{"aa","bb"}
兩個項目的字符串切片,這是具有不同類型的同一事物(string
代替interface{}
)。
您還可以有一個非空接口,例如[]interface{SomeFunc()}{}
的空切片interface{SomeFunc()}
,即非空匿名接口類型。或者您可以使用匿名結構類型來完成此操作,例如[]struct{Foo string}{{"bar"},{"baz"}}
. 這里有更多的大括號 - 第一對圍繞類型定義主體,第二對圍繞切片文字,并且在其中,每個一對圍繞兩個結構文字。

慕碼人8056858
TA貢獻1803條經驗 獲得超6個贊
interface{}
是空接口類型
[]interface{}
是一個空接口類型的切片
interface{}{}
是一個空接口類型復合文字
[]interface{}{}
是空接口復合文字類型的切片
Go 編程語言規范
接口類型
切片類型
復合文字
- 2 回答
- 0 關注
- 244 瀏覽
添加回答
舉報
0/150
提交
取消