• golang参数


    package main
    
    import "fmt"
    
    /*
    golang中分为值类型和引用类型
    值类型分别有:int系列、float系列、bool、string、数组和结构体
    引用类型有:指针、slice切片、管道channel、接口interface、map、函数等
    值类型的特点是:变量直接存储值,内存通常在栈中分配
    引用类型的特点是:变量存储的是一个地址,这个地址对应的空间里才是真正存储的值,内存通常在堆中分配
    */
    
    //引用类型有 切片、映射、通道、接口和函数类型
    //------------go语言中切片和map、channel是地址传递,但是切片传递要有一个注意事项
    func tests(a []int){
    	a=append(a,1,2,3)
    }
    func main(){
    	var s []int=[]int{89,4,5,6}
    	tests(s)
    	fmt.Println(s)
    }
    /*
    在这里里面为什么调用函数后切片没有变化呢,切片不是地址传递吗?
    这是因为在test函数里面用了append()函数,在调用函数时,
    在栈区里面把1 2 3 添加到a里面然后重新分配了地址,
    而原来的s切片还是指向原来地址,根本没有变,所以在main函数里面打印出s还是原来的,
    不会改变,那么如何做到用了append后改变原来切片的值呢:直接return改边后的值
    
    
    因为如果容量不足的时候会自动扩充,如果原来的地址后面没有足够的空间那么
    就会重新找一个足够大的空间来储存,所以切片利用append的时候地址是有可能变化的
    ————————————————
    版权声明:本文为CSDN博主「sgsgy5」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/sgsgy5/java/article/details/81590184
    */
    
    
  • 相关阅读:
    VC开发,引用win8.1配置
    RabbitMQ——常见的函数介绍
    OpenLayer4——面(多边形)
    OpenLayer4——图形组合
    OpenLayer4——GeoJSON简介
    RabbitMQ——交换机
    RabbitMQ——helloworld
    OpenLayer4——添加Geojson
    RabbitMQ——消息头
    OpenLayer4——圆形
  • 原文地址:https://www.cnblogs.com/lajiao/p/12642339.html
Copyright © 2020-2023  润新知