我正在Go中处理一个小MUD,并且我正在尝试读取具有文件出口的房间列表。我希望代码循环访问文件的行,将索引为1的每一行归档到房间ID,将索引为2的每一行归档到房间描述,每行将索引3用于填充房间的链接。但是,当我运行代码时,我得到一个恐慌:运行时错误:索引超出范围[1],长度为0。我已经考虑了两天,没有运气,任何帮助都会非常感激。编辑:尝试初始化,但仍然收到相同的错误。rr:= []*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}
1 回答
慕桂英3389331
TA贡献2036条经验 获得超8个赞
你正在做的是“嘿,去制作一个变量r,它是房间结构中的一段指针” r:= []*Room{}“,然后在For上使用,所以基本尝试访问内存中不存在的位置。
所以你需要附加到那个切片中,比如 r = append(r,&Room{})
- 1 回答
- 0 关注
- 136 浏览
添加回答
举报
0/150
提交
取消
