go:index out of range [0] with length 0與non-constant array bound length
阿新 • • 發佈:2020-08-13
有一段程式碼,涉及陣列和指標:
1 //通過整形指標陣列獲取陣列中的元素 2 func test(){ 3 var arr=[]int{1,2,3} 4 var ptr[] *int 5 for i:=0;i<len(arr);i++{ 6 ptr[i]=&arr[i] 7 fmt.Println(*ptr[i],"\t") 8 }
問題出現了:執行上述函式後,控制檯報錯:runtime error:index out of range [0] with length 0,出錯程式碼指向了第6行,此行出現了空指標
問題原因:在第4行整形陣列指標初始化時未給其分配記憶體空間,所以報錯
問題修改:修改第4行為var ptr[len(arr)] *int,儲存後執行,控制檯又報錯:non-constant array bound length,出錯程式碼是第4行
問題原因:go語言陣列動態初始化時,如var array [length]int這樣的寫法(length是動態的)會報錯,需要加make
問題修改:修改第4行為ptr := make([]*int,len(arr))
執行:>>>1,2,3