作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我的结构
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 的原因是因为您试图访问尚未分配的内存区域(Object
s 数组中的一项)。
对于结构数组,这需要使用 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/
我是一名优秀的程序员,十分优秀!