Golang 何时使用 new() 和 make()
warning:
这篇文章距离上次修改已过430天,其中的内容可能已经有所变动。
在Golang中,new() 和 make() 是用来分配内存的两个内建函数,但它们被设计用于不同的目的,并且它们返回的对象类型也不相同。
new()
new(T)返回一个指向新分配的T类型zero值的指针。这里的T可以是任何类型,包括结构体、整数、切片、映射等。- 它是一个无参数的函数,它只是分配了内存,并且返回类型为
T的零值。
例如:
p := new(int) // p, *int 类型, 值为0make()
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()。
评论已关闭