Golang 何时使用 new() 和 make()
在Golang中,new()
和 make()
是用来分配内存的两个内建函数,但它们被设计用于不同的目的,并且它们返回的对象类型也不相同。
new()
new(T)
返回一个指向新分配的T
类型zero
值的指针。这里的T
可以是任何类型,包括结构体、整数、切片、映射等。- 它是一个无参数的函数,它只是分配了内存,并且返回类型为
T
的零值。
例如:
p := new(int) // p, *int 类型, 值为0
make()
make(T, args)
主要用于创建切片、映射、或者通道(只有这三个类型是引用类型,并且需要初始化),并返回一个初始化的(非零)值。T
必须是切片、映射、或者通道类型的类型字面量。args
是对应于T
的参数列表。
例如:
m := make(map[string]int) // m, map[string]int 类型, 已初始化
c := make(chan int) // c, chan int 类型, 已初始化
s := make([]int, 5) // s, []int 类型, 已初始化
总结:
- 如果你需要一个新的零值的指针,用
new()
。 - 如果你需要一个新的非零值(例如,对于切片、映射、通道),用
make()
。
评论已关闭