Golang面向对象编程-多态(使用interface实现)-快速入门

in golang •  6 years ago 

USB接口就是现实中的接口:
你可以把手机,相机,u盘都插在usb插槽上。

package main

import "fmt"

//define a interface
type Usb interface {
    //声明了两个没有实现的方法;
    Start()
    Stop()
}

type Phone struct {

}
type Camera struct {

}

//让Phone结构体实现Usb接口中定义的方法:
func (p Phone) Start() {
    fmt.Println("手机开始工作...")
}

func (p Phone) Stop() {
    fmt.Println("手机停止工作...")
}

//让Camera结构体实现Usb接口中定义的方法:
func (p Camera) Start() {
    fmt.Println("相机开始工作...")
}

func (p Camera) Stop() {
    fmt.Println("相机停止工作...")
}

type Computer struct {

}
// 为Computer编写一个方法:接收一个Usb接口类型变量;
// 只要是实现了Usb接口(所谓实现Usb接口,就是实现了Usb接口声明的所有方法)
func (c Computer) Working(usb Usb) {
    //通过Usb结构变量来调用Start和Stop方法;
    usb.Start()
    usb.Stop()
}


func main() {

    //测试
    // 先创建结构体变量;
    computer := Computer{}
    phone := Phone{}
    camera := Camera{}

    //关键点
    computer.Working(phone)  // 识别为手机
    computer.Working(camera) // 识别为相机
}
Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!