首页 > 编程笔记

Go语言new()和make()的区别

在Go语言中,new() 函数和 make() 函数有什么区别?

new() 函数

new() 函数的作用是初始化一个指向类型的指针(*T),new() 函数是内建函数,函数定义的格式如下:
func new(Type) *Type
通常使用 new() 函数来分配空间。传递给 new() 函数的是一个类型,不是一个值。返回值是指向这个新分配的零值的指针。

make() 函数

make( )函数的作用是为 slice()、map() 或 chan() 初始化并返回引用的 T。

make() 函数是内建函数,函数定义的格式如下:
func make(Type, size IntegerType) Type
说明:

总结

Go语言 make(T, args) 函数的目的与 new(T) 不同,仅仅用于创建 Slice()、Map() 和 Channel(),并且返回类型是 T(不是 T*)的一个初始化的(不是零值)的实例。

推荐阅读