我的结构
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