本书通过大量的代码示例,对Go特性进行了清晰的描述,并将它们与类似的Java特性进行了对比。本书以Java的视角,全面地介绍了Go的基础知识以及优秀应用程序。读完这本书,读者将对Go及其库有足够的了解,从而开始使用Go语言进行编程。本书还介绍了Go的重要软件包,为计划使用Go的开发人员提供了针对很多问题的现成工具。
本书清晰地描述了Go功能,并将其与类似的Java功能进行对比,以及通过大量的代码示例来教授Go。阅读本书后,你将对Go及其库有足够的了解,从而开始使用Go语言进行有效的编程。本书主要面向专业Java程序员或对Java有一定了解的读者,在结构上更像是一个教程,而不是参考文档。内容涵盖了Go的关键功能,但并没有详细讨论每一个细节。本书的目标是让读者完全掌握Go及其运行时,从而可以有效地编写Go程序。
自20世纪90年代中期首次亮相以来,Java获得了巨大成功。相比于其他语言,Java在Web应用程序和关键数据处理(例如大数据工具)领域扮演了重要角色。除此之外,Java在操作系统和硬件架构之间的高度可移植性、丰富且不断改进的语言和函数库,与其良好的性能一起促成了它的成功。
但Java也有一些缺点。Java创建于面向对象编程刚刚规范化、网络传输代码刚刚规模化的时代。随之而来的问题是Java运行时(runtime)占用空间大、资源需求大。Java开发人员试图通过Java模块、标准库子集和Graal0虚拟机解决。但实现同样的功能,Go语言比Java语言更节省资源。
随着时间的推移,Java语言和运行时不再是众多现代(尤其是云平台)程序的最佳选择。另外,Java的持续发展带来了一个问题:人们很难全面掌握它。Go却是一门简单易懂的语言。
Go语言及其运行时相对较新,旨在满足现代云计算系统和其他系统编程任务的需求。很多人认为它是“比C更好的C”,可能替代C语言,因为Go是与C极为相似的语言。Go语言也可实现Java在服务器和应用程序方面的大部分功能。这是本书成书的原因。
现在,Go语言正在用于许多新应用程序的开发和已有应用程序的重构上。以前用Java开发的程序,可能选择Kotlin或ScalaJVM(都是基于Java虚拟机的语言)重构,但现在Go语言常常超越二者。例如,KhanAcademy使用Go重构其Python网站。由于Go具有类似脚本语言的易用性以及编译语言的高效性,因此常被用于重构。
巴里·费根鲍姆(Barry Feigenbaum),拥有数十年的软件工程相关经验,拥有计算机工程(专注于面向对象软件设计)博士学位和电气工程学位。他曾任职于IBM、Amazon等行业领先公司,目前就职于戴尔,担任高级首席软件工程师。他在技术杂志和评审期刊上发表了多篇文章,与人合著了几本关于IBMPC-DOS的书,并拥有20多项美国专利。