更改Golang中切片指针的值

fly*_*box 1 go slice

有一个包含 float64 值的切片。我想在不分配新内存的情况下将它们相乘。是否可以?

multiple(&slice)


func multiple(slice *[]float64) {

    for index, value := range *slice {
        ??? =  value * 100
    }
}
Run Code Online (Sandbox Code Playgroud)

Bur*_*dar 11

这应该有效:

func multiple(slice *[]float64) {

    for index, value := range *slice {
        (*slice)[index] =  value * 100
    }
}
Run Code Online (Sandbox Code Playgroud)

您正在传递一个指向切片的指针。您确定这就是您需要的吗?以下也可以工作:

func multiple(slice []float64) {

    for index, value := range slice {
        slice[index] =  value * 100
    }
}
Run Code Online (Sandbox Code Playgroud)

当您传递 时*[]float64,该函数将获取指向切片的指针。要使用切片的元素,该函数必须取消引用指针,然后取消引用切片指向的数组。

当您传递 时[]float64,该函数会获取一个切片,其中包含指向基础数组的指针、长度和容量。