第一条原则: 追求简单,少即是多

任何的设计都存在着权衡与折中(tradeoff)
正如 Rob Pike 所说的那样:“Go 语言实际上是复杂的,但只是让大家感觉很简单”。这句话背后的深意就是“简单”选择的背后则是 Go 语言自身实现层面的复杂,而这些复杂性被 Go 语言的设计者“隐藏”起来了,就比如我们通过一个简单的关键字“go”就可以搞定并发,这种简单的背后其实是 Go 团队缜密设计和持续付出的结果。
Go1兼容性说明摘录Go1定义了两件事:第一,语言的规范; 第二,一组核心API的规范,即Go标准库的“标准包”。Go1的发布包括两个编译器套件gc和gccgo,以及核心库本身。编写符合Go1规范的程序将在该规范的生命周期内继续得到正确编译和运行。在某个不确定的点上,可能会出现Go2规范,但在那之前,在Go1的未来版本(Go 1.1,Go 1.2等)下,今天工作的Go程序仍应该继续正常工作。兼容性体现在源码级别上。版本之间无法保证已编译软件包的二进制兼容性。Go语言新版本发布后,源码需要使用新版本Go重新编译和链接。API可能会增长,增加新的包和功能,但不会以破坏现有Go1代码的方式进行。
在 Go 演化进入关键阶段(走向 Go2)的今天,有人曾经向 Go 核心团队提出这样一个问题:Go 后续演化的最大难点是什么?Go 的一名核心团队成员回答道:“最大的难题是如何能继续保持 Go 语言的简单”。
