Go是一种计算机语言,很多人想学习Go语言,但不知道怎么学,下面惠州北大青鸟学术部老师给大家推荐绝对不能错过的五本Go语言书籍。

一、《The Way To Go》

该书成书于2012年3月,恰逢Go 1.0版本刚刚发布,作者承诺书中代码均可在Go 1.0版本上编译通过并运行。该书分为4个部分:1.为什么学习Go以及Go环境安装入门;2.Go语言核心语法;3.Go高级用法(读写、错误处理、单元测试、并发编程、socket与web编程等);4.Go应用(常见陷阱、语言应用模式、从性能考量的代码编写建议、现实中的Go应用等)

该书作者Ivo Balbaert想必大多数人都不曾耳闻。为了写本文,我特地研究了一下他的作品以及出版时间,发现这个技术作者是很会“抢先机”并且眼光独到。他总是能发现市面刚出现不久但却很有潜力的编程语言并在其他人了解该门语言之前,就编写出类似“The way to Go”这样的为早期语言接纳者提供的详实资料,包括Julia,Rust等。在很多人还不知道这些语言名字的时候,他就已经开始学习这些语言,并为这些语言编写出质量很高的“百科全书”式的书籍。

很遗憾,这本书没有中文版。这可能是由于本书出版太早,等国内出版社意识到要引进Go语言方面的书籍时,这本书使用的Go版本又太老了,虽然本书中绝大部分例子依然可以在今天最新的Go编译器下通过编译并运行起来。不过无闻在github上发起了这本书的中译版项目:https://github.com/Unknwon/the-way-to-go_ZH_CN,感兴趣的gopher可以去在线或下载阅读。


二、《Go 101》 

这是一本在国外人气和关注度比在国内高的中国人编写的英文书,当然也是有中文版的。

如果仅从书名中的101去判断,你很大可能会认为这仅仅是一本讲解Go入门基础的书,但这本书的内容可远远不止入门这么简单。这本书可大致分为三个部分:1.Go语法基础;2.Go类型系统与运行时实现;3.以专题(topic)形式阐述的Go特性、技巧与实践模式

除了第一部分算是101范畴,其余两个部分都是Go语言的高级话题,也是要精通Go必须要掌握的“知识点”。并且,结合Go语言规范,作者对每个知识点的阐述都细致入微并结合大量示例辅助说明。我们知道有关C和C++语言,市面上有一些由语言作者或标准规范委员会成员编写的annotated或rationale书籍(语言参考手册或标准解读),Go 101这本书也可以理解为Go语言的标准解读或参考手册。

Go 101这本书是开源电子书,其作者也在国外一些支持自出版的服务商那里做了付费数字出版。这使得这本书相对于其他纸板书有着另外一个优势:与时俱进。在作者的不断努力下,该书的知识点更新基本保持与Go的演化同步,目前其内容已经覆盖了最新的Go 1.15版本。

该书作者为国内资深工程师老貘,他花费三年时间“呕心沥血”完成此书并免费奉献给Go社区,值得大家为其大大的点赞!


三、《Go语言学习笔记》

这是一本在国内影响力很大和关注度较高的作品。一来其作者雨痕老师是国内资深工程师,也是2015年第一届GopherChina大会讲师;二来,该作品的前期版本是以开源电子书的形式风险给国内Go社区的;三来,作者在Go源码剖析方便可谓之条理清晰,细致入微。

2016年《Go语言学习笔记》纸版书出版,该书覆盖了当时最新的Go 1.5版本,Go 1.5版本在Go语言演化历史中的分量极高,它不仅实现了Go自举,还让Go GC的延迟下降到绝大多数应用可以将其应用到生产的程度。本书整体上分为两大部分:

Go语言详解:以短平快、捞干的来的风格对Go语言语法做了说明,能用示例说明的,绝不用文字做过多修饰。

Go源码剖析:这是本书精华,也是最受Gopher关注的部分。这部分对Go运行时神秘的内存分配、垃圾回收、并发调度、channel和defer的实现原理、syn.Pool的实现原理做了细致的源码剖析与原理总结。

随着Go语言演化,其语言和运行时实现一直在变化,但Go 1.5版本的实现是后续版本的基础,因此这本书的剖析非常值得每位Gopher阅读。从雨痕老师的github上最新消息来看,他似乎在编写新版Go语言学习笔记,基于Go 1.12版本,剖析源码是枯燥繁琐的,期待新版Go学习笔记早日与Gopher们见面。


四、《Go语言实战》

在出版Go语言实战方面,该出版社也是丝毫不敢怠慢,邀请了Go社区知名的三名明星级作者联合撰写了该书的内容。这三位作者分别是:威廉·肯尼迪 (William Kennedy) - 知名Go培训师,培训机构Ardan Labs的联合创始人,"Ultimate Go"培训的策划实施者。

布赖恩·克特森 (Brian Ketelsen) - 世界上最知名的Go技术大会 - GopherCon大会的联合发起人和组织者,GopherAcademy创立者,现微软Azure工程师

埃里克·圣马丁 (Erik St.Martin) - 世界上最知名的Go技术大会 - GopherCon大会的联合发起人和组织者

本书并不是大部头,而是薄薄的一本(中文版才200多页),因此你不要期望从本书得到百科全书一样的阅读感。本书的作者们显然也没有想将其写成面面俱到的作品,而是直击要点,即挑出Go语言和其他语言相比与众不同的特点进行着重讲解,这些特点构成了本书的结构框架:

入门:快速上手搭建、编写、运行一个go程序

语法:数组(作为一个类型而存在)、切片和map

Go类型系统的与众不同:方法、接口、嵌入类型

Go的拿手好戏:并发及并发模式

标准库常用包:log、marshal/unmarshal、io(Reader和Writer)

原生支持的测试

读完这本书,你就掌握了Go语言的精髓之处,这迎合了多数gopher的内心需求。本书中文版译者Googol Lee也是Go圈子里的资深gopher,翻译质量上乘。


五、《Go程序设计语言》

如果说由Brian W. Kernighan和Dennis M. Ritchie联合编写的《The C Programming Language》(也称K&R C)是C程序员(甚至是所有程序员)心目中的“圣经”的话,

本书模仿并致敬“The C Programming Language”的经典结构,从一个"hello, world"示例开始带领大家开启Go语言之旅。第二章程序结构是Go语言这个“游乐园”的向导图,了解它之后,我们就会迫不及待地奔向各个“景点”细致参观。Go语言规范中的所有“景点”在本书中都被覆盖到了,并且由浅入深,循序渐进:从基础数据类型到复合数据类型、从函数、方法到接口、从创新的并发goroutine到传统的基于共享变量的并发,从包、工具链到测试,从反射到低级编程(unsafe包)。作者行文十分精炼,字字珠玑,这与《The C Programming Language》的风格保持了高度的一致。书中的示例在浅显易懂的同时,又极具实用性并突出Go语言的特点(比如:并发web爬虫、并发非阻塞缓存等)。



Go语言.png

图片来源于网络

标签:惠州北大青鸟北大青鸟惠州Go语言惠州Go语言培训Go语言培训