为了账号安全,请及时绑定邮箱和手机立即绑定

索引超出范围 [1],长度为 0

索引超出范围 [1],长度为 0

Go
繁花如伊 2022-09-19 10:16:56
我正在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{})


查看完整回答
反对 回复 2022-09-19
  • 1 回答
  • 0 关注
  • 136 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号