有一段代码,涉及数组和指针:
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]," ") 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