golang 对函数和方法做出了区分;函数为常规意义上理解的函数,方法为包含接收者的函数;
1、函数:
func 函数名(参数列表) (返回值列表) {
}
2、方法:
func (接收者) 方法名(参数列表) (返回值列表) {
}
注:接收者包含变量接受者和指针接收者,只有复合类型的变量或指针才能作为接受者,比如结构体类型、slice、map;
变量接收者不能修改对应变量的值,指针接收者可以直接修改;若slice、map作为接收者,其类型为指针接收者。
传统的派生式接口及关系构建的模式,让类型间拥有强耦合的父子关系,这种关系一般会以“类派生图”的方式进行。经常可以看到大型软件极为复杂的派生树,随着系统的功能不断增加,这颗“派生树”,会变得越来越复杂。
对于Go 语言来说,非侵入式设计让实现者的所有类均是平行的、组合的,如何组合则留到使用者编译时再确认,因此,使用Go语言时,不需要也不可能有“派生类图”,开发者唯一关注的就是“我需要什么?”及“我能实现什么?”