new 和 make的区别
new 和 make 的区别总结**
| 特性 | new |
make |
|---|---|---|
| 用途 | 用于所有类型,分配内存并返回指针 | 用于初始化切片、映射和通道类型,返回已初始化的对象 |
| 返回值 | 返回类型的指针 | 返回的是切片、映射或通道本身,而不是指针 |
| 初始化内容 | 分配内存并初始化为零值 | 对切片、映射、通道进行初始化并准备好可以使用 |
| 适用类型 | 适用于所有类型(基础类型、结构体、数组等) | 仅适用于切片、映射和通道类型 |
| 零值初始化 | 是的,返回的指针指向的对象的字段会被初始化为零值 | 是的,初始化后的切片、映射和通道会具备默认行为(如空映射、空切片等) |
何时使用 new 和 make**
- 使用
new来分配内存并初始化零值时,通常是当你需要一个类型的指针并且不关心具体的初始化值(零值)时。 - 使用
make来初始化和分配内存给切片、映射或通道,这些类型需要显式初始化才能使用。
总结
new返回一个指向新分配内存的指针,并且将内存初始化为零值。make仅用于切片、映射和通道的初始化,它为这些引用类型分配内存并准备好可用的结构,返回初始化后的对象。

浙公网安备 33010602011771号