[]interface{}{} 中的双大括号是什么意思

请注意,这是格式为 {}{} 的双花括号,而不是嵌套花括号 {{}}。我也不确定这是空接口问题、切片问题还是结构问题。我猜它至少是其中两个的组合。

我正在学习 Golang,并且已经达到了空接口。我发现我需要将空接口声明为

[]interface{}{}

或者例如

[]interface{}{"aa","bb"}

我不想盲目地开始使用它。虽然我理解空接口的概念,并且接口包含数据的两部分,即值和类型,但我只是不理解 {}{} 结构?我了解到切片是用 make() 创建的,或者例如 []int{}

使用空接口时额外的 {} 有何作用?

谢谢

我已经用谷歌搜索了它,并浏览了我的教程。我还将它与我所了解的结构进行了比较,因为我怀疑接口是一个结构。我尝试谷歌 golang 接口主要产生正常的接口,我没有问题。


郎朗坤
浏览 188回答 2
2回答

牛魔王的故事

[]interface{}是类型:[]空接口的切片interface{}(实际上是匿名内联类型声明)。第二组大括号实例化该类型的实例,因此[]interface{}{}是空接口的空切片,[]interface{}{"aa","bb"}是具有两个项目的空接口的切片。这也可能是包含[]string{"aa","bb"}两个项目的字符串切片,这是具有不同类型的同一事物(string代替interface{})。您还可以有一个非空接口,例如[]interface{SomeFunc()}{}的空切片interface{SomeFunc()},即非空匿名接口类型。或者您可以使用匿名结构类型来完成此操作,例如[]struct{Foo string}{{"bar"},{"baz"}}. 这里有更多的大括号 - 第一对围绕类型定义主体,第二对围绕切片文字,并且在其中,每个一对围绕两个结构文字。

慕码人8056858

interface{}是空接口类型[]interface{}是一个空接口类型的切片interface{}{}是一个空接口类型复合文字[]interface{}{}是空接口复合文字类型的切片Go 编程语言规范接口类型切片类型复合文字
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go