用途
new
:主要用于为值类型 (如基本数据类型 int
、float64
、结构体 struct
等)分配内存空间,并将分配的内存初始化 为对应类型的零值 ,然后返回指向该内存地址的指针。
Go
复制代码
package main
import "fmt"
func main() {
// 使用 new 为 int 类型分配内存
numPtr := new(int)
fmt.Println(*numPtr) // 输出: 0
// 使用 new 为结构体分配内存
type Point struct {
X, Y int
}
p := new(Point)
fmt.Println(p.X, p.Y) // 输出: 0 0
}
make
:专门用于为引用类型 (slice
、map
和 channel
)分配内存并进行初始化操作,返回的是引用类型本身,而不是指针。
var:
关键字用于显式声明变量 ,可以声明各种类型的变量,包括基本数据类型(如 int
、float64
、bool
等)、复合数据类型(如数组、结构体)以及引用类型(如切片、映射、通道)。声明后,变量会被初始化为其对应类型的零值, 引用类型的零值是 nil
。。
:=
是 Go 语言中的短变量声明操作符,用于声明并初始化变量。它可以根据右侧表达式的类型自动推断变量的类型,无需显式指定。
总结:
关键字 / 操作符 |
适用类型 |
功能 |
返回值 |
使用场景 |
var |
所有类型 |
声明变量并初始化为零值 |
变量本身 |
需要显式声明变量类型,或在函数外部声明变量时使用 |
new |
值类型 |
为值类型分配内存并初始化为零值 |
指向该类型零值的指针 |
需要获取值类型的指针时使用 |
make |
引用类型(slice 、map 、channel ) |
为引用类型分配内存并进行初始化 |
引用类型本身 |
创建并初始化切片、映射或通道时使用 |
:= |
所有类型 |
声明并初始化变量,自动推断类型 |
变量本身 |
在函数内部快速声明并初始化变量时使用 |