Go语言中的new的用处

778 阅读1分钟

在 Go 语言中,new 是一个内建函数,用于分配内存。它的主要作用是创建一个指定类型的新变量,并返回该变量的地址(一个指向该类型的指针)。这个新分配的变量会被初始化为该类型的零值。

下面是 new 的使用示例:

p := new(int)
fmt.Println(*p) // 输出 0

这里,new(int) 创建了一个 int 类型的新变量,将其初始化为 0int 的零值),并返回一个指向它的指针。这个指针被存储在变量 p 中。

make 的比较

不要将 newmake 混淆。虽然它们都用于创建新的变量,但它们的用途和行为有所不同:

  • new(T) 返回一个指向类型 T 的新分配的零值的指针。
  • make(T, args) 返回一个初始化的(非零)值,它只适用于切片、映射和信道。

使用场景

你可能会在以下情况下使用 new

  • 当你需要分配一个零值变量并获取其地址时。
  • 当你需要确保变量独立于其他变量存在时(每次调用 new 都会创建一个新的实例)。

小结

总的来说,new 函数在 Go 语言中用于创建指定类型的新变量,分配内存并初始化为零值,最后返回该变量的地址。虽然在许多情况下可以通过其他方法分配和初始化变量,但 new 仍然提供了一种有用的创建并获取指针的方式。