看起来二者没有什么区别,都在堆上分配内存,但是它们的行为不同,适用于不同的类型。
new(T) 为每个新的类型T分配一片内存,初始化为 0 并且返回类型为*T的内存地址:这种方法 返回一个指向类型为 T,值为 0 的地址的指针,它适用于值类型如数组和结构体;它相当于 &T{}。
make(T) 返回一个类型为 T 的初始值,它只适用于3种内建的引用类型:切片、map 和 channel
new只分配内存, make用于slice,map,和channel的初始化.
下图给出了区别:
【go new() 和 make() 的区别】
文章图片
推荐阅读
- 算法|LeetCode Golang Hot53-最大子数组和
- go1.18泛型的简单尝试
- Go 1.18 正式发布!
- 【第四十二期】米哈游后台golang开发面经
- golang 简单工厂模式
- golang|什么才是 TDD 的正确打开方式()
- 【第四十期】shopee-golang后台一面面经
- go excelize 批量写入数据到Excel
- 【Go进阶—基础特性】接口