我正在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 關注
- 115 瀏覽
添加回答
舉報
0/150
提交
取消
