Изменить значения указателя слайса в Голанге - PullRequest
0 голосов
/ 18 октября 2019

Есть фрагмент со значениями float64. И я хочу умножить их без нового выделения памяти. Возможно ли это?

multiple(&slice)


func multiple(slice *[]float64) {

    for index, value := range *slice {
        ??? =  value * 100
    }
}

1 Ответ

2 голосов
/ 18 октября 2019

Это должно работать:

func multiple(slice *[]float64) {

    for index, value := range *slice {
        (*slice)[index] =  value * 100
    }
}

Вы передаете указатель на фрагмент. Вы уверены, что это то, что вам нужно? Следующее также будет работать:

func multiple(slice []float64) {

    for index, value := range slice {
        slice[index] =  value * 100
    }
}

Когда вы передаете *[]float64, функция получает указатель на срез. Для работы с элементами среза функция должна разыменовать указатель, а затем разыменовать массив, на который указывает срез.

Когда вы передаете []float64, функция получает срез, который содержит указательк базовому массиву, длине и емкости.

...