go语言值传递介绍


本文摘自php中文网,作者尚,侵删。

Go语言的参数只能是值传递

值传递是一个拷贝的过程

Go:值传递

1

2

3

4

5

6

7

8

9

10

func bbb(list [4]int){

   for i,_ := range list{

      list[i] = 0

   }

}

func main(){

   list := [4]int{1,2,3,4}

   bbb(list)

   fmt.Println(list )   //[1 2 3 4]

}

Javascript: 引用传递

1

2

3

4

5

6

7

8

let list = [1,2,3,4]

function  bbb(list){

    list.forEach((item,index)=>{

        list[index] = 0

    })

}

bbb(list)

console.log(list)   //[0,0,0,0]

但是Go语言可以通过指针来实现引用传递的作用

1

2

3

4

5

6

7

8

9

10

11

func bbb(p2 *[4]int){    //接受一个[4]int的指针

   for i,_ := range p2{

      p2[i] = 0

   }

}

func main(){

   list := [4]int{1,2,3,4}

   p := &list

   bbb(p)     //传递指针

   fmt.Println(list )   //[0 0 0 0]

}

既然说go语言的参数传递只能是值传递,所以这里实际上是把指针地址拷贝了一份,而两个地址都指向了main函数的变量list的地址,所以才使list的值发生了改变

1.jpg

更多相关知识请关注go语言教程栏目

以上就是go语言值传递介绍的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

Go语言不适合新手学习吗

go 语言环境安装

Go语言中普通函数与方法的区别是什么?

Go语言编译快吗

Go语言中一种常见的错误

go错误处理

Go语言是脚本语言吗

Go语言和python有什么区别?

Go语言 if…else 语句

Go语言是面向对象的吗

更多相关阅读请进入《Go语言》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...