登录
首页 >  Golang >  Go问答

在“type abc interface{}”中插入值

来源:stackoverflow

时间:2024-02-07 20:21:24 184浏览 收藏

目前golang学习网上已经有很多关于Golang的文章了,自己在初次阅读这些文章中,也见识到了很多学习思路;那么本文《在“type abc interface{}”中插入值》,也希望能帮助到大家,如果阅读完后真的对你学习Golang有帮助,欢迎动动手指,评论留言并分享~

问题内容

我正在尝试将值插入 type abc [][] 接口{}

我尝试过这个:

insert := &abc{{0, {"abc", "def"}}}

这会引发错误:无效的复合文字类型:接口{}

我也尝试过这个:

insert, _ := json.Marshal([][]interface{}{{0, {"abc", "def"}}})

但这也会引发错误 Invalid Composite Literal Type: interface{}

我希望输出如下:

[ [ 0, [ "abc", "def" ] ]

你能让我知道我哪里出了问题以及如何解决这个问题吗?


正确答案


abc 的类型允许任何类型,但是需要定义您放入其中的内容的类型。您没有定义 {"abc", "def"} 的类型,并且无法实例化接口文字(接口不会告诉编译器有关字段的任何信息)。您可以拥有匿名结构,但仍然需要定义它们。

让我们通过示例逐步了解您所拥有的内容:

x := &abc{}

创建具有零条目的外部数组。

x := &abc{{}, {}, {}}

使用 3 个空的内部数组创建外部数组。

x := &abc{{0, "abc"}}

一个外部数组,带有一个内部数组,有 2 个值:0"abc"

x := &abc{{0, {"abc", "def"}}

一个外部数组,带有一个内部数组,有 2 个值:0 和......什么?这是一个对象字面量,但没有显式类型,也没有语法上正确的隐式类型(隐式地期望 interface{} ,无法直接实例化),这是一个错误。

type pairofstrings struct {
  a string
  b string
}

x := &abc{{0, pairofstrings{"abc", "def"}}}

您现在已经输入了有问题的结构。

x := &abc{{0, struct {
  a string
  b string
}{"abc", "def"}}}

匿名结构也是一种丑陋但有效的方法。

x := &abc{{0, []string{"abc", "def"}}}

似乎是最接近你想要的东西。

规则是 interface{} 可以保存任何定义的东西。它不等同于 c# 的 dynamic 对象。

到这里,我们也就讲完了《在“type abc interface{}”中插入值》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>