go内置函数make和new的区别
Go语言中的make
和new
都是用于创建内存对象的内置函数。但是,它们之间存在一些区别:
make
函数用于创建并初始化一个slice、map或channel类型的对象,而new
函数用于创建一个指向给定类型的指针。例如:
// 使用make函数创建一个初始长度为0,容量为10的slice:
s := make([]int, 0, 10)
// 使用new函数创建一个指向int类型的指针:
p := new(int)
make
函数的第一个参数必须是slice、map或channel类型,并且返回的是一个类型的实例,而new
函数的第一个参数必须是一个类型,并返回一个指向该类型实例的指针。例如:
// 使用make函数创建一个初始长度为0,容量为10的slice:
s := make([]int, 0, 10)
// 使用new函数创建一个指向int类型的指针:
p := new(int)
// 因为make函数返回一个实例,所以我们可以直接使用实例来调用它的方法:
s.append(1)
// 因为new函数返回一个指针,所以我们必须使用间接调用来调用实例的方法:
(*p).Set(10)
总的来说,make
函数用于创建和初始化一个slice、map或channel类型的对象
Copyright © 2022-2023, Koudai Team