酷代码 AI
菜单
服务商

深度剖析:Go语言中 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`函数用于创建并初始化引用类型的对象,如切片、映射和通道等。它接受类型、长度和容量作为参数,并返回初始化后的对象。 这两者的主要区别在于它们的应用范围和返回值。 ######[AI写代码神器 | 346点数解答 | 2023-11-09 18:10:41]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]