有一个带有float64值的 slice 。我想乘以它们而不分配新的内存。可能吗?
multiple(&slice)
func multiple(slice *[]float64) {
for index, value := range *slice {
??? = value * 100
}
}
最佳答案
这应该工作:
func multiple(slice *[]float64) {
for index, value := range *slice {
(*slice)[index] = value * 100
}
}
您正在传递指向 slice 的指针。您确定这就是您所需要的吗?以下内容也可以工作:
func multiple(slice []float64) {
for index, value := range slice {
slice[index] = value * 100
}
}
当您传递
*[]float64
时,该函数将获得指向 slice 的指针。要使用 slice 的元素,函数必须先取消引用指针,然后再取消引用 slice 所指向的数组。当您传递
[]float64
时,该函数将获得一个 slice ,该 slice 包含指向基础数组,长度和容量的指针。
关于go - 在Golang中更改slice的指针的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58446373/