版权声明 本书由北京图灵文化发展有限公司全球范围内出版。未经出版者书面许可,不 得以任何方式复制或者抄袭本书内容。 版权所有,侵权必究。 书 名 《Go 入门指南——The way to go(中文版)》 著 【比利时】Ivo Balbaert 译 陈佳桦 封面设计 董苗苗 版本信息 2013 年 定 价 0.00 元 阅读、书评、交流、勘误、意见或建议,欢迎您来到图灵社区! http://www.ituring.com.cn/ 反侵权热线 (010)51095186 译者序 在接触 Go 语言之后,对这门编程语言非常着迷,期间也陆陆续续开始一些帮 助国内编程爱好者了解和发展 Go 语言的工作,比如开始录制视频教程《Go 编 程基础》。但由于目前国内并没有比较好的 Go 语言书籍,而国外的优秀书籍 因为英文的缘故在一定程度上也为不少 Go 语言爱好者带来了一些学习上的困 扰,不仅为了加快扩散 Go 爱好者的国内群体,同时充分贯彻 Asta 谢 的为己 为人精神,本人在完成阅读这本名叫《The Way to Go》之后,决定每天抽出一 点时间来进行翻译的工作,并且以开源的形式免费分享给有需要的 Go 语言爱 好者。 尽管该书对目前 Go 语言版本来说有小部分内容相对过时,但是为当下不可多 得的好书,部分内容已获得作者同意根据当前 Go 语言版本进行修改。 该翻译版本已获得原作者(Ivo Balbaert)本人授权,并表示支持开源事业的 发展! 本书全面地讲解了 Go 学习者需要了解的知识,不仅涵盖了基础概念,同时也 包含一些项目开发中所涉及到的高级技巧。每个知识点的讲解和示例都非常完 备,部分章节在最后还会提供练习题以便学习者巩固及加深印象,是 Go 学习 者不可错过的一本经典书籍。 - 2 - Go 入门指南 前言 用更少的代码,更短的编译时间,创建运行更快的程序,享受更多的乐趣 对于学习 Go 编程语言的爱好者来说,这本书无疑是最适合你的一本书籍,这 里包含了当前最全面的学习资源。本书通过对官方的在线文档、名人博客、书 籍、相关文章以及演讲的资料收集和整理,并结合我自身在软件工程、编程语 言和数据库开发的授课经验,将这些零碎的知识点组织成系统化的概念和技术 分类来进行讲解。 随着软件规模的不断扩大,诸多的学者和谷歌的开发者们在公司内部的软件开 发过程中开始经历大量的挫折,在诸多问题上都不能给出令人满意的解决方案, 尤其是在使用 C++ 来开发大型的服务端软件时,情况更是不容乐观。由于二进 制文件一般都是非常巨大的,因此需要耗费大量的时间在编译这些文件上,同 时编程语言的设计思想也已经非常陈旧,这些情况都充分证明了现有的编程语 言已不符合时下的生产环境。尽管硬件在过去的几十年中有了飞速的发展,但 人们依旧没有找到机会去改变 C++ 在软件开发的重要地位,并在实际开发过程 中忍受着它所带来的令人头疼的一些问题。因此学者们坐下来总结出了现在生 产环境与软件开发之间的主要矛盾,并尝试设计一门全新的编程语言来解决这 些问题。 以下就是他们讨论得出的对编程语言的设计要求: • • • • 能够以更快的速度开发软件 开发出的软件能够很好地在现代的多核计算机上工作 开发出的软件能够很好地在网络环境下工作 使人们能够享受软件开发的过程 Go 语言就在这样的环境下诞生了,它让人感觉像是 Python 或 Ruby 这样的动 态语言,但却又拥有像 C 或者 Java 这类语言的高性能和安全性。 Go 语言出现的目的是希望在编程领域创造最实用的方式来进行软件开发。它并 不是要用奇怪的语法和晦涩难懂的概念来从根本上推翻已有的编程语言,而是 建立并改善了 C、Java、C# 中的许多语法风格。它提倡通过接口来针对面向对 象编程,通过 goroutine 和 channel 来支持并发和并行编程。 这本书是为那些想要学习 Go 这门全新的,迷人的和充满希望的编程语言的开 发者量身定做的。当然,你在学习 Go 语言之前需要具备一些关于编程的基础 知识和经验,并且拥有合适的学习环境,但你并不需要对 C 或者 Java 或其它 类似的语言有非常深入的了解。 对于那些熟悉 C 或者面向对象编程语言的开发者,我们将会在本书中用 Go 和 一些编程语言的相关概念进行比较(书中会使用大家所熟知的缩写“OO”来表 示面向对象)。 - 3 - 本书将会从最基础的概念讲起,同时也会讨论一些类似在应用 goroutine 和 channel 时有多少种不同的模式,如何在 Go 语言中使用谷歌 API,如何操作 内存,如何在 Go 语言中进行程序测试和如何使用模板来开发 Web 应用这些高 级概念和技巧。 在本书的第一部分,我们将会讨论 Go 语言的起源(第 1 章),以及如何安装 Go 语言(第 2 章)和开发环境(第 3 章)。 在本书的第二部分,我们将会带领你贯穿 Go 语言的核心思想,譬如简单与复 杂类型(第 4,7,8 章),控制结构(第 5 章),函数(第 6 章),结构与方 法(第 10 章)和接口(第 11 章)。我们会对 Go 语言的函数式和面向对象编 程进行透彻的讲解,包括如何使用 Go 语言来构造大型项目(第 9 章)。 在本书的第三部分,你将会学习到如何处理不同格式的文件(第 12 章)和如何 在 Go 语言中巧妙地使用错误处理机制(第 13 章)。然后我们会对 Go 语言中 最值得称赞的设计 goroutine 和 channel 进行并发和多核应用的基本技巧的 讲解(第 14 章)。最后,我们会讨论如何将 Go 语言应用到分布式和 Web 应用 中的相关网络技巧(第 15 章)。 我们会在本书的第四部分向你展示许多 Go 语言的开发模式和一些编码规范, 以及一些非常有用的代码片段(第 18 章)。在前面章节完成对所有的 Go 语言 技巧的学习之后,你将会学习如何构造一个完整 Go 语言项目(第 19 章),然 后我们会介绍一些关于 Go 语言在云(Google App Engine)方面的应用(第 20 章)。在本书的最后一章(第 21 章),我们会讨论一些在全世界范围内已 经将 Go 语言投入实际开发的公司和组织。本书将会在最后给出一些对 Go 语 言爱好者的引用,Go 相关包和工具的参考,以及章节练习的答案和所有参考资 源和文献的清单。 Go 语言有一个被称之为“没有废物”的宗旨,就是将一切没有必要的东西都去 掉,不能去掉的就无底线地简化,同时追求最大程度的自动化。他完美地诠释 了敏捷编程的 KISS 秘诀:短小精悍! Go 语言通过改善或去除在 C、C++ 或 Java 中的一些所谓“开放”特性来让开 发者们的工作更加便利。这里只举例其中的几个,比如对于变量的默认初始化, 内存分配与自动回收,以及更简洁却不失健壮的控制结构。同时我们也会发现 Go 语言旨在减少不必要的编码工作,这使得 Go 语言的代码更加简洁,从而比 传统的面向对象语言更容易阅读和理解。 与 C++ 或 Java 这些有着庞大体系的语言相比,Go 语言简洁到可以将它整个 的装入你的大脑中,而且比学习 Scala(Java 的并发语言)有更低的门槛,真 可谓是 21 世纪的 C 语言! 作为一门系统编程语言,你不应该为 Go 语言的大多数代码示例和练习都和控 制台有着密不可分的关系而感到惊奇,因为提供平台依赖性的 GUI(用户界面) - 4 - Go 入门指南 框架并不是一个简单的任务。有许多由第三方发起的 GUI 框架项目正在如火如 荼地进行中,或许我们会在不久的将来看到一些可用的 Go 语言 GUI 框架。不 过现阶段的 Go 语言已经提供了大量有关 Web 方面的功能,我们可以通过它强 大的 http 和 template 包来达到 Web 应用的 GUI 实现。 我们会经常涉及到一些关于 Go 语言的编码规范,了解和使用这些已经被广泛 认同的规范应该是你学习阶段最重要的实践。我会在书中尽量使用已经讲解的 概念或者技巧来解释相关的代码示例,以避免你在不了解某些高级概念的情况 下而感到迷茫。 我们通过 227 个完整的代码示例和书中的解释说明来对所有涉及到的概念和技 巧进行彻底的讲解,你可以下载这些代码到你的电脑上运行,从而加深对概念 的理解。 本书会尽可能地将前后章节的内容联系起来,当然这也同时要求你通过学习不 同的知识来对一个问题提出尽可能多的解决方案。记住,学习一门新语言的最 佳方式就是实践,运行它的代码,修改并尝试更多的方案。因此,你绝对不可 以忽略书中的 130 个代码练习,这将对你学习好 Go 语言有很大的帮助。比如, 我们就为斐波那契算法提供了 13 个不同的版本,而这些版本都使用了不同的 概念和技巧。 你可以通过访问本书的官方网站下载书中的代码,并获得有关本书的勘误情况 和内容更新。 为了让你在成为 Go 语言大师的道路上更加顺利,我们会专注于一些特别的章 节以提供 Go 语言开发模式的最佳实践,同时也会帮助初学者逃离一些语言的 陷阱。第 18 章可以作为你在开发时的一个参考手册,因为当中包含了众多的 有价值的代码片段以及相关的解释说明。 最后要说明的是,你可以通过完整的索引来快速定位你需要阅读的章节。书中 所有的代码都在 Go1 版本下测试通过。( 译者注:所有代码经作者同意将会 根据需要进行相关修改以在 Go1.1 版本下运行 ) 这里有一段来自在 C++、Java 和 Python 领域众所周知的专家 ruce Eckel 的 评论: “作为一个有着 C/C++ 背景的开发者,我在使用 Go 语言时仿佛呼吸到了新鲜 空气一般,令人心旷神怡。我认为使用 Go 语言进行系统编程开发比使用 C++ 有着更显著的优势,因为它在解决一些很难用 C++ 解决的问题的同时,让我的 工作变得更加高效。我并不是说 C++ 的存在是一个错误,相反地,我认为这是 历史发展的必然结果。当我深陷在 C 语言这门略微比汇编语言好一点的泥潭时, 我坚信任何语言的构造都不可能支持大型项目的开发。像垃圾回收或并发语言 支持这类东西,在当时都是极其荒谬的主意,根本没有人在乎。C++ 向大型项 目开发迈出了重要的第一步,带领我们走进这个广袤无垠的世界。很庆幸 - 5 - Stroustrup 做了让 C++ 兼容 C 语言以能够让其编译 C 程序这个正确的决定。 我们当时需要 C++ 的出现。” “之后我们学到了更多。我们毫无疑问地接受了垃圾回收,异常处理和虚拟机 这些当年人们认为只有疯子才会想的东西。C++ 的复杂程度(新版的 C++ 甚至 更加复杂)极大了影响了软件开发的高效性,这使得它再也不再适合这个时代。 人们不再像过往那样认同在 C++ 中兼容使用

pdf文档 Go入门指南——The Way to Go(中文版)

计算机 > Golang > golang > 文档预览
40 页 0 下载 463 浏览 0 评论 0 收藏 3.0分
温馨提示:如果当前文档出现乱码或未能正常浏览,请先下载原文档进行浏览。
Go入门指南——The Way to Go(中文版) 第 1 页 Go入门指南——The Way to Go(中文版) 第 2 页 Go入门指南——The Way to Go(中文版) 第 3 页 Go入门指南——The Way to Go(中文版) 第 4 页 Go入门指南——The Way to Go(中文版) 第 5 页
下载文档到电脑,方便使用
还有 35 页可预览,继续阅读
本文档由 user2021-02-28 14:58:10上传分享
给文档打分
您好可以输入 255 个字符
DocHub文库的中文名是什么?( 答案:多哈 )
评论列表
  • 暂时还没有评论,期待您的金玉良言