go - 在Golang中更改slice的指针的值

标签 go slice

有一个带有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/

相关文章:

python - 使用 boolean 向量提取 ndarray 的子数组

python - Python 中的 "Slice lists"和 "the ellipsis";切片列表和带有切片列表的列表列表

vhdl - 方向无关切片

python - 默认切片索引 *真的* 是什么?

go-mail 嵌入图像不适用于 exe

python - Golang : Get request sends me html contents but works fine from python and curl

go - Go 中如何将字节数组转换为字符串数组?

maven - 如何确定 docker exec 中的命令何时完成

mysql - 多个 rows.Next() 在同一时间 golang sql/database

algorithm - 实时显示一段时间内最常见/重复的元素