go语言接口类型 interface
- 接口是一组行为规范的定义;
- 接口中只能有方法声明,方法只能有名称、参数、返回值,不能有方法体;
- 每个接口中可以有多个方法声明,结构体把接口中所有方法都重写后,结构体就属于接口类型;
- 重写的方法要求必须和接口中方法名称、方法参数(参数名可以不同)、返回值列表完全相同;
- 接口可以继承接口,go语言推荐把接口中的方法拆分成多个接口;
- 使用interface关键字来定义接口,如:
type 接口名 interface {
方法名(参数列表) 返回值列表
}
package main
import "fmt"
type People3 struct {
name string
age int
}
type Animal struct {
Eat
}
type Eat interface {
eat()
}
type Live interface {
run(run int)
Eat
}
func (p *People3) run(run int) {
fmt.Println(p.name, "正在跑步,跑了", run, "米")
}
func (p *People3) eat() {
fmt.Println(p.name, "正在吃东西~")
}
func main() {
p := People3{"张三", 32}
p.eat()
p.run(100)
}