关于本书¶
目标读者¶
Go 适用于各种水平的程序员,这对于任何大型项目来说都是至关重要的。 作为一种相对较为小型的语言,Go 的语法极少,需要掌握的概念也不多,因此它非常适合用作初学者的入门语言。
遗憾的是,很多学习 Go 语言的资源都假设读者拥有 C 编程语言的工作经验,而本书的目的则在于弥补这一缺陷,为脚本使用者、业余爱好者和初学者提供一条学习 Go 语言的康庄大道。 为了让起步的过程变得更容易一些,本书的所有代码清单和练习都可以在 Go 游乐场(play.golang.org)里面执行,你在阅读本书的时候甚至不需要安装任何东西。
如果你曾经使用过诸如 JavaScript、Lua、PHP、Perl、Python 或者 Ruby 这样的脚本语言,那么你已经做好了学习 Go 的万全准备;而如果你曾经使用过 Scratch 或者 Excel 的公式,又或者编写过 HTML ,那么你毫无疑问可以像 Audrey Lim 在她的演讲《初学者之心》(youtu.be/fZh8uCInEfw)中所说的一样,选择 Go 作为你的第一门“真正”的编程语言。 虽然掌握 Go 并不是一件容易的事情,这需要相应的耐心和努力,但我们希望本书在这个过程中能够助你一臂之力。
组织方式和路线图¶
本书将以循序渐进的方式讲解高效使用 Go 所必需的概念,并提供大量练习来磨砺你的技能。 这是一本初学者指南,旨在从头到尾地进行阅读,并且每个课程都建立在前面课程的基础之上。 本书虽然没有完整地描述 Go 的所有语言特性(详见golang.org/ref/spec),但是却涵盖了其中的绝大部分特性,并且提及了面向对象设计以及并发等高级主题。
无论你是打算使用 Go 编写大型的并发 web 服务,还是说只想用 Go 编写小型脚本和简单的工具,本书都会帮助你打下坚实的基础。
单元 1 将组合使用变量、循环和分支构建小型程序,其中包括问候程序和火箭发射器。
单元 2 将探索文本和数字类型。学习如何使用旋转 13 算法解码加密消息,调查 Arianne 5 号火箭解体的原因,并使用大整数计算光抵达仙女座星系所需的时间。
单元 3 将使用函数和方法模拟构建一个火星气象站,并使用温度转换程序处理传感器读数。
单元 4 将在展示数组和映射用法的同时地球化太阳系、统计温度出现的次数并模拟康威生命游戏。
单元 5 将引入一系列面向对象语言概念,并说明这些概念在 Go 这种独树一帜的非面向对象语言中是如何实现的。期间使用了结构和方法以便在火星表面自由穿梭,接着通过满足接口来改善输出,并在最后通过将一个结构嵌入至另一个结构来创建更大的结构。
单元 6 将深挖本质,研究如何使用指针实现修改,想办法战胜说 nil 的骑士并学习如何冷静地处理错误。
单元 7 引入了 Go 的并发原语,并在组建地鼠工厂装配线的时候,想办法让数以千计正在运行的任务能够互相通讯。
附录提供了练习的参考答案,但提出你自己的解答毫无疑问可以让编程变得更加有趣!
示例代码¶
为了区分代码和普通文字,所有代码都将使用 fixed-width
这样的等宽字体进行表示,并且很多代码清单都会使用注释以突出重要的概念。
你可以从 Manning 出版社的网页(www.manning.com/books/get-programming-with-go)里面下载所有代码清单的源代码,里面还包含了本书所有练习的答案。 你也可以通过访问以下这个 GitHub 页面来在线阅览这些源代码:github.com/nathany/getprogramming-with-go 。
尽管你可以从 GitHub 上面直接复制粘贴代码,但我们还是建议你亲手键入书中的示例代码。 通过亲手键入代码并修复其中的打字错误,然后试验这些代码,你将能够从书中收获更多知识。
书本论坛¶
Manning 出版社运营着一个私有的网络论坛,而购买《Get Programming with Go》则让你获得了自由访问该论坛的权利。 你可以在论坛上发表关于本书的评论和技术问题、分享你的练习答案,又或者向论坛上的作者和其他用户求助。 请使用你的网络浏览器指向 forums.manning.com/forums/get-programming-with-go 以访问和订阅该论坛,又或者在 forums.manning.com/ forums/about 中获得 Manning 论坛的更多信息以及行为准则。
Manning 承诺为读者提供一个场所,让每个读者都可以与其他读者以及作者产生有意义的对话。 但 Manning 并不保证作者参与讨论的程度,他们对于论坛的一切贡献都是无偿并且自愿的。 我们建议你尝试向作者提出一些有挑战性的问题以便引起他们的兴趣。 Manning 保证这个论坛以及过往讨论的存档将在本书正常销售期间一直对外开放。