温馨提示×

Golang中new和make有什么区别

小亿
84
2024-01-30 12:30:47
栏目: 编程语言

在Golang中,newmake 是两个用于分配内存的内建函数。

  1. new 函数:

    • new 函数用于分配并初始化一个值的指针,返回指针。
    • new 函数的参数是一个类型,并返回该类型的指针。
    • 分配的内存被置零,也就是每个位都被设置为零值。
    • new 函数返回的是指向新分配的零值的指针。

    示例:

    var p *int
    p = new(int)
    *p = 42
    fmt.Println(*p) // 输出: 42
    
  2. make 函数:

    • make 函数用于创建内置引用类型(如 slicemapchannel)的对象。
    • make 函数的参数是一个类型和一个长度(可选,不适用于 channel)。
    • make 函数返回该类型的初始化的非零值。

    示例:

    var s []int
    s = make([]int, 5, 10)
    s[0] = 1
    fmt.Println(s) // 输出: [1 0 0 0 0]
    

综上所述,new 函数返回的是指向零值的指针,而 make 函数返回的是初始化的非零值。

0