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语言是哪个公司的

Go语言函数值传递值

Go语言 continue 语句

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




打赏

取消

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

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

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

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

评论

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