golang——接口

golang——接口

  1. 空接口:我感觉类似于泛型,什么参数都可以传递
var a = interface{}
func a(a ...interface{})
  1. 断言:两种情况,一种是空接口断言,一种是接口断言
    空接口断言
type a interface{}
func main(){
	var a = "true"
	if _,ok := a.(bool);ok{
		fmt.Println("数据类型是bool")
	}else{
		fmt.Println("不是bool")
	}
}

含有方法的接口

type Usb interface{
	start()
	stop()
}

type Phone struct{}
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) work(u Usb){
	switch u.(Type){
		case Phone:
			u.start()
		case Camera:
			u.stop()
	}
}
func main(){
	var computer := Computer{}
	var phone := Phone{}
	var camera := Camera{}
	computer.work(phone)
	computer.work(camera)
}
//手机开机
//摄像机关机

总结

  1. 接口的方法需要全部实现否则会报错
  2. 通过断言可以知道实现接口的类的数据类型
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值