Go中切片内的对象

Go中切片内的对象,go,slice,Go,Slice,我试图在一个切片中嵌入多个对象,以便以后可以将它们导出为JSON。JSON应该如下所示: [ { name: "Nginx" version: "1.9" }, { name: ircd-hybrid" version: "8.2" } ] 到目前为止,我在Go中有一个结构: type response struct { application []struct { name

我试图在一个切片中嵌入多个对象,以便以后可以将它们导出为JSON。JSON应该如下所示:

[
   {
       name: "Nginx"
       version: "1.9"
   },
   {
       name: ircd-hybrid"
       version: "8.2"
    }
]
到目前为止,我在Go中有一个结构:

type response struct {
    application []struct {
        name        string
        version     string
    }
}
现在(我甚至不确定该结构是否正确),我尝试以这种方式访问它(同样,不确定是否正确):

等等等等。但是,它不起作用,所以我想我在某个地方出错了。我只是不知道在哪里。

您的“模型”(本例中的Go结构)的形式不太正确。你真的只是想要这个

type application struct {
        Name        string `json:"name"`   // gotta uppercase these so they're exported 
        Version     string `json:"version"` // otherwise you can't marshal them
    }
apps := []application{
     application{Name:"Windows", Version:"10"}
}
app := application{Name:"Linux", Vesion:"14.2"}
apps = append(apps, app)
json以
[
打开,这意味着它只是一个数组,没有封闭的对象。如果有,您可能需要另一种类型的应用程序数组(
[]application
)属性。若要向该数组添加项,您可以使用
附加
或使用“复合文字”语法使用某个实例对其进行初始化


编辑:我添加了一些注释,以便生成的json将具有与您示例中相同的小写名称。如果属性未在Go中导出,其他库(如
encoding/json
)将无法使用该属性。

但是,您可能的副本并不远,这里有一个简单的操场代码可以帮助您,感谢关于“大写”的提示,你刚刚解决了我的另一个问题:-)我如何访问切片/对象?应用程序[0]。Name给了我一个“索引超出范围”error@JacksGT这是关于用于初始化的append或composite literal的注释,我将用每个示例更新。
type application struct {
        Name        string `json:"name"`   // gotta uppercase these so they're exported 
        Version     string `json:"version"` // otherwise you can't marshal them
    }
apps := []application{
     application{Name:"Windows", Version:"10"}
}
app := application{Name:"Linux", Vesion:"14.2"}
apps = append(apps, app)