go - Go 中 slice 内的对象

标签 go slice

我正在尝试将多个对象嵌入到一个 slice 中,以便稍后可以将它们导出为 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"

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

最佳答案

您的“模型”(在本例中为 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 或使用“复合文字”语法使用某个实例对其进行初始化。

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

关于go - Go 中 slice 内的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31462642/

相关文章:

javascript - Array.slice 一个元素的数组

go - 使用反射附加到 slice

go - 有没有办法在 Go 中为结构创建方法 Hook ?

go - 退出后保持外部进程运行

json - 如何在 JSON 中自定义编码(marshal)映射键

python - 将元组列表转换为切片列表以与 np.r_ 一起使用

go - golang中的问题yacc : syntax error: unexpected $end

go - 在 Go 中有没有办法将结构映射转换为结构 slice

GoLang 约定 - 从 slice 创建自定义类型

tensorflow 通过(不同范围的 2d)切片列表更改/分配矩阵元素值