更改Golang中切片指针的值

问题描述 投票:-1回答:1

具有一个带有float64值的切片。我想乘以它们而不分配新的内存。有可能吗?

multiple(&slice)


func multiple(slice *[]float64) {

    for index, value := range *slice {
        ??? =  value * 100
    }
}
go slice
1个回答
2
投票

这应该起作用:

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时,该函数将获得一个切片,其中包含指向基础数组,长度和容量的指针。

© www.soinside.com 2019 - 2024. All rights reserved.