站长资讯网
最全最丰富的资讯网站

go语言值传递介绍

go语言值传递介绍

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

值传递是一个拷贝的过程

Go:值传递

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: 引用传递

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语言可以通过指针来实现引用传递的作用

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的值发生了改变

go语言值传递介绍

赞(0)
分享到: 更多 (0)