Go 语言由三位大佬共同创造,他们分别是
Ken Thompson,图灵奖获得者,Unix 系统创始人,B 语言创始人,C 语言创始人
Rob Pike,Plan9 操作系统作者之一,UTF-8 发明者之一,Go 语言设计领头人
Robert Griesemer,JS V8 引擎研发者,三人之中最年轻
还有一位是 Rob Pike 的妻子 Renee French,她设计了 Go 语言的 Logo,就是一只蓝色的土拨鼠。

在某一天,三位工程师在漫长的 C++项目编译等待过程中感到十分无聊,正是在这个时刻,Rob Pike 脑海中突然闪现出一个新颖的构想:他希望设计一种简洁、小巧、编译快速,同时拥有不俗性能的编程语言,这样他们就不再需要每次编译时都面临漫长的等待。经过一番短暂的头脑风暴,三人于 2007 年 9 月 20 日召开了一个简短的会议,开始讨论和设计这门语言的初步原型,正是从这个时刻起,Go 语言正式诞生了。随后,这个小团队吸引了越来越多的志同道合的开发者,最终在 2009 年 11 月 10 日,谷歌公司正式将 Go 语言以 BSD-3-Clause 协议开源,并推出了第一个先行版本,并组建了正式的开发团队。
值得一提的是,你可能会在其它地方看见有人叫它Golang,包括本站的Github仓库名也叫Golang-Doc,但它的官方名字其实是一直是Go,早期的时候由于go这个域名被抢注了,所以官网的域名就采用了 golang.org,以至于后面新来的人误以为它就叫Golang。

再之后,Go团队经过了三年的设计与研发,于 2012 年 3 月发布了第一个正式版本 Go1.0(这个时候 Go 的工具链和运行时都还是 C 语言编写的,直到 Go1.5 才完成自举),此后每一年发布两个小版本更新,一直运营和维护到现在。
三位创始人其实在很早以前就退隐了,在大部分时间里,团队领头人是Russ Cox,他早在 Go 语言未对外发布时就已经参与到了开发工作当中,此后一直管理 Go 团队长达 12 年,直到 2024 年 8 月卸任,由Austin Clements接手并领导后续的开发工作。、
如果你想深入了解 Go 语言的历史,前往Go History了解更多内容。
语法简单 Go 语言在自由度和灵活度上做了取舍,以此换来了更好的维护性和平滑的学习曲线。
部署友好 Go 静态编译后的二进制文件不依赖额外的运行环境,编译速度也非常快。
交叉编译 Go 仅需要在编译时简单设置两个参数,就可以编译出能在其它平台上运行的程序
天然并发 Go 语言对于并发的支持是纯天然的,仅需一个关键字,就可以开启一个异步协程。
垃圾回收 Go 有着优秀的 GC 性能,大部分情况下 GC 延时都不会超过 1 毫秒。
丰富的标准库 从字符串处理到源码 AST 解析,功能强大且丰富的标准库是 Go 语言坚实的基础。
完善的工具链 Go 有着完善的开发工具链,涵盖了编译,测试,依赖管理,性能分析等方方面面。
Go 语言抛弃了继承,弱化了 OOP,类,元编程,泛型,Lamda 表达式等这些特性,拥有良好的性能和较低的上手难度,它适合用于云服务开发,应用服务端开发,以及网络编程。它自带 GC,不需要开发者手动管理内存,静态编译和交叉编译这两点对于运维而言也十分友好。
Go 语言的缺点同样也有很多,比如令人诟病的错误处理,残缺的泛型,标准库虽然很丰富但内置的数据结构却没几个,interface{}类型满天飞,没有枚举类型,除此之外,Go 开发团队非常固执己见,不善于听取社区意见等等。(相比之下,Rust 在错误处理,泛型,依赖管理,枚举,接口等方面做的要好得多)
总的来说,我们需要辩证的看待一门语言,作为一门工程化的语言,Go 可以很大程度上提高团队的下限,就算开发人员水平再差也能兜底,很少出现一颗老鼠屎坏了一锅粥这种情况,同时因为简单的语法和较低的学习难度,可以让人很快的上手一个项目。尽管 Go 面世只有十余年不到,但已经有相当多的公司将 Go 作为了首选语言,也能侧面说明 Go 正在逐渐流行起来。
顺便一提,Go 还是一门完全开源的语言,由社区和谷歌共同维护 Go 语言的发展,官方地址是在谷歌仓库里,Github 上有一份同样的镜像仓库,如果有心你也可以参与到语言的设计当中。
官方网站:The Go Programming Language
谷歌开源仓库:google/go: Google Open Source
Github 仓库:golang/go: The Go programming language
提示
笔者曾经给 Go 提过 PR,如果你想了解如何给 Go 贡献代码,可以看看我写的这篇文章:如何向 Go 贡献代码。
相信很多人应该都或多或少听说过Rust,它是一个高性能的通用编程语言,其诞生时间比 Go 早一年,Go1 正式发布的时间是 2012 年,Rust 正式版发布时间为 2015 年,它们都是较为现代化的语言,这两门语言笔者都很喜欢,它们发展的领域各不相同,如果你不满足于 Go 的运行效率和表达能力,不妨试试 Rust,不过它的学习难度就远没有 Go 这么简单了。