## 一 Go语言的设计思想 - 少即是多: - 很少的语法特性 - 满足语言特性的正交性:多个组成因子中,一个发生变化,不会影响其他因子变化。Go中的goroutine、interface、类型系统的组合能够极大增强Go的表现力 - 把一种事情做到极致,而不是提供多个选择。如 for 循环一个关键字可以替代 for、while、do while三种C语言的场景 - 组合优于继承:世界由万物组合而成,而不是万物皆对象。继承关系只是世界表象中一个很小的子集,组合才是世界组成的根本。 - 非侵入式接口:Go的接口采用了一种Duck模型,具体类型不需要显式的声明自己实现了某个接口,只要方法集是接口方法集的超集即可。接口类型的是否实现判断交给了编译器处理,该方式让接口和实现者之间实现了解耦。 ## 二 Go语言中的设计争议 - 包管理:饱受诟病!!但是在go1.13中得到大幅改善(1.11中即可开启新版包管理方式) - 错误处理:Go的错误处理简单粗暴,但是绝对不优雅! - 泛型支持:Go没有泛型支持,笔者认为无法容忍!