2018-09-20 Go学习拾贝

Go的指针与值在作为接受者和参数时的表现不同

方法与指针重定向
比较前两个程序,你大概会注意到带指针参数的函数必须接受一个指针:

var v Vertex
ScaleFunc(v, 5) // 编译错误!
ScaleFunc(&v, 5) // OK
而以指针为接收者的方法被调用时,接收者既能为值又能为指针:

var v Vertex
v.Scale(5) // OK
p := &v
p.Scale(10) // OK
对于语句 v.Scale(5),即便 v 是个值而非指针,带指针接收者的方法也能被直接调用。 也就是说,由于 Scale 方法有一个指针接收者,为方便起见,Go 会将语句 v.Scale(5) 解释为 (&v).Scale(5)。

另外,Go会将指针的.运算自动解释为(*).

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.安装 https://studygolang.com/dl 2.使用vscode编辑器安装go插件 3.go语...
    go含羞草阅读 1,616评论 0 6
  • 如果记忆可以封存,我愿意让2016年完完整整地保留在脑海里。 “ 一路走来,磕磕绊绊。 ” 于我而言,似乎是永远不...
    YoungThink阅读 210评论 0 0
  • 1、把所有时间都用在吃饭睡觉上; 2、告诉自己,像我这样的人绝对不可能达到完美,从而放弃努力; 3、把生命浪费在次...
    彭小刀阅读 1,073评论 11 35
  • http://mp.weixin.qq.com/s/p-wf5amL79NNRwabY0fBJg
    江南一现阅读 182评论 0 0