go:index out of range [0] with length 0與non-constant array bound length


有一段代碼,涉及數組和指針:

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

 

本文相關文章:https://blog.csdn.net/anguowei/article/details/102601369?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM