GO的第二天学习-方法声明

Gabriel · · 459 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

这章看着有点懵懵的!!!!

定义

在函数声明时,在其名字之前放上一个变量,即是一个方法。这个附加的参数会将该函数附加到这种类型上,即相当于为这种类型定义一个独占的方法

package geometry

import "math"

type Point struct {X,Y float64}

func Distance(p,q Point) float64 {
    return math.Hypot(q.X-p.X,q.Y-p.Y)
}

func (p Point) Distance(q Point) float64 {
    return math.Hypot(q.X-p.X,q.Y-p.Y)
}

p := Point {1,2}
q := Point{5,6}
fmt.Println(Distance(p,q))
fmt.Println(p.Distance(q))

可以看到,上面的两个函数调用都是Distance,但是却没有发生冲突。第一个Distance的调用实际上调用的是包级别的函数 geometry.Distance,而第二个则是使用刚刚声明Point,调用的是Point类下声明的 Point.Distance方法,这种p.Distance的表达式叫做选择器


有疑问加站长微信联系(非本文作者)

本文来自:Segmentfault

感谢作者:Gabriel

查看原文:GO的第二天学习-方法声明

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

459 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传