|  |      1lhx2008      2020-01-24 14:12:11 +08:00 via Android new 就只是内存分配了,make 就是再做个初始化之类的 | 
|  |      2lhx2008      2020-01-24 14:13:20 +08:00 via Android 初始化我理解就是执行了构造函数了 | 
|  |      3noO9LeRxXX      2020-01-24 14:32:17 +08:00 via iPhone 举个例子,slice 要存 length 和 capacity,这些都可以不为零,所以不能用 new。具体 Effective Go 里有讲。 | 
|  |      4monsterxx03      2020-01-24 15:02:23 +08:00 via iPhone new 只是&T{}的一个语法糖 | 
|      5Cbdy      2020-01-24 15:12:21 +08:00 via Android 基本没有区别 | 
|  |      6ChristopherWu      2020-01-24 15:16:10 +08:00 * `new` 会申请内存并全部清 0 * `make`会申请内存并初始化该类型 像 `make([]int, 10, 100)` 这种情况就必须要用`make`初始化,因为需要初始化 `length`, `capacity` ``` var p *[]int = new([]int) // allocates slice structure; *p == nil; rarely useful var v []int = make([]int, 100) // the slice v now refers to a new array of 100 ints ``` | 
|      7Hellert      2020-01-24 15:19:57 +08:00 via Android new 新建任意类型的指针。 make 只能用于切片,map,通道,其他类型是不能用的。 | 
|  |      8chitanda      2020-01-24 19:56:07 +08:00 via iPhone 请去看一遍官方的 effective go | 
|  |      9secondwtq      2020-01-24 22:54:09 +08:00 via iPhone 看起来像是 c++的 new 和 malloc 的区别…… | 
|  |      10wweir      2020-01-26 08:00:08 +08:00 via Android 神经病式的面试官喜欢问这问题。 实际没啥区别,都是申请内存、初始化,无非作用对象不同 | 
|  |      11wweir      2020-01-26 08:02:06 +08:00 via Android 非要说区别的话,make 可以多加俩参数 :狗头: | 
|  |      12lazydog      2020-01-26 11:15:22 +08:00 曾被面试官问到过。你可以理解为:make 用来初始化 Go 的内部数据结构,new 用来创建一个指向返回类型的指针。或者参考这里: https://draveness.me/golang/docs/part2-foundation/ch05-keyword/golang-make-and-new/ | 
|  |      13Mithrandir      2020-01-27 13:31:50 +08:00 请去看一遍官方的 effective go |