第一种解释
make和new都是golang中用于创建新对象的内置函数,但它们的作用不同。

  1. make

make函数用于创建slice、map和channel等引用类型的对象,它返回的是一个已经初始化了的对象。make函数的语法如下:

make(T, args)

其中,T表示要创建的对象类型,args表示传递给对象构造函数的参数。例如,创建一个长度为10的int类型的slice:

s := make([]int, 10)
  1. new

new函数用于创建值类型的对象,它返回的是一个指向新对象的指针。new函数的语法如下:

new(T)

其中,T表示要创建的对象类型。例如,创建一个int类型的变量:

p := new(int)

这里p是一个指向int类型变量的指针,它的值为0。

总结:

make和new都是用于创建新对象的内置函数,但make用于创建引用类型的对象,返回的是一个已经初始化了的对象;而new用于创建值类型的对象,返回的是一个指向新对象的指针。

总的来说,make和new都是用于创建变量的函数,但make用于创建引用类型的变量,而new用于创建值类型的变量。在使用时需要根据具体的需求选择合适的函数。