go语言中的值传递

Go语言

我们提供的服务有:成都做网站、网站建设、微信公众号开发、网站优化、网站认证、澄城ssl等。为成百上千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的澄城网站制作公司

Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。

罗伯特·格瑞史莫(Robert Griesemer),罗勃·派克(Rob Pike)及肯·汤普逊(Ken Thompson)于2007年9月开始设计Go,稍后Ian Lance Taylor、Russ Cox加入项目。Go是基于Inferno操作系统所开发的。Go于2009年11月正式宣布推出,成为开放源代码项目,并在Linux及Mac OS X平台上进行了实现,后来追加了Windows系统下的实现。在2016年,Go被软件评价公司TIOBE 选为“TIOBE 2016 年最佳语言。

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语言值传递介绍的详细内容,更多请关注创新互联其它相关文章!


网页名称:go语言中的值传递
本文路径:http://scyanting.com/article/gdicpc.html