请注意,这是格式为 {}{} 的双花括号,而不是嵌套花括号 {{}}。我也不确定这是空接口问题、切片问题还是结构问题。我猜它至少是其中两个的组合。我正在学习 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 关注
- 180 浏览
添加回答
举报
0/150
提交
取消