新手对 * & 前缀的不解

Duang · · 1155 次点击
你图片的代码运行就会报错,明显写错了
#1
更多评论
和C的指针是一样的用法,Unmarshal到message所指的对象,不加&也可以,但前提是message确实指着某个Message对象;如果加了&,Unmarshal会创建一个Message对象并将地址赋值给message
#2
https://golang.org/ref/spec#Address_operators 确实啊,打脸了,可以运行,而且官方说明了`For an operand x of type T, the address operation &x generates a pointer of type *T to x. ` 解释了你的问题,对于类型为T的x, &x会生产一个*T类型的指针赋值给x。
#3