如何在golang中创建对象数组?

21

我有一个需求,需要将对象数组存储在变量中。这些对象是不同类型的。请参考以下示例:

 v := [ {"name":"ravi"},
        ["art","coding","music","travel"],
        {"language":"golang"},
        {"experience":"no"}
      ]

请注意第二个元素本身是一个字符串数组。经过研究,我考虑将其存储为接口类型,如下所示:

 var v interface{} = [ {"name":"ravi"},
                       ["art","coding","music","travel"],
                       {"language":"golang"},
                       {"experience":"no"}
                     ]

但是,我仍然遇到一些编译错误,而我无法找出原因。


你必须定义你的数据结构。 - RoninDev
3
有人可以指出负评的原因吗?这样我下次就可以更好地提出我的问题了。 - ravi
2个回答

35

你所要求的是可能的 - playground 链接:

package main

import "fmt"

func main() {
    v := []interface{}{
        map[string]string{"name": "ravi"},
        []string{"art", "coding", "music", "travel"},
        map[string]string{"language": "golang"},
        map[string]string{"experience": "no"},
    }
    fmt.Println(v)
}

但您可能不想这样做。如果您这样做,就相当于在与类型系统战斗,我会质疑为什么您要使用Go。考虑发挥类型系统的优势-示例链接

package main

import "fmt"

type candidate struct {
    name string
    interests []string
    language string
    experience bool
}

func main() {
    candidates := []candidate{
        {
            name: "ravi",
            interests: []string{"art", "coding", "music", "travel"},
            language: "golang",
            experience: false,
        },
    }
    fmt.Println(candidates)
}

1
如果你使用Go语言处理数据结构时,我会质疑你为什么要这样做。如果他们必须使用类似的数据结构,你会建议使用其他编程语言吗?这是一个奇怪的建议。 - mvmn

-5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接