亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

GoLang:在函數中分配切片導致索引超出范圍

GoLang:在函數中分配切片導致索引超出范圍

Go
慕工程0101907 2021-06-26 11:17:40
我一直在用 Go 嘗試一些東西,但遇到了一個我無法弄清楚的問題。package mainimport "fmt"import "strconv"func writeHello(i int, ) {        fmt.Printf("hello, world "+strconv.Itoa(i)+"\n")}type SliceStruct struct {    data [][]int;}func (s SliceStruct) New() {    s.data=make([][]int,10);}func (s SliceStruct) AllocateSlice(i int) {    s.data[i]=make([]int,10);}func (s SliceStruct) setData(i int, j int, data int) {    s.data[i][j] = data;}func (s SliceStruct) getData(i int, j int) int {    return s.data[i][j]}func useSliceStruct(){    sliceStruct := SliceStruct{};    sliceStruct.New();    for i := 0; i < 10; i++ {        sliceStruct.AllocateSlice(i);        for j:=0; j<10; j++ {             sliceStruct.setData(i,j,i);            writeHello(sliceStruct.getData(i,j));        }    }}func dontUseSliceStruct(){    data:=make([][]int,10);    for i := 0; i < 10; i++ {        data[i]=make([]int,10);        for j:=0; j<10; j++ {            data[i][j] = i;            writeHello(data[i][j]);        }    }}func main() {    dontUseSliceStruct();    useSliceStruct();}當它到達函數 useSliceStruct 時,代碼在第一次調用 AllocateSlice() 時失敗,并出現索引超出范圍錯誤。據我所知,這兩種方法的代碼做了相同的事情。那么我錯過了什么?
查看完整描述

1 回答

?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

DOH,剛剛解決了。

我沒有在函數聲明中使用對結構的引用。

func (s SliceStruct)

本來應該

func (s *SliceStruct)


查看完整回答
反對 回復 2021-06-28
  • 1 回答
  • 0 關注
  • 242 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號