本文摘自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语言和python有什么区别?
Go语言 if…else 语句
Go语言是面向对象的吗
更多相关阅读请进入《Go语言》频道 >>
老貘
一个与时俱进的Go编程知识库。
转载请注明出处:木庄网络博客 » go语言值传递介绍