如何在golang中初始化嵌套struct数组的值

前端之家收集整理的这篇文章主要介绍了如何在golang中初始化嵌套struct数组的值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的结构
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)
}

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

如何解决这个问题?

首先,我认为为结构定义一个类型更为惯用,无论结构有多简单.例如:
type MyStruct struct {
    MyField int
}

这意味着将Result结构更改为如下所示:

type Result struct {
    name   string
    Objects []MyStruct
}

程序恐慌的原因是因为您正在尝试访问尚未分配的内存区域(对象数组中的项目).

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

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

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

ms := MyStruct{
    MyField: 10,}

然后将其附加到r.Objects数组

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

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

猜你在找的Go相关文章