- go中没有类的概念,只有结构体。
定义结构体使用type struct 关键字
type typeName struct {
var1 Type
var2 Type
...
varn Type
}
- 其它面向对象的语言中类包含属性和方法,go中定义类的方法和定义函数很像
定义函数:
func funcName (param Type ...) returnType {
}
定义方法:
func (t Type) methodName (param Type...) returnType {
}
两者的区别仅仅是方法中在func关键字和方法名之间多了一个接收者类型。
- 接口
一般面向对象的接口是定义一个对象的行为,指定对象应该做什么,而如何实现这个行为细节则由对象本身确定。
像java中需要类方法中显示的声明实现了该接口,go中只要类型方法定义了接口中所有方法,该类型就实现了该接口。
interface是方法的集合,是一种类型。多个类型可以实现同一个 接口,一个类型可以实现多个接口。
定义接口:
type interfaceName interface {
methodName1() [returnType]
methodName2() [returnType]
...
methodNamen() [returnType]
}
实现接口:
func (typeName Type) methodName1() [returnType] {
}
空接口可以接收任何类型,可以实现万能切片 :[]interface{}
任意map : [Type] interface {}