在 Go 语言中,new 是一个内建函数,用于分配内存。它的主要作用是创建一个指定类型的新变量,并返回该变量的地址(一个指向该类型的指针)。这个新分配的变量会被初始化为该类型的零值。
下面是 new 的使用示例:
p := new(int)
fmt.Println(*p) // 输出 0
这里,new(int) 创建了一个 int 类型的新变量,将其初始化为 0(int 的零值),并返回一个指向它的指针。这个指针被存储在变量 p 中。
与 make 的比较
不要将 new 与 make 混淆。虽然它们都用于创建新的变量,但它们的用途和行为有所不同:
new(T)返回一个指向类型T的新分配的零值的指针。make(T, args)返回一个初始化的(非零)值,它只适用于切片、映射和信道。
使用场景
你可能会在以下情况下使用 new:
- 当你需要分配一个零值变量并获取其地址时。
- 当你需要确保变量独立于其他变量存在时(每次调用
new都会创建一个新的实例)。
小结
总的来说,new 函数在 Go 语言中用于创建指定类型的新变量,分配内存并初始化为零值,最后返回该变量的地址。虽然在许多情况下可以通过其他方法分配和初始化变量,但 new 仍然提供了一种有用的创建并获取指针的方式。