sslinux avatar

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

sslinux

Published: 20 Dec 2018 › Updated: 20 Dec 2018

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

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) // 识别为相机
}

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

Written by

Linux技术爱好者

Read more #golang posts


Best Posts From sslinux

We have not curated any of sslinux's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.

More Posts From sslinux