go语言值传递介绍
16lz
2021-01-22
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语言教程栏目
更多相关文章
- 学习Go 语言操作 MySQL 之 预处理
- Go语言实现之基于websocket浏览器通知功能
- 详解 Go 语言中的方法
- 关于用Go语言编程的利与弊
- 详解Go 语言中的方法
- Go语言中如何使用模板引擎
- go语言grpc环境搭建的方法详解
- 关于Go语言的http/2服务器功能及客户端使用方法
- 关于Go指针的介绍