Go的OOP就是个残废
-
前言:因为最近
Go
很火,我之前关注的一个编辑器也是用Go
写的,所以我打算自学一下Go
语言
结果,我发现Go
完全没有某些人吹嘘的那么好,OOP部分无论是实现方式还是代码体验简直就是一坨翔,写起来甚至和C
有点像。
定义方法其实就是定义函数,只不过函数的第一个参数是结构体(Go
中甚至没有类的概念),和C
函数唯一的区别就是把结构体参数提前到函数名前了:// 之前写C++比较多,不保证代码规范符合Go的标准 type foo struct { } func (f foo) method(params types) (returns) { // function body } func main() { bar := new(foo) params := "blabla" bar.method(params) }
至于继承,直接把父结构嵌套在子结构中就算继承了:
type parent struct {} type child struct { parent }
接口的继承也是嵌套,而接口的实现居然是靠赋值,并且官方工具目前好像还不支持静态检查:
type i interface { foo() } type s struce {} func (bar s) foo() {} func main() { a := s{} var b i = a b.foo() }
写了半天,我还以为我回到了上个世纪写
C
的年代。恕我直言,C++
的OOP做的都比Go
好!