Skip to main content

Go编程哲学

一 Go语言的设计思想

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

二 Go语言中的设计争议

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