Go语言与其他语言不一样的地方
/ / 点击没有:类、继承、多态、重载 的概念
- 不同世界观: go语言中使用 duck typing,面向接口编程、函数式编程
- 面向对象的世界里,也流行变继承为组合的思维
- 面向对象的元素容易被滥用
- 为组合提供了便捷的支持
没有:try/catch/finally
- 太多错误被当作异常
- 很多C++项目组禁用try/catch
- 正确的使用try/catch处理错误,导致代码混乱
- 在产品代码中try/catch并不能减小开发人员负担
- 真正异常情况有 defer/panic/recover 模式处理
没有构造/析构/RAII
- 大型项目很少使用构造函数,多使用工厂函数,如果需要,可直接使用结构体初始化语法实现
- go有gc,不需要析构
没有泛型
- 泛型实际想实现duck typing,go语言提供了duck typing及接口组合支持
- 使用来约束参数类型:本身复杂,但go自带slice,map,channel 类似泛型参数
- type assertion、go generation来实现自己的泛型
- 泛型支持是作者唯一态度不强硬的点
todo
全文完。