go-接口
一、接口:
接口中没有implement关键字,只要一个变量,含有接口中所有方法,那么这个变量就实现了这个接口,
//定义接口 type Usb interface { //声明方法 Start() Stop() } type Phone struct { } //phone实现接口的方法 func (p Phone) Start() { fmt.Println("手机开始工作") } func (p Phone) Stop() { fmt.Println("手机停止工作") } type Camera struct { } func (c Camera) Start() { fmt.Println("相机开始工作。。") } func (c Camera) Stop() { fmt.Println("相机停止工作") } type Computer struct { } func (c Computer) Working(usb Usb) { usb.Start() usb.Stop() } func main() { computer := Computer{} phone := Phone{} camera := Camera{} computer.Working(phone) computer.Working(camera) } 运行结果: 手机开始工作 手机停止工作 相机开始工作。。 相机停止工作
二、
//定义接口
type AInterface interface {
Say()
}
type Stu struct {
Name string
}
func (stu Stu) Say() {
fmt.Println("stu say()")
}
func main() {
var stu Stu
var a AInterface = stu
a.Say()
}
运行结果:
stu say()
1.接口本身不可以创建实例,但是可以指向一个实现了该接口的自定义类型的变量
2.接口中多有的方法都是没有实现的方法
3. 一个自定义类型将某个接口的方法都实现了,说这个自定义变量实现了该接口。
4.一个自定义类型可以实现多个接口//定义接口 type AInterface interface { Say() } type BInterface interface { Hello() } type Stu struct { } func (stu Stu) Say() { fmt.Println("stu say()") } func (stu Stu) Hello() { fmt.Println("stu Hello()") } func main() { var stu Stu var a AInterface = stu var b BInterface = stu a.Say() b.Hello() }
5.接口中不能有任何变量
本作品采用《CC 协议》,转载必须注明作者和本文链接