Неважно, во всем рефакторинге я добавил ошибку :)

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
}

Ответы на вопрос(0)

Ваш ответ на вопрос