Go 无法修改数组内的结构?
我刚开始学习golang,我有以下代码: 我希望它能打印出来Go 无法修改数组内的结构?,go,Go,我刚开始学习golang,我有以下代码: 我希望它能打印出来 [{"Resources":[{"Type:"test"}]},{"Resources":[{"Type:"test"}]}] 但我得到的却是: [{"Resources":null},{"Resources":null}] 如何实现预期的输出?在范围循环中复制结构。您需要通过索引进行访问 for i := range nodes { nodes[i].Resources = append(nodes[i].Resourc
[{"Resources":[{"Type:"test"}]},{"Resources":[{"Type:"test"}]}]
但我得到的却是:
[{"Resources":null},{"Resources":null}]
如何实现预期的输出?在范围循环中复制结构。您需要通过索引进行访问
for i := range nodes {
nodes[i].Resources = append(nodes[i].Resources, ResourceUsage{Type: "test"})
}
您还可以选择使用指针,它不会复制数据
nodes := make([]*Node, 2)
nodes[0] = &Node{}
nodes[1] = &Node{}
指出,不能获取迭代值的地址
for _, v := range nodes {
&v // mistake
}
结构在范围循环中复制。您需要通过索引进行访问
for i := range nodes {
nodes[i].Resources = append(nodes[i].Resources, ResourceUsage{Type: "test"})
}
您还可以选择使用指针,它不会复制数据
nodes := make([]*Node, 2)
nodes[0] = &Node{}
nodes[1] = &Node{}
指出,不能获取迭代值的地址
for _, v := range nodes {
&v // mistake
}
啊,这是有道理的。谢谢:值得注意的是,如果您尝试使用for循环获取对象的地址,这也适用。您必须使用索引循环,因为for u,n:=range o表单将每个索引处的对象复制到单个地址位置。啊,这是有道理的。谢谢:值得注意的是,如果您尝试使用for循环获取对象的地址,这也适用。您必须使用索引循环,因为for u,n:=range o表单将每个索引处的对象复制到单个地址位置。