arrays - 索引超出范围 [1],长度为 0
问题描述
我正在使用 Go 中的一个小 MUD,我正在尝试从文件中读取带有出口的房间列表。我希望代码遍历文件的行,将索引为 1 的每一行归档到房间 ID,将索引为 2 的每一行归档到房间描述,并且将索引为 3 的每一行用于填充房间的链接。但是,当我运行代码时,我感到恐慌:运行时错误:indext out of range[1] with length 0。我已经考虑了两天了,没有运气,任何帮助都会非常感激。
编辑:尝试初始化r
,r:= []*Room{}
但仍然收到相同的错误。
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{})
推荐阅读
- angular - 如何从 Angular 中的 HTTP 请求返回 JSON 响应的一个特定属性?
- docker - 如何使用 ip addr 或域名从 mac 机器访问 docker 容器
- regex - 如何使用正则表达式匹配大于 2048 的数字
- angular - 摩纳哥 deltaDecorations 不适用于 Angular 7
- python-2.7 - 在画布上的自定义位置绘制电子表格
- ios - 如何在按钮单击时显示颜色选择器,在选择特定颜色时我想获得该颜色的十六进制代码?
- pandas - How to count each x entries and mark the occurence of this sequence with a value in a pandas dataframe?
- xaml - 如何覆盖 xamarin 表单中某些元素的父布局/视图不透明度?
- javascript - 我应该为 material-ui 图标使用什么道具类型?
- openxml - 显示/交互/可见 ClosedXML Excel.XLWorkbook 不保存