第一种解释
make和new都是golang中用于创建新对象的内置函数,但它们的作用不同。
- make
make函数用于创建slice、map和channel等引用类型的对象,它返回的是一个已经初始化了的对象。make函数的语法如下:
make(T, args)
其中,T表示要创建的对象类型,args表示传递给对象构造函数的参数。例如,创建一个长度为10的int类型的slice:
s := make([]int, 10)
- new
new函数用于创建值类型的对象,它返回的是一个指向新对象的指针。new函数的语法如下:
new(T)
其中,T表示要创建的对象类型。例如,创建一个int类型的变量:
p := new(int)
这里p是一个指向int类型变量的指针,它的值为0。
总结:
make和new都是用于创建新对象的内置函数,但make用于创建引用类型的对象,返回的是一个已经初始化了的对象;而new用于创建值类型的对象,返回的是一个指向新对象的指针。
总的来说,make和new都是用于创建变量的函数,但make用于创建引用类型的变量,而new用于创建值类型的变量。在使用时需要根据具体的需求选择合适的函数。