《学习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 的修复。

谢谢大家!

125 thoughts on “《学习Go语言》中文版”

  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. 谢谢,由于精力原因,review 做得比较粗糙,错误不少。还有一些遗漏的 Go 自身变更的错误。抽空改进。

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

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

    感谢!!!

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

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

  18. 看了几天,非常明了!让我这个新手马上能试验起来了。
    只是一些语法似乎没把各种可能的情况以及不合法的情况都写出来,如: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种元素,非常方便。

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

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

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

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

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

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

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

Leave a Reply

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

As Golang beyond PHP