Go 语言中 new 和 make 有什么区别?
Go 语言中 new 和 make 有什么区别?
提示
题眼: 一个分配并返回指针,一个初始化后开箱即用
make:只用于创建切片、映射(map)和通道(channel)这三种类型,并初始化其内部数据结构,返回的是已经初始化好的对象本身。new:是一个内置函数,可以给任意类型分配内存,并返回指向该类型零值的指针。
重要
参考答案:make 和 new 都和初始化有关,但它们的用途不一样。make 主要用来初始化切片、map 和通道,它不只是分配内存,还会把内部结构初始化好,所以基本上是开箱即用的。new 则更通用,它可以给任意类型分配内存,然后返回一个指向该类型零值的指针。但它只负责分配,不负责把像 map、切片、通道这种内部结构初始化完整,所以这几类类型通常应该优先用 make,而不是用 new。
