深度剖析: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]
相关提问
- 解决 make tini-static 时链接器 ld 找不到 -lc 错误的方法(阿里通义 | 264点数解答 | 2025-05-24 02:02:15)222
- 解决“/usr/bin/ld: cannot find -lc”错误,成功构建tini-static的七大方案(讯飞星火 | 571点数解答 | 2025-05-24 02:03:08)221
- Python 实现句子反转:单词大小写转换与数字倒转(字节豆包 | 131点数解答 | 2024-11-11 16:44:49)414
- Python 实现句子单词逆序及大小写、数字转换,开发要点揭秘!(百度文心 | 451点数解答 | 2025-10-25 11:33:27)81
- C语言实现:句子反转,单词大小写与数字倒转处理(百度文心 | 1010点数解答 | 2025-10-25 11:34:26)110
- C语言实现句子反转:处理输入空格、内存管理与数字判断的要点(阿里通义 | 712点数解答 | 2025-10-25 11:35:19)87
- C++实现机关门数字判断程序,依据3的倍数规则输出结果(字节豆包 | 167点数解答 | 2026-03-14 20:35:32)16
- C++实现机关门数字判断程序,依据3的倍数决定操作(字节豆包 | 132点数解答 | 2026-03-14 20:36:37)16
- C 语言实现句子反转:单词大小写转换与数字倒转(字节豆包 | 393点数解答 | 2024-11-11 16:45:21)547
- C 语言实现链表操作:创建、输出、删除及插入功能详解(字节豆包 | 534点数解答 | 2024-12-09 21:33:48)338
- C语言实现链表创建、输出、删除与插入操作的完整代码及注意要点(字节豆包 | 609点数解答 | 2024-12-18 12:18:21)360
- 深入解析Netty代码:线程组、启动类及通道选项设置全揭秘(字节豆包 | 244点数解答 | 2025-01-17 18:26:07)223