为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
郎朗坤 2023-07-04 19:13:16
请注意,这是格式为 {}{} 的双花括号,而不是嵌套花括号 {{}}。我也不确定这是空接口问题、切片问题还是结构问题。我猜它至少是其中两个的组合。我正在学习 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"}}. 这里有更多的大括号 - 第一对围绕类型定义主体,第二对围绕切片文字,并且在其中,每个一对围绕两个结构文字。


查看完整回答
反对 回复 2023-07-04
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

interface{}是空接口类型

[]interface{}是一个空接口类型的切片

interface{}{}是一个空接口类型复合文字

[]interface{}{}是空接口复合文字类型的切片


Go 编程语言规范

接口类型

切片类型

复合文字


查看完整回答
反对 回复 2023-07-04
  • 2 回答
  • 0 关注
  • 131 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信