新手对 * & 前缀的不解

Duang · · 1212 次点击
二楼的答案是正解,不过不加&,程序也是可以正常编译运行的 ,但是执行的时候就会报错,是因为Unmarshal会检查第二个参数是否为nil,而加了&获取的是message这个没有实例化对象本身的指针,才使Unmarshal判断第二个参数不是nil。
#7
更多评论
你图片的代码运行就会报错,明显写错了
#1
和C的指针是一样的用法,Unmarshal到message所指的对象,不加&也可以,但前提是message确实指着某个Message对象;如果加了&,Unmarshal会创建一个Message对象并将地址赋值给message
#2