深入理解Go语言
上QQ阅读APP看书,第一时间看更新

序一

受托写序,万分荣幸。翻看原稿后,如果用一句话评价,那就是“最重要、最核心的Go语言原理机制都在这本书里了!”

Go语言是一门非常新的语言,仅用10年时间就从世界上数以千计的编程语言中脱颖而出,必然有其独到的优势。Go语言最大的优势有两个:第一,学习成本低。对于已经掌握过一门以上编程语言的人,21天入门Go语言是完全可能的,你永远不需要在学了21年C++终于成为C++专家后,穿越到开始学习C++的第21天替换当时的自己,才能完成“21天学会C++”这件事情(经典老梗,读者可自行搜索“21天学会C++”的网络漫画)。第二,高性能。在Go语言诞生之前,学习成本低的语言只有脚本语言,例如Perl、Python、PHP、Lua等,但这些解释型的脚本语言和需要编译的静态语言相比,性能上有数量级的劣势。Go语言是一门静态、强类型的语言,需要编译成二进制文件来执行,如果不考虑GC的损耗,在性能上与C/C++差距不大,而且与主流语言通过共享内存进行并发控制的方式不同,Go语言通过Goroutine和Channel机制,实现了CSP并发编程模型,第一次从语言层面纯天然地支持了高并发场景,大大解放了程序员针对高并发场景使用I/O多路复用机制、通过事件驱动异步编程的心智,大大降低了开发高性能服务的门槛,也大大降低了缺陷代码的概率。这样一门学习成本低又高性能的语言,谁能不心动呢?

当然,Go语言并非万金油,每门语言都有自身最适合的领域,也有自身的局限性,甚至在某些时候,语言都不是最关键的要素。如果想把Go语言真正用好,使其发挥出巨大的威力,一定要对这个又新、又拥有很多精巧及创新的设计特性语言有足够深入的了解,要摸清楚它的“脾气”,如果姿势不正确,一定不会有一个好的体验。丹冰兄的这本大作,特别适合已经在使用Go语言进行开发工作,但对Go语言的核心机制一知半解,想去深入了解的程序员读者。丹冰兄是一个能把复杂的知识点抽丝剥茧、简单清晰、娓娓道来的高手,书中有丰富、形象的图文描述,能够帮助初识概念的读者在脑海里快速建立模型。除了对12个专题的深入分析外,还有多个章节的项目实战,读者可以跟着一起,从0到1地构建并设计实现Go语言的基于TCP/IP的网络服务器框架。理论和实践相结合,才能更好地把知识吸收内化。

我可以非常肯定地说,看完本书的读者,一定会对Go语言各方面底层原理有一个更全面、更透彻的了解,很多之前模糊的东西会变得清晰,很多之前碰到的问题也能恍然大悟。知其然更要知其所以然,才能在一个更高的层次去解决问题并设计开发出更好的系统。

感谢丹冰兄为广大程序员读者带来这么好的一本书,祝各位读者阅读开心,技术水平越来越高,用技术创造出更大的价值!

田 峰

好未来技术总监

2022年3月