; `; D8 U5 A! r* b9 Q解决方案: ; `5 \! [' |: @& N# ?% J0 X h2 ?
Go 内存分配和值初始化的方法有很多:6 \- c; I+ y' n
&T{...}`,`&someLocalVar`,`new`,`make分配也可能发生在创建复合文本时。& I1 t5 ~$ P6 P7 N
new可用于分配整数等值,&int是非法的: 7 @7 k. w* t4 I J5 [+ C9 Y( h8 A! Y" q
new(Point)&oint OK&oint / Combines allocation and initializationnew(int)&int // Illegal// Works,but it is less convenient to write than new(int)var i int&i - A, C: U4 _- z' C9 _
通过查看以下示例可以看出new和之间的区别make:" j3 [5 E7 Q- `6 H( g( t
p := new(chan int) // p has type: *chan intc := make(chan int) // c has type: chan int & Y- c" J2 E, R/ j
假设 Go 没有newand make,但它具有内置函数NEW。示例代码将如下所示: 6 h) R% v: ?/ _5 g' t$ Y! b
p := NEW(*chan int) // * is mandatoryc := NEW(chan int)- `1 X! ?$ _( H; e) H% ]