如何在golang中初始化嵌套struct数组的值
发布时间:2020-12-16 19:22:08 所属栏目:大数据 来源:网络整理
导读:我的结构 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 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |