我一直在用 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)
- 1 回答
- 0 关注
- 214 浏览
添加回答
举报
0/150
提交
取消