酷代码 AI
菜单
全部AI  /  热门  /  AI问答
服务商

作为golang开发,golang 中 make 和 new 的区别?

在Go语言中,`make`和`new`是用于创建不同类型的对象的内建函数。它们在用途和返回值方面有一些区别。 1. `new`函数: `new`函数用于分配内存空间,并返回指向该内存空间的指针。它接受一个类型作为参数,并返回一个指向该类型的新分配的零值的指针。这意味着,使用`new`创建的对象会被初始化为零值。 例如,使用`new(T)`会分配一个新的`T`类型的零值对象,并返回指向该对象的指针。 ```go t := new(T) ``` 2. `make`函数: 相比之下,`make`函数用于创建并初始化引用类型(如切片、映射和通道)的对象。`make`函数接受一个类型、长度和容量(可选)作为参数,并返回初始化后的对象。与`new`不同,`make`不仅分配内存空间,还会进行初始化操作。 例如,使用`make([]T, length, capacity)`会创建一个初始长度为`length`、初始容量为`capacity`的新的切片对象,并返回该切片对象。 ```go s := make([]T, length, capacity) ``` `new`函数用于分配内存空间并返回指向新分配的零值对象的指针,适用于所有类型。 而`make`函数用于创建并初始化引用类型的对象,如切片、映射和通道等。它接受类型、长度和容量作为参数,并返回初始化后的对象。 这两者的主要区别在于它们的应用范围和返回值。 [2023-11-09 18:10:41 | AI问答 | 346点数解答]

相关提问