new
func new(Type) *Type
即内建函数 new 用来分配内存,它的第一个参数是一个类型,不是一个值,它的返回值是一个指向新分配类型零值的指针
make
func make(t Type, size ...IntegerType) Type
即内建函数 make 用来为 slice,map 或 chan 类型分配内存和初始化一个对象(注意:只能用在这三种类型上),跟 new 类似,第一个参数也是一个类型而不是一个值,跟 new 不同的是,make 返回类型的引用而不是指针,而返回值也依赖于具体传入的类型,
new和其他语言中的同名函数一样:
new(t)分配了零值填充的T类型的内存空间,并且返回其地址,即一个*t类型的值。
它并不初始化内存,只是将其置零。*t指向的内容的值为零(zero value)。注意并不是指针为零。
make(t, args)与new(t)的功能区别是,make只能创建slice、map和channel,并且返回一个初始化的(而不是置零),类型为t的值(而不是*t)。
而只有make 用于可以初始化其内部的数据结构并准备好将要使用的值。