go数组作为函数形参

  1. 1 数组作为函数形参
  2. 2 数组的地址
  3. 3 传递切片

1 数组作为函数形参

Go中数组作为函数的形参,实际传递的是数组的拷贝,而非数组的指针(区别于C/C++)。

    func sum(a [4]int){
        a[0]=100
        fmt.Printf("a:%p\n", &a[0])
    }

    func main(){
        a := [4]int{1,1,1,1}
        sum(a)
        fmt.Println(a[0])
        fmt.Printf("a:%p\n", &a[0])
    }

结果如下:
a:0xc000014040
1
a:0xc000014020

2 数组的地址

如果需要传递数组本身而非拷贝,可传递数组的地址:

    func sum(a *[4]int){
        a[0]=100
        fmt.Printf("a:%p\n", &a[0])
    }

    func main(){
        a := [4]int{1,1,1,1}
        sum(&a)
        fmt.Println(a[0])
        fmt.Printf("a:%p\n", &a[0])
    }

结果如下:
a:0xc000014020
100
a:0xc000014020

3 传递切片


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至yj.mapple@gmail.com

文章标题:go数组作为函数形参

文章字数:177

本文作者:melonshell

发布时间:2021-02-10, 21:02:43

最后更新:2021-02-19, 15:13:40

原始链接:http://melonshell.github.io/2021/02/10/go22_array_as_func_param/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏

相册