在Golang中,new
和 make
是兩個用于分配內(nèi)存的內(nèi)建函數(shù)。
new
函數(shù):
new
函數(shù)用于分配并初始化一個值的指針,返回指針。new
函數(shù)的參數(shù)是一個類型,并返回該類型的指針。new
函數(shù)返回的是指向新分配的零值的指針。示例:
var p *int
p = new(int)
*p = 42
fmt.Println(*p) // 輸出: 42
make
函數(shù):
make
函數(shù)用于創(chuàng)建內(nèi)置引用類型(如 slice
、map
和 channel
)的對象。make
函數(shù)的參數(shù)是一個類型和一個長度(可選,不適用于 channel
)。make
函數(shù)返回該類型的初始化的非零值。示例:
var s []int
s = make([]int, 5, 10)
s[0] = 1
fmt.Println(s) // 輸出: [1 0 0 0 0]
綜上所述,new
函數(shù)返回的是指向零值的指針,而 make
函數(shù)返回的是初始化的非零值。