Go 中切片内的对象

Object inside slice in Go

我正在尝试将多个对象嵌入到一个切片中,以便稍后可以将它们导出为 JSON。 JSON 应该看起来像这样:

[
   {
       name: "Nginx"
       version: "1.9"
   },
   {
       name: ircd-hybrid"
       version: "8.2"
    }
]

到目前为止我在 Go 中有这个结构:

type response struct {
    application []struct {
        name        string
        version     string
    }
}

现在(我什至不确定结构是否正确),我正在尝试以这种方式访问​​它(同样,不确定这是否正确):

   var d response
   d[0].name = "Nginx"
   d[0].version = "1.9"

等等等等。但是,它不起作用,所以我认为我在某处出错了。只是不知道在哪。

您的 'model' 形式(在本例中为 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) 属性。要将项目添加到该数组,您可以使用 append 或使用 'composite literal' 语法使用某个实例对其进行初始化。

编辑:我添加了一些注释,因此生成的 json 名称将像您的示例中那样采用小写形式。如果 属性 未在 Go 中导出,其他库如 encoding/json 将无法使用它。