没有:类、继承、多态、重载 的概念

  1. 不同世界观: go语言中使用 duck typing,面向接口编程、函数式编程
  2. 面向对象的世界里,也流行变继承为组合的思维
  3. 面向对象的元素容易被滥用
  4. 为组合提供了便捷的支持

没有:try/catch/finally

  1. 太多错误被当作异常
  2. 很多C++项目组禁用try/catch
  3. 正确的使用try/catch处理错误,导致代码混乱
  4. 在产品代码中try/catch并不能减小开发人员负担
  5. 真正异常情况有 defer/panic/recover 模式处理

没有构造/析构/RAII

  1. 大型项目很少使用构造函数,多使用工厂函数,如果需要,可直接使用结构体初始化语法实现
  2. go有gc,不需要析构

没有泛型

  1. 泛型实际想实现duck typing,go语言提供了duck typing及接口组合支持
  2. 使用来约束参数类型:本身复杂,但go自带slice,map,channel 类似泛型参数
  3. type assertion、go generation来实现自己的泛型
  4. 泛型支持是作者唯一态度不强硬的点

todo