Неважно, во всем рефакторинге я добавил ошибку :)
ray - это 2D-фрагмент float32. Я делаю копию этого такЯ могу работать с копией без изменения 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
}