go的函数重写问题
GO语言函数继承重写之后还是执行了父类的函数
package main
import (
"fmt"
)
//基础任务类
type BaseTask struct {
}
//注册
func(t* BaseTask) Register(data *[]byte){
fmt.Println("This is basetask")
}
//登录
func(t* BaseTask) Login(data *[]byte) {
}
//解析
func(t* BaseTask) Do(d int){
switch d {
case 0:
t.Register(con,c)
break
case 1:
t.Login(con,c)
break
}
}
//继承BaseTask
type Principal struct {
BaseTask
}
//重写注册函数注册
func (t* Principal)Register(data *[]byte) {
fmt.Print("this is Principal")
}
//重写登录函数
func (t* Principal) Login(data *[]byte) {
}
func main(){
c:=new(Principal)
c.do(0)
}
看了下网上的文章,都没有这种写法,请问下go是不支持吗?还有其他写法能做到我想要的效果吗?
那可以用go的
interface
啊Do
函数接收的是一个interface
这个interface
注册register
和Login
函数,然后调用Do的时候传的是哪一个实例就会调用谁的函数,如下: