gpt4 book ai didi

go - 如何在golang中初始化嵌套结构数组的值

转载 作者:IT老高 更新时间:2023-10-28 13:07:00 24 4
gpt4 key购买 nike

我的结构

type Result struct {
name string
Objects []struct {
id int
}
}

为此初始化值

func main() {
var r Result;
r.name = "Vanaraj";
r.Objects[0].id = 10;
fmt.Println(r)
}

我收到了这个错误。 “ panic :运行时错误:索引超出范围”

如何解决这个问题?

最佳答案

首先,我想说为你的结构定义一个类型更符合习惯,不管结构有多简单。例如:

type MyStruct struct {
MyField int
}

这意味着将您的 Result 结构更改为如下:

type Result struct {
name string
Objects []MyStruct
}

您的程序出现 panic 的原因是因为您试图访问尚未分配的内存区域(Objects 数组中的一项)。

对于结构数组,这需要使用 make 来完成。

r.Objects = make([]MyStruct, 0)

然后,为了安全地添加到您的数组中,您最好实例化一个单独的 MyStruct,即

ms := MyStruct{
MyField: 10,
}

然后将其 append添加到您的 r.Objects 数组

r.Objects = append(r.Objects, ms)

有关 make 的更多信息,请参阅 the docs

关于go - 如何在golang中初始化嵌套结构数组的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33892599/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com