美文网首页
go语言陷阱之十一:数组作为函数参数

go语言陷阱之十一:数组作为函数参数

作者: wu_sphinx | 来源:发表于2015-07-25 17:25 被阅读1050次

这是C/C++里面的常见问题了,数组作为函数参数时是传值还是传引用,

代码example:

package main

import "fmt"

func main() {
    x := [3]int{1, 2, 3}

    func(arr [3]int) {
        arr[0] = 7
        fmt.Println(arr) //prints [7 2 3]
    }(x)

    fmt.Println(x) //prints [1 2 3] (not ok if you need [7 2 3])
}

本意是想更新数组x,但是因为函数是传值,在函数体内,复制了一份x,因此仅仅是函数体内的数据数据发生了变化,要想达到更新数据x数据目的,传数组指针,好生熟悉:

package main

import "fmt"

func main() {
    x := [3]int{1, 2, 3}

    func(arr *[3]int) {
        (*arr)[0] = 7
        fmt.Println(arr) //prints &[7 2 3]
    }(&x)

    fmt.Println(x) //prints [7 2 3]
}

有木有好熟悉的感觉...

相关文章

  • go语言陷阱之十一:数组作为函数参数

    这是C/C++里面的常见问题了,数组作为函数参数时是传值还是传引用, 代码example: 本意是想更新数组x,但...

  • 第03天(复合类型)_03

    13_数组做函数参数.go 14_数组指针做函数参数.go 15_切片的长度和容量.go 16_切片的创建.go ...

  • C语言17 数组参数传递

    C语言17 数组参数传递 基本类型参数传递 数组作为参数 编写一个函数,能够打印任意整形数组的值 总结: 数组作为...

  • (四)go语言函数&参数传递

    go语言函数 基本语法 例子 go语言参数传递

  • go 的函数式编程

    在 go 语言中,函数是一等公民。函数既可以作为参数传入,也可以作为返回值返回。go 语言的函数式编程最典型的例子...

  • Go语言指针作为函数参数

    Go 语言允许向函数传递指针,只需要在函数定义的参数上设置为指针类型即可。以下实例演示了如何向函数传递指针,并在函...

  • Sizeof on array function paramet

    在C语言中,数组作为函数参数时将退化为指针。

  • 三、Go的函数

    三、Go的函数 Go语言最少有一个main()函数。 1、Go的函数定义: 2、函数参数 函数如果使用参数,该变量...

  • 7月9号

    1 //数组作为函数参数,可以省略元素个数 //数组作为函数参数,传递是整个数组的地址,修改函数形参数组元素的值,...

  • C语言数组作为函数参数

    两种方法: 值传递: 地址传递:

网友评论

      本文标题:go语言陷阱之十一:数组作为函数参数

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