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

相关推荐
wfs 2020-10-29
哈嘿Blog 2020-10-26
bearhoopIT之道 2020-11-11
小科的奋斗 2020-10-24
HELLOBOY 2020-10-23
专注前端开发 2020-10-12
哈嘿Blog 2020-09-08
qidiantianxia 2020-09-15
哈嘿Blog 2020-08-16