索引超出范围 [1],长度为 0
Index out of range [1] with length 0
我正在用 Go 编写一个小 MUD,我正在尝试从文件中读取带有出口的房间列表。
我希望代码遍历文件的行,将索引 1 的每一行归档到房间 ID,索引 2 的每一行归档到房间描述,索引 3 的每一行用于填写房间的链接。然而,当我 运行 代码时,我感到恐慌: 运行time error: indext out of range[1] with length 0. 我已经考虑了两天没有运气,任何如果有帮助,我们将不胜感激。
编辑:尝试用 r:= []*Room{}
初始化 r
但我仍然遇到同样的错误。
r:= []*Room{}
roomdoc, err := readLines("/usr/go/src/gopherit/GopherIT/roomdoc.txt")
if err != nil {
return r, err
}
i := 0
index := 1
for _, str := range roomdoc {
if i == 0 {
r[index].roomInitId(str)
i++
}
if i == 1 {
r[index].roomInitDesc(str)
i++
}
if i == 2 {
vri := strings.Split(str, ":")
v, ri := vri[0], vri[1]
r[index].addLink(v, ri)
i++
}
if i == 3 {
index++
i = 0
}
}
return r, err
}
你在做什么是“嘿,创建一个变量 r,它是来自 Room Struct 的指针的一部分”r:= []*Room{}”,然后在 For 上使用,所以基本尝试访问该上下文中不存在的内存位置。
所以你需要追加到那个切片中,比如 r = append(r,&Room{})
我正在用 Go 编写一个小 MUD,我正在尝试从文件中读取带有出口的房间列表。 我希望代码遍历文件的行,将索引 1 的每一行归档到房间 ID,索引 2 的每一行归档到房间描述,索引 3 的每一行用于填写房间的链接。然而,当我 运行 代码时,我感到恐慌: 运行time error: indext out of range[1] with length 0. 我已经考虑了两天没有运气,任何如果有帮助,我们将不胜感激。
编辑:尝试用 r:= []*Room{}
初始化 r
但我仍然遇到同样的错误。
r:= []*Room{}
roomdoc, err := readLines("/usr/go/src/gopherit/GopherIT/roomdoc.txt")
if err != nil {
return r, err
}
i := 0
index := 1
for _, str := range roomdoc {
if i == 0 {
r[index].roomInitId(str)
i++
}
if i == 1 {
r[index].roomInitDesc(str)
i++
}
if i == 2 {
vri := strings.Split(str, ":")
v, ri := vri[0], vri[1]
r[index].addLink(v, ri)
i++
}
if i == 3 {
index++
i = 0
}
}
return r, err
}
你在做什么是“嘿,创建一个变量 r,它是来自 Room Struct 的指针的一部分”r:= []*Room{}”,然后在 For 上使用,所以基本尝试访问该上下文中不存在的内存位置。
所以你需要追加到那个切片中,比如 r = append(r,&Room{})