Golang中new和make

277 阅读1分钟
*T := new(T)
obj := make(int[], 5, 10)

new和make都是golang中内置分配内存的2个函数,它们都可以用来进行内存分配

new和make有什么区别呢

  • make只能用于初始化slices, channels和maps
  • 使用make原语,它返回是内置类型(slices、channels、maps)初始化后的值,而这个值包含对底层数据结构的引用,所以,通过对返回值的操作,我们也能修改对应(slices,channels,maps)类型的值
  • 使用new分配原语,它为类型T分配内存空间并将该内存空间初始化为类型T的零值,接着返回一个指针,该指针指向该零值的内存地址