美文网首页
golang 函数间数组传值

golang 函数间数组传值

作者: molscar | 来源:发表于2017-12-25 14:22 被阅读0次

问题:

eg:

func sliceModify(slice []int) {
    // slice[0] = 88
    slice = append(slice, 6)
}
func main() {
    slice := []int{1, 2, 3, 4, 5}
    sliceModify(slice)
    fmt.Println(slice)
}

out: [1 2 3 4 5]

虽然说数组切片在函数传递时是按照引用的语义传递的,比如说在 sliceModify 函数里面 slice[0] = 88,在方法调用的上下文中,调用函数对slice引用的改表是看得见的。

但是在对slice进行append操作的时候,返回的是新的引用,并非原始引用。

解决:

传递指针的指针

eg:


func sliceModify(slice *[]int) {
    *slice = append(*slice, 6)
}
func main() {
    slice := []int{1, 2, 3, 4, 5}
    sliceModify(&slice)
    fmt.Println(slice)
}

out: [1 2 3 4 5 6]

相关文章

  • golang 函数间数组传值

    问题: eg: out: [1 2 3 4 5] 虽然说数组切片在函数传递时是按照引用的语义传递的,比如说在 sl...

  • PHP中的数组

    数组分类 索引数组 关联数组 数组遍历 传值遍历 传址遍历 数组函数 指针操作函数 current($array)...

  • Android工程师学Golang(一) 函数

    Golang函数 注:是用的测试方法写的例子。 Golang所有都是传值,不是传引用为什么会出现,函数内部的修改,...

  • 今日小结

    指针传参 在函数间指针变量做参传值,只传地址,不附带其他信息。故以数组名为指针变量被函数调用传参后,在调用函数内s...

  • bash如何给函数传递数组参数

    先说结论:bash函数不支持传递数组参数,只能传值;所以要传数组只能把数组展开,作为多个参数传,然后在函数内重新封...

  • array_map()——遍历数组的键值,返回计算后的键值数组;

    array_map() 遍历数组的键值,把键值依书写的顺序传递给函数,收集函数的返回值,以数组的形式返回,如果值传...

  • vector做为函数参数传递

    vector做为函数参数传递是需要传引用才能改变实参的值。 数组可以传递数组名做为指针改变数组变量的值但vecto...

  • Golang函数

    函数 Golang函数特点 无需声明原型支持多返回值不定参数传参 也就是函数的参数个数不是固定的 但是后面的类型是...

  • Go-Array

    golang初始化数组 golang中数组为值类型 方式1:指定数组长度 方式2:自行推断数组长度 方式3:指定索...

  • 面试官:切片作为函数参数是传值还是传引用?

    切片传参的幻觉 - 传引用 golang中函数的参数为切片时是传引用还是传值?对于这个问题,当你百度一轮过后,你会...

网友评论

      本文标题:golang 函数间数组传值

      本文链接:https://www.haomeiwen.com/subject/saslgxtx.html