我一直在用 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() 時失敗,并出現索引超出范圍錯誤。據我所知,這兩種方法的代碼做了相同的事情。那么我錯過了什么?
GoLang:在函數中分配切片導致索引超出范圍
慕工程0101907
2021-06-26 11:17:40