golang中实现虚函数的功能

很多人学了golang,都会发现原来C++中非常好用的虚函数功能,在golang中是不能直接用的。
利用虚函数,我们可以在父类中调用子类的实际实现函数,这对于不同子类函数相同,但是具体功能不同时,非常可用,但是golang中不能。golang父结构体调用自己的方法,在子结构体中覆盖后,父结构体在调用同一函数时,默认是调用自己的,不会调用子结构体的。
有办法解决吗?
答案是有的。
我们在父结构体中定义一个空函数:
DisconnectFunc func(resean int)
然后再在子结构体实现一个跟它参数一样的方法,然后指向这个空函数:
newclient.OnDisConnectedFunc = newclient.OnDisConnected
在父结构体调用空函数时,记得要判断是否为nil,为nil说明我们在子结构体中没有链接上,是不可调用的,必须是在子结构体中赋值链接后才能使用,这就是虚函数的实现方法了。
我也是反复思考和尝试后才得出的方法。

还有一种方法是在父结构体中声明空函数,在子结构体中实现,然后将子结构体变量赋值给父结构体变量,也是可以的,但是这样不够灵活,子结构体会受限难以实现自己的额外功能。

如果你解决有用,记得点赞+关注,感谢了。

你可能感兴趣的:(golang,开发语言,后端)