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

1.jpg

更多相关知识请关注go语言教程栏目

更多相关文章

  1. 学习Go 语言操作 MySQL 之 预处理
  2. Go语言实现之基于websocket浏览器通知功能
  3. 详解 Go 语言中的方法
  4. 关于用Go语言编程的利与弊
  5. 详解Go 语言中的方法
  6. Go语言中如何使用模板引擎
  7. go语言grpc环境搭建的方法详解
  8. 关于Go语言的http/2服务器功能及客户端使用方法
  9. 关于Go指针的介绍

随机推荐

  1. Android(安卓)Design Support Library(2)-
  2. 如何在unity中生成android工程
  3. Android是什么(What is Android)
  4. Android学习笔记之Android安装问题
  5. Android Fragment的增加,删除,添加
  6. Android Studio小技巧
  7. android EditView的一些问题
  8. android RelaLayout
  9. android WebView总结
  10. DroidDraw Android 界面设计工具使用