《学习Go语言》中文版

这是关于来自Google 的Go 语言的简介。目标是为这个新的、革命性的语言提供一个指南。

什么是Go?来自于网站:

Go 编程语言是一个使得程序员更加有效率的开源项目。Go 是有表达力、简洁、清晰和有效率的。它的并行机制使其很容易编写多核和网络应用,而新奇的类型系统允许构建有弹性的模块化程序。Go 编译到机器码非常快速,同时具有便利的垃圾回收和强大的运行时反射。它是快速的、静态类型编译语言,但是感觉上是动态类型的,解释型语言。

这本书的目标读者是那些熟悉编程,并且了解多种编程语言,例如C,C++,Perl,Java,Erlang,Scala,Haskell。这不是教你如何编程的书,只是教你如何使用Go。

本书代码托管于 github

英文版由 Miek Gieben 维护。。

用 git 克隆项目:

git clone git://github.com/mikespook/Learning-Go-zh-cn.git

然后根据 README.md 中的内容安装所需依赖包,编译即可得到 pdf。

编译好的成品这里下载:《学习Go语言》中文版(20131116)

  • 【20130723】同步到英文版 2013-11-16。
  • 【20130723】同步到英文版 2013-06-12。
  • 【20120730】同步到英文版 2012-07-27。修改CJK方式。
  • 【20120608】改进了第三章的细节格式,对一些中文表达进行了调整。
  • 【20120428】改进了前言、第一章、第二章的细节格式,修复了一些错误。
  • 【20120409】同步到英文版 2012-04-09,标记为 1.0 版本。
  • 【20120210】同步到英文版 2012-02-08,更新了 Go-1 的工具变化。
  • 【20120110】更新部分 Go-1 的内容。
  • 【20111110】发布0.4版,同步到英文的 2011-10-25,增补 Windows 部分安装。
  • 【20110914】发布0.4版 6 寸屏幕版本(for Kindle)供试读。
  • 【20110904】发布0.4版供试读。
  • 【20110607】发布完整翻译内容供试读。
  • 【20110603】发布第一章至第七章内容供试读。
  • 【20110527】发布第一章至第六章内容供试读。
  • 【20110501】发布第一章至第五章内容供试读。
  • 【20110418】发布第一章至第四章内容供试读。
  • 【20110413】发布第一章、第二章内容供试读。

鉴于我个人精力有限,建议有能力的同学通过 Pull requests 功能向这本书提交补丁,以便加快 issue 的修复。

谢谢大家!

Join the Conversation

148 Comments

  1. 在第12页有一个错别字:夸
    Go 是第一个实现了简单的(或更加简单的)并行开发的、夸平台类C 语言。

  2. 这本书的第20页谈到slice的len和cap的时候有个错误。当数组array的类型是[m]int,而slice=array[0:n]时,cap(slice)应该等于m,而不是n。原书中都弄成cap(slice)=n了。

  3. 已经持续跟进翻译到了Go1,真正不容易,在下载阅读的同时,说声感谢~~~

  4. 包的文档模块,func Printf(format string, a …interface) (n int, err error),接口类型应该是interface{}

  5. 进阶/转换
    从string到字节或者整形的slice。
    mystring := “hello this is string”
    byteslice := []byte(mystring)
    转换到byteslice,每个byte保存字符串对应字节的整数值。注意Go的字符串是UTF-8编码的,一些字符可能是1、2、3或者4个字节结尾。
    intslice := []int(mystring)

    string类型强转[]int编译不通过

  6. 谢谢!第一个和第二个已经修复,不过还没发布编译版。其他也已经在代码里修复了。并且向原版提交了补丁。

  7. 麻烦请顺便把kindle版也更新一下,多谢辛苦劳动!
    对着电脑看太累了,还是在kindle上看舒服

  8. kindle 的排版一直都没有维护,很多格式会有问题,所以就没有更新了。如果有条件,可以 clone 代码回来自己编译。

  9. 网页上下载不了…..
    用svn 提示403…
    博主能不能把把它转移到别的地方。

  10. 博主辛苦了!
    不好意思,请问可以生成html版本共享出来吗?那样的话转换成epub/mobi格式就可以在手机上看了。我有kindle,但只有手机是随身携带的。希望可以在手机上随时学习。^_^

  11. 中文版第19页中间:

    array、slice 和map 的复合声明变得更加简单。使用复合声明的array、slice
    和map,元素复合声明的类型与外部一直 —> 一致

    48页中间:
    名称以大写字幕 —>字母

    51页中间

    并且相关的细节会跟随气候 —>其后

  12. 谢谢楼主的付出。

    提点意见或建议:
    1 有些表述是英文直译,语感生涩。
    2 有些手误,比如个别地方对应的英文句子没删干净。
    3 UTF8的code point不该译为“编码的指针”吧,类似“编码点”的翻译更好。
    4 A19中的os.Open应为os.OpenFile,e.String()应为e.Error()。

  13. 做的十分好,go语言作为一门新鲜的语言潜力巨大,能有这样的书籍引进门,真可谓喜事啊!感谢您的精彩工作!

  14. 哈,为了LZ的这本书,专门买了个Kindle PaperWhite,弄了半天,PDF的效果都不是很好,结果今天又转回这里,发现居然有Kindle版的,欣喜若狂。。。

    感谢!!!

  15. 感谢作者,特别感谢译者。
    如果能像《build web application with golang 》一样用makedown直接在github上阅读就好了。pdf在很多场合下看的不是很舒服。我第一次使用github阅读,就是前面说的这本书,一周就看完了,从来没有想过自己看书效率这么高。
    甚至,如果作者不提供makedown版本,我都想自己把《学习Go语言》转成makedown书写了。

  16. 书下载不了,微盘的也不行,求下载地址,或者邮件我,万分感谢

  17. 看了几天,非常明了!让我这个新手马上能试验起来了。
    只是一些语法似乎没把各种可能的情况以及不合法的情况都写出来,如:if还可以【if 语句1;条件 {】而【if 语句1;语句2;条件 {】则报错。
    另外,defer的效果,好像也是非常复杂:
    defer语句和defer匿名函数、操作的变量类型(全函数有效、返回值、for有效)与修改方式(函数里修改、defer匿名函数里修改)导致的影响完全不同!如:http://bbs.csdn.net/topics/390571159 的7#。
    另外,高效的类型转换,如c的itoa,go似乎没有?只能通过Sprint?
    日期时间转字符串,输出格式好像也没精确的指示?delphi是【yyyy-mm-dd hh:nn:ss.zzz】可以任意组合这7种元素,非常方便。

  18. 没有编译好的,只能自己编译了。编译好的我放到我的微盘上了:http://vdisk.weibo.com/s/z-h6cvwYjW-WC ,有需要的可以去直接下载了。

  19. lz啊,怎么下载下来是英文的,我下载代码编译了还是英文?

  20. 感谢博主的翻译,很精确,很到位,

    排版也很优美,犹如纸质书一般

    非常感谢!

  21. 我在获取
    go get github.com/mikespook/goemphp/php
    时 ,报了下面错,请问什么原因导致的
    9:11: fatal error: ‘zend.h’ file not found
    #include “zend.h”
    ^
    1 error generated.

  22. 你好,请问你在github 上的 tex 文件代码包 如何在windown + ctex 这个环境下编译呀?我没有找到入口。

    (我用的是windows 下的 CTEX,)

  23. 抱歉,我自己没有 windows 的环境,不是很清楚有什么依赖的包。不过按照 Ubuntu 下的 tex 依赖的包安装完整,应该是不会有问题的。

  24. font size is too small. any way to make the fontsize bigger?

    thanks,

  25. 感谢你的译本,基本掌握了Go语言的编程,不知可否介绍一些开源的项目,以便进一步学习,非常感谢!

  26. 这里要请教作者一个事情了,本书的原著应该是由Miek Gieben制作的吧?(从git提交历史也能明显的看出来,同时您给的原著链接已失效,正文请看:https://miek.nl/go/)
    而作者您本人应该更多是做了英文翻译的工作,但感觉作者博文及书中并未明确说明,给人的感觉反而是英文版是从您这翻译过去的(原话:“英文版由 Miek Gieben 维护。。”),而且pdf中竟未给出原作者的链接(反而是列举了一个俄文的作者。。。)。
    所以我在此求证一下,请作者本人给原作一个明确的说明和链接。

  27. Miek 撰写了英文版,然后大家翻译了各个语言的版本。然后分别维护。抱歉,中文版我已经放弃维护了。早期国内没有人写 Go 相关的东西,那时候还很有必要。现在阿猫阿狗都在著书立传我维护也没有什么实际意义。PDF 的版本是沿用了 Miek 的模板,所以有什么没有什么各个版本都差不多。你要是有疑问,可以写信给 Miek 直接问他。我们断断续续有些书信来往,涉及私人信息,不能公开给你。BUT (everything has the BIG BUT),你要是纯粹找茬,那抱歉了,滚粗不送,哈哈哈~~

  28. 我git clone下載了。放到CentOS中下了make,顯示缺少xelatex,然後查google下了yum install texlive-xetex指令安裝後,再下make,顯示缺少xelatex.fmt,看來不行。請問該怎麼做才能產生pdf檔?

  29. To gopher:基本上對人著作有質疑,不能說是不對。但是在沒有證據之前,也許對方是善意的。要求證,是不是態度也應該好一點?像你po文內容,明顯充滿惡意(雖然你本人認不是,但旁人怎麼看都覺得是)。做人要留點餘地!雖然我來自台灣,但我想做人態度的教育,放諸四海皆同吧。作者願意翻譯成中文,這點是不是應該先表示謝意,再來做質疑?你爸媽沒教你這個嗎?(不好意思!惡人者人恆惡之)>”<

  30. 读读你之前的质疑,你的话送你自己的确很合适。不过呢,要体现 critical thinking 大可不必在我这小庙里瞎折腾。另外,虽然你必费心强调,但是你来自哪里我确实不太关心。只是,不论是台湾还是大陆,都已经不流行文字狱了,抓着一两个词吹毛求疵,会跟不上时代的。吹吹灰,不送啦。Life is short~ LOL

Leave a comment

Your email address will not be published. Required fields are marked *