当第一次使用Go语言时,就发现它是一种有潜力的语言。我们想利用它来构建应用程序。但它毕竟是一种新的语言,许多公司都对引入一种新的编程语言充满着疑虑。
在Go语言对其有可能产生巨大影响的企业中更是如此。一种新的编程语言要面临着能否被信任、被接受、被采用等挑战。在很多企业中,有成千上万的编程语言的研发者。但是往往这些企业的领导人都是被动地去尝试一种新的语言,这就需要语言的研发者们能掌握好的技术来构建应用程序,以期让企业能看到收益。
开源项目、会议、培训和书籍等都是有助于人们更容易掌握编程语言的一些途径。我们想写一本教授Go语言的书,旨在帮助Go社区的人们,帮助那些想学习Go语言或者试图说服他们企业的领导学习Go语言的人们,还可以为我们所工作的公司和我们自己的工作提供帮助。
我们开始写这本书时,最直接的目标本是想利用Go语言进行云开发。所以Go语言起初本是一种为云开发而构建的语言,而且在云计算方面我们也已经花了数年的工作时间。但与曼宁出版社刚开始合作时,我们就看到了一个远超出云计算的扩展研究范围的机会,这是一种更实用、更有帮助的模式。所以这本书的主旨也从最初的聚焦云计算转换成了聚焦模式。不过,本书仍然保留了云计算作为其根源。
我们希望Go语言实践训练这本书能帮助开发人员实现从熟悉Go语言到富有成效地应用Go语言的转变。希望此书能有助于开发者社区的成长,也希望能为社区的组织编写出更好的软件提供帮助。
当听说马特法里纳和马特布彻准备合作出一本关于Go语言的新书时,我真的很激动。他们两人近几年在Go语言生态系统的研究中都有着重大的贡献,而且二人丰富的工作经验和工作背景将为此书增添散文般的韵味。这本书旨在以Go语言的实际应用为目的,使读者在掌握基本的Go语言知识的基础上进行更多的实践训练。
本书分为4个部分,这4部分都比较容易理解,而且每一部分都有各自不同的侧重点。
第1部分是Go语言重要概念的复习。着急学习本书且对自己Go语言技能的掌握还算满意的读者,完全可以跳过本章节的学习,但我不建议这样做。回顾最后的手稿,我有了非常珍贵的发现,我认为每个人都将从这些章节中受益。
第2部分深入阐述了在现实世界中Go应用程序的管理机制。本书中讲述程序错误的章节是我读过的关于如何处理Go程序错误的最好的文章,其关于程序的调试和测试的章节为Go应用程序的开发提供了重要的中间步骤,这就使得Go应用程序实现了从初步的概念证明到可靠的生产系统的转变。
第3部分介绍了如何为应用程序创建用户界面。有关模板的章节对Go语言生态系统中的复杂部分的学习是一个很好的指南。在这一不部分中,读者将会学到重新启用模板的实际可行且能够使Web接口更加简洁的方法。这本书物超所值,因为要找到很容易地映射到实际应用程序的例子模板,是非常困难的。本部分在接下来的部分还将介绍如何创建和使用符合标准的REST API以及掌握如何正确版本化该API。
第4部分深入介绍了交互操作方面的知识,这是当今大部分应用程序都所需要的。本章节将着重介绍云基础设施以及Go语言在云计算模型中的适用位置。最后全面介绍了微服务器和服务到服务的通信模式。
无论是对Go语言的初学者还是对已经在使用Go语言编程的人员来说,这本书都可以为他们提供很重要的知识,帮助他们把应用程序的开发提升到一个新的层次。为将本书中复杂的信息转化为比较容易理解的知识点,作者为此做了大量的工作。这本书能够出版并且将它的价值带到社区,我真的很高兴。我希望您也会像我一样喜欢阅读它。
有的编程语言简洁,比如Java,PHP;有的编程语言优雅,比如Lisp,Python;既简洁又优雅的编程语言,到目前为止恐怕要非Go语言莫属了。而Go的优势远不止于此,它在目标机器上只需一个基础的系统和一些必要的管理、监控工具即可运行,完全不需要关心其它应用程序常常所需要的各种包、库的依赖关系,这大大减轻了维护的负担;Go语言中的Goroutine和channel工具使高并发服务端软件的编写变得相当容易,很多情况下甚至完全不用考虑锁机及由此带来的各种问题;最主要的一点也是作为我们计算机专业教师最看重的一点是:Go语言学习难度低,上手比较快。
鉴于Go语言的以上这些优势,我们对Go产生了浓厚的兴趣。因此当我们看到《Go in Practice》这本书时,我们欣喜若狂。因为无论是对Go语言的初学者还是对已经在使用Go语言编程的人员来说,这本书都可以为他们提供很重要的知识,帮助他们把应用程序的开发提升到一个新的层次。所以我们决定申请翻译这本书。
当我们收到机械工业出版社的丁成编辑寄来的英文原著时,我们几个计算机专业的教师组成了一个翻译小组,利用业余时间翻译。其中刘燕燕、金燕、肖加标完成了大部分工作:
刘燕燕:本次翻译活动的倡议者和联络人,翻译了第6、7、8、9、10、11章以及索引部分。
金燕:翻译了第3、4、5章,还帮助分析、翻译了全书各章中的疑难句子。
肖加标:翻译了前言、序、鸣谢、关于本书、作者简介、关于封面插图和第1、2章。
在本书的翻译过程中,我们不放过任何一处疑点,常常为了把一条命令或一个参数彻底搞清楚而去查阅大量资料。翻译的过程也是一个磨练意志的过程,为此我们放弃了业余陪伴家人的时间,凑在一起琢磨一些疑难句子的翻译。最终,我们用了五个月的时间完成了本书的翻译工作。
感谢我们的父母、爱人和孩子对我们的理解和支持,感谢同事程继洪在翻译过程中给予我们的帮助。谢谢你们!