介绍go接口

package main

import "fmt"

// 定义接口
type USB interface {
	Name() string
	Connect()
}

// 定义手机usb
type PhoneConnecter struct {
	name string
}

// 实现Name
func (pc PhoneConnecter) Name() string {
	return pc.name
}

//实现Connect
func (pc PhoneConnecter) Connect() {
	fmt.Println("正在连接:", pc.name)
}

// 关闭usb连接(只能传进USB)
func Disconnect(usb USB) {
	if pc, is_ok := usb.(PhoneConnecter); is_ok {
		fmt.Println("关闭连接:", pc.name)
	} else {
		fmt.Println("关闭连接:未知设备")
	}

}

// 关闭usb连接(使用interface{}可以传进任何类型,就像是Object)
func Disconnect2(usb interface{}) {
	switch v := usb.(type) {
	case PhoneConnecter:
		fmt.Println("关闭连接:", v.name)
	default:
		fmt.Println("关闭连接:未知设备")
	}
}

func main() {
	// 方法一
	var usb USB
	usb = PhoneConnecter{"手机USB"}
	usb.Connect()
	Disconnect(usb)

	// 方法二
	usb2 := PhoneConnecter{"手机USB2"}
	usb2.Connect()
	Disconnect(usb2)

	Disconnect2("我是冒充的接口")

}

输出:

正在连接: 手机USB

关闭连接: 手机USB

正在连接: 手机USB2

关闭连接: 手机USB2

关闭连接:未知设备


你可能感兴趣的文章