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