本文摘自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 )
}
|
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)
|
但是Go语言可以通过指针来实现引用传递的作用
1 2 3 4 5 6 7 8 9 10 11 | func bbb(p2 *[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 )
}
|
既然说go语言的参数传递只能是值传递,所以这里实际上是把指针地址拷贝了一份,而两个地址都指向了main函数的变量list的地址,所以才使list的值发生了改变

更多相关知识请关注go语言教程栏目
以上就是go语言值传递介绍的详细内容,更多文章请关注木庄网络博客!!
相关阅读 >>
Go语言有没有优势?
Go语言循环嵌套
Go语言变量
Go语言结构体
Go语言如何设置定时器
Go语言变量作用域
Go语言通过命令方式生成可执行文件
Go语言是哪个公司的
Go语言函数值传递值
Go语言 continue 语句
更多相关阅读请进入《Go语言》频道 >>
老貘
一个与时俱进的Go编程知识库。
转载请注明出处:木庄网络博客 » go语言值传递介绍