前几章节我们在变量创建和使用有多种不同的方式,主要是make 和new,这里说下他们的区别
- new用来分配除了引用类型之外的其他类型内存
- make来分配指针类型的数据内存
new初始化仅仅是分配了一段内存,比如切片我们必须要为一个底层数组分配一段内存,同时也要初始化切片的长度,容量; 长度是切片本身的长度,而容量是数据的长度,所有new是不具备给像“切片”这样的指针数据类型初始化的; 则引用类型必须先使用make初始化数据后,才能对数据做出修改,因为初始化之后才有了内存空间,而引用类型被引用后,引用它的对象将会随着这变量变化而变化。
常用引用类型: 映射(map),数组切片(slice),通道(channel),方法与函数;
指针: 指针是一个变量,这个变量实际上是保存了另一个变量的内存地址,任何被指针保存了内存地址的变量都可以通过指针来修改内容,指针的传递非常廉价;
指针操作符含义:
操作符& 引用变量内存地址
操作符* 解用变量的值
package mainimport ("fmt")func main() {a := 1b := 2p1 := &a // 引用p2 := &b // 引用fmt.printf("%v,%v,%v\n",a,p1,p2*) // 解引用 p2*}
