序二
FOREWORD

Go语言诞生距今已有十余年,我最开始使用Go语言还是在2012年,当时Go语言的1.0版本刚刚发布,虽然继承了Plan 9的衣钵,却有很多让人诟病的地方。我们当时用Go语言实现了一些HTTP Client和网络爬虫业务,虽然编写过程十分顺畅,但是会遇到goroutine和GC的性能和其他稳定性的问题,于是就变成了一次浅尝辄止的尝试。

随着时间的推移,我再次在业务中使用的Go语言已经到了1.4版本,它的稳定性问题已得到了解决。很快,随着Go 1.5版本的发布,GC性能问题也不复存在,Go语言终于成长为一门优秀的开发语言。而随着最近几次版本的新特性——泛型的加入,Go语言在表达能力上获得更进一步的提升,未来十分可期。

我大部分时间在用Go语言写服务器端程序,但也用Go语言写过客户端程序,写过PoC,写过DSL,写过JIT,甚至写过嵌入式程序的通信界面,Go语言现在对我来讲已经成为相当称手的工具。选择Go语言进行开发意味着快速、便捷、高性能,甚至它已经成为云原生的代名词。

在我最初接触Go语言的时候,当时唯一一本Go语言的书籍就是许式伟老师编写的《Go语言编程》,可以说是大家用中文学习Go语言的唯一途径,而现在则不断有很棒的中文书籍问世。《深度探索Go语言——对象模型与runtime的原理、特性及应用》直接从底层开始,为大家介绍需要的汇编基础知识,紧接着从指针、函数、goroutine逐步深入,不断剖析Go语言原理,让大家获得最贴近实现原理的知识。拨开运行时的迷雾,不必猜测编写的Go语言代码运行时的行为,真正地让大家掌握Go语言全部的精髓。可以毫不夸张地说,这是一本Go语言的High-End图书。

书中作者先用示例代码描述原理和概念,然后辅以图例说明,最后使用对应生成的汇编代码予以佐证,可以说是学习Go语言底层知识的最佳途径。我阅读Go语言源代码特别喜欢直接在Go语言源码中进行Hack,得益于Go语言的编译速度,Hack完毕后进行编译,然后测试修改结果也十分迅速,这无疑提升了学习速度。建议大家不要怕源代码,只有在源代码中才能洞悉设计者的真正意图,才能理解设计所面临的工程问题和解决方案的精妙之处。

相信大家看完本书后,一定会受益匪浅,水平得到质的提升!

张旭红

金山办公Exline技术副总监,掘金技术社区前技术总监