go的继承以及接口多态的使用

go继承是通过组合继承的方式,具体使用如下

type baseRoom struct {
	RoomName string
}

//这里继承房间类
type myRoom struct {
	myRoomName string
	baseRoom
}

接下来我们定义一个interface接口,为基础房间类型,并为基础类型实现get set方法

type iroom interface {
	getName()
	setName(string)
}

//给room实现方法
func (p* baseRoom) getName() {
	fmt.Printf("my room name is %s\r\n",p.RoomName)
}

func (p* baseRoom) setName(a string) {
	p.RoomName = a
}

我们要利用多态来实现不同房间的切换,interface如果是结构体类型类型需要做.(*xxx)来获取相应的变量,给变量做断言

func main() {
	mymap := make(map[string]iroom)
	mymap["test"] = &myRoom{}
	mymap["test"].setName("小明的房间")
	mymap["test"].getName()
	mymap["test"].(*myRoom).RoomName = "小芳的房间"
}

需要注意的是,断言必须转换成定义时候的类型,否则运行时会panic

panic: interface conversion: main.iroom is *main.myRoom, not *main.baseRoom
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值