前几章节我们在变量创建和使用有多种不同的方式,主要是make 和new,这里说下他们的区别

    1. new用来分配除了引用类型之外的其他类型内存
    2. make来分配指针类型的数据内存

    new初始化仅仅是分配了一段内存,比如切片我们必须要为一个底层数组分配一段内存,同时也要初始化切片的长度,容量; 长度是切片本身的长度,而容量是数据的长度,所有new是不具备给像“切片”这样的指针数据类型初始化的; 则引用类型必须先使用make初始化数据后,才能对数据做出修改,因为初始化之后才有了内存空间,而引用类型被引用后,引用它的对象将会随着这变量变化而变化。

    常用引用类型: 映射(map),数组切片(slice),通道(channel),方法与函数;
    指针: 指针是一个变量,这个变量实际上是保存了另一个变量的内存地址,任何被指针保存了内存地址的变量都可以通过指针来修改内容,指针的传递非常廉价;

    指针操作符含义:

    操作符& 引用变量内存地址
    操作符* 解用变量的值

    1. package main
    2. import (
    3. "fmt"
    4. )
    5. func main() {
    6. a := 1
    7. b := 2
    8. p1 := &a // 引用
    9. p2 := &b // 引用
    10. fmt.printf("%v,%v,%v\n",a,p1,p2*) // 解引用 p2*
    11. }