← 返回首页

Golang 中 make 和 new 的区别

make 和 new 都是用于内存分配的内建函数,但它们的使用场景和功能有所不同:

  1. make:

    • 用于初始化并分配内存,只能用于创建 slice、map 和 channel 三种类型。

    • 返回的是初始化后的数据结构,而不是指针。

  2. new:

    • 用于分配内存,但不初始化,返回的是指向该内存的指针。

    • 可以用于任何类型的内存分配。

 

make 函数创建的是数据结构(slice、map、channel)本身,且返回初始化后的值。

而new 函数创建的是可以指向任意类型的指针,返回指向未初始化零值的内存地址。