mapArray是float32的2D切片。我制作了一个副本,这样我就可以在不修改mapArray的情况下处理该副本。然而,事实并非如此。为Origin
赋值会修改mapArray
。
origins := it.Empty2DArray(len(mapArray))
copy(origins, mapArray)
origins[5][5] = -1
这样做会使mapArray[5][5]
变为-1,而不是它的原始值。
如何制作切片的真正独立副本?
谢谢。
编辑:
// Empty2DArray returns a zeroed 2D array.
func Empty2DArray(arraySize int) [][]float32 {
emptyArray := make([][]float32, arraySize)
for y := 0; y < arraySize; y++ {
row := make([]float32, arraySize)
for x := 0; x < arraySize; x++ {
row[x] = 0
}
emptyArray[y] = row
}
return emptyArray
}
https://stackoverflow.com/questions/51912390
复制相似问题