方法method

Go中没有class,但依旧有method
通过显示说明receiver来实现与某个类型的结合
只能为同一个包中的类型定义方法
Receiver可以是类型的值或指针(需要修改对象)
Go方法method - 图1

不存在方法重载
可以使用值或指针来调用方法,编译器会自动完成转换
从某种意思上来说,方法是函数的语法糖,因为receiver其实就是方法所接收的第1个参数
Go方法method - 图2

如果外部结构和嵌入结构存在同名方法,则优先调用外部结构的方法
类型别名不会拥有底层类型所附带的方法
Go方法method - 图3

方法可以调用结构中的非公开字段
Go方法method - 图4

为类型添加方法

在Go语言中,可以给任意类型(包括内置类型,但不包括指针类型)添加相应的方法,

例如:
Go方法method - 图5
在这个例子中,我们定义了一个新类型Integer,它和int没有本质不同,只是它为内置的int类型增加了个新方法Less()。
这样实现了Integer后,就可以让整型像一个普通的类一样使用:
Go方法method - 图6

为结构体增加方法实例:
Go方法method - 图7


Go方法method - 图8