over-golang/03-工程管理/00-Go编程哲学.md
2021-07-02 18:11:59 +08:00

1.2 KiB
Raw Permalink Blame History

一 Go语言的设计思想

  • 少即是多:
    • 很少的语法特性
    • 满足语言特性的正交性多个组成因子中一个发生变化不会影响其他因子变化。Go中的goroutine、interface、类型系统的组合能够极大增强Go的表现力
    • 把一种事情做到极致,而不是提供多个选择。如 for 循环一个关键字可以替代 for、while、do while三种C语言的场景
  • 组合优于继承:世界由万物组合而成,而不是万物皆对象。继承关系只是世界表象中一个很小的子集,组合才是世界组成的根本。
  • 非侵入式接口Go的接口采用了一种Duck模型具体类型不需要显式的声明自己实现了某个接口只要方法集是接口方法集的超集即可。接口类型的是否实现判断交给了编译器处理该方式让接口和实现者之间实现了解耦。

二 Go语言中的设计争议

  • 包管理饱受诟病但是在go1.13中得到大幅改善1.11中即可开启新版包管理方式)
  • 错误处理Go的错误处理简单粗暴但是绝对不优雅
  • 泛型支持Go没有泛型支持笔者认为无法容忍