一.new函数

  • 在上一小节中学习了指针,每次创建一个指针必须在额外创建一个变量,操作比较麻烦.

  • 可以通过new函数直接创建一个类型的指针

    1
    变量名:=new(Type)
  • 使用new函数创建的指针已有指向,可以使用*指针对象进行赋值.

    1
    2
    3
    4
    5
    6
    func main() {
    a := new(int)
    fmt.Println(a) //输出:指针地址
    *a = 123
    fmt.Println(*a) //输出:123
    }
  • 只声明的指针变量不能直接赋值,

    1
    2
    3
    4
    5
    func main() {
    var a *int
    *a = 123
    fmt.Println(*a)
    }
  • 结果

    1
    2
    panic: runtime error: invalid memory address or nil pointer dereference
    [signal 0xc0000005 code=0x1 addr=0x0 pc=0x48b576]