小埋社区

    • 登录
    • 版块
    • 最新
    • 标签
    • 热门
    • 用户
    • 群组

    Go的OOP就是个残废

    编程
    1
    1
    417
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • Bruce
      Bruce ACG 最后由 编辑

      前言:因为最近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好!

      1 条回复 最后回复 回复 引用 0
      • First post
        Last post
      © 2017-2023 小埋社区 All Rights Reserved | 皖ICP备17016228号-2