回到简体

This commit is contained in:
chai2010
2016-02-15 11:06:34 +08:00
parent 9e878f9944
commit 2b37b23285
177 changed files with 2354 additions and 2354 deletions

View File

@@ -1,21 +1,21 @@
## Go言起源
## Go言起源
編程語言的演化就像生物物的演化似,一成功的編程語言的代一般都會繼承它祖先的優點;當然有時多種語言雜合也可能會産生令人驚訝的特性;有一些激的新特性可能併沒有先例。我可以通過觀察編程語言和硬件境是如何相互促、相互影的演化程而到很多。
编程语言的演化就像生物物的演化似,一成功的编程语言的代一般都会继承它祖先的优点;当然有时多种语言杂合也可能会产生令人惊讶的特性;有一些激的新特性可能并没有先例。我可以通过观察编程语言和硬件境是如何相互促、相互影的演化程而到很多。
展示了有哪些早期的編程語言對Go言的設計産生了重要影
展示了有哪些早期的编程语言对Go言的设计产生了重要影
![](../images/ch0-01.png)
Go言有候被描述“C類似語言”或者是“21世的C言”。Go從C語言繼承了相似的表達式語法、控製流結構、基礎數據類型、調用參數傳值、指等很多思想,有C言一直所看中的編譯後機器碼的運行效率以及和有操作繫統的無縫適配。
Go言有候被描述“C类似语言”或者是“21世的C言”。Go从C语言继承了相似的表达式语法、控制流结构、基础数据类型、调用参数传值、指等很多思想,有C言一直所看中的编译后机器码的运行效率以及和有操作系统的无缝适配。
但是在Go言的家族樹中還有其它的祖先。其中一有影力的分支自[Niklaus Wirth](https://en.wikipedia.org/wiki/Niklaus_Wirth)所設計的[Pascal][Pascal]言。然[Modula-2][Modula-2]言激了包的概念。然[Oberon][Oberon]言摒了模接口文件和模塊實現文件之間的區别。第二代的[Oberon-2][Oberon-2]言直接影了包的入和明的法,有[Oberon][Oberon]言的面向象特性所提供的方法的聲明語法等。
但是在Go言的家族树中还有其它的祖先。其中一有影力的分支自[Niklaus Wirth](https://en.wikipedia.org/wiki/Niklaus_Wirth)所设计的[Pascal][Pascal]言。然[Modula-2][Modula-2]言激了包的概念。然[Oberon][Oberon]言摒了模接口文件和模块实现文件之间的区别。第二代的[Oberon-2][Oberon-2]言直接影了包的入和明的法,有[Oberon][Oberon]言的面向象特性所提供的方法的声明语法等。
Go言的另一支祖先,帶來了Go語言區别其他言的重要特性,靈感來自於貝爾實驗室的[Tony Hoare](https://en.wikipedia.org/wiki/Tony_Hoare)1978年表的鮮爲外界所知的關於併發研究的基礎文獻 *序通信程* *[communicating sequential processes][CSP]* 縮寫爲[CSP][CSP]。在[CSP][CSP]中,程序是一組中間沒有共享狀態的平行行的處理過程,它們之間使用管道行通信和控同步。不[Tony Hoare](https://en.wikipedia.org/wiki/Tony_Hoare)的[CSP][CSP]是一個用於描述併發性基本概念的描述言,不是一可以編寫可執行程序的通用編程語言。
Go言的另一支祖先,带来了Go语言区别其他言的重要特性,灵感来自于贝尔实验室的[Tony Hoare](https://en.wikipedia.org/wiki/Tony_Hoare)1978年表的鲜为外界所知的关于并发研究的基础文献 *序通信程* *[communicating sequential processes][CSP]* 缩写为[CSP][CSP]。在[CSP][CSP]中,程序是一组中间没有共享状态的平行行的处理过程,它们之间使用管道行通信和控同步。不[Tony Hoare](https://en.wikipedia.org/wiki/Tony_Hoare)的[CSP][CSP]是一个用于描述并发性基本概念的描述言,不是一可以编写可执行程序的通用编程语言。
接下Rob Pike和其他人始不斷嚐試將[CSP](https://en.wikipedia.org/wiki/Communicating_sequential_processes)引入實際的編程語言中。他第一次嚐試引入[CSP](https://en.wikipedia.org/wiki/Communicating_sequential_processes)特性的編程語言叫[Squeak](http://doc.cat-v.org/bell_labs/squeak/)(老鼠交流的言),是一提供鼠標和鍵盤事件理的編程語言,它的管道是靜態創建的。然是改版的[Newsqueak](http://doc.cat-v.org/bell_labs/squeak/)言,提供了似C語言語句和表式的法和似[Pascal][Pascal]言的推導語法。Newsqueak是一個帶垃圾收的純函數式語言,它再次針對鍵盤、鼠和窗口事件管理。但是在Newsqueak言中管道是動態創建的,屬於第一值, 可以保存到量中。
接下Rob Pike和其他人始不断尝试将[CSP](https://en.wikipedia.org/wiki/Communicating_sequential_processes)引入实际的编程语言中。他第一次尝试引入[CSP](https://en.wikipedia.org/wiki/Communicating_sequential_processes)特性的编程语言叫[Squeak](http://doc.cat-v.org/bell_labs/squeak/)(老鼠交流的言),是一提供鼠标和键盘事件理的编程语言,它的管道是静态创建的。然是改版的[Newsqueak](http://doc.cat-v.org/bell_labs/squeak/)言,提供了似C语言语句和表式的法和似[Pascal][Pascal]言的推导语法。Newsqueak是一个带垃圾收的纯函数式语言,它再次针对键盘、鼠和窗口事件管理。但是在Newsqueak言中管道是动态创建的,属于第一值, 可以保存到量中。
在Plan9操作繫統中,這些優秀的想法被吸收到了一叫[Alef][Alef]的編程語言中。Alef試圖將Newsqueak言改造爲繫統編程語言,但是因缺少垃圾迴收機製而導致併發編程很痛苦。(譯註在Aelf之後還有一叫[Limbo][Limbo]的編程語Go語言從其中借了很多特性。 具體請參考Pike的稿http://talks.golang.org/2012/concurrency.slide#9
在Plan9操作系统中,这些优秀的想法被吸收到了一叫[Alef][Alef]的编程语言中。Alef试图将Newsqueak言改造为系统编程语言,但是因缺少垃圾回收机制而导致并发编程很痛苦。(译注在Aelf之后还有一叫[Limbo][Limbo]的编程语Go语言从其中借了很多特性。 具体请参考Pike的稿http://talks.golang.org/2012/concurrency.slide#9
Go言的其他的一些特性零散地來自於其他一些編程語比如iota法是[APL][APL]言借鑒,詞法作用域嵌套函數來自於[Scheme][Scheme]言(和其他很多言)。然,我也可以Go中發現很多新的設計。比如Go言的切片爲動態數組提供了有效的隨機存取的性能,可能會讓人聯想到表的底的共享機製。還有Go言新明的defer句。
Go言的其他的一些特性零散地来自于其他一些编程语比如iota法是[APL][APL]言借鉴,词法作用域嵌套函数来自于[Scheme][Scheme]言(和其他很多言)。然,我也可以Go中发现很多新的设计。比如Go言的切片为动态数组提供了有效的随机存取的性能,可能会让人联想到表的底的共享机制。还有Go言新明的defer句。
{% include "../links.md" %}

View File

@@ -1,16 +1,16 @@
## Go語言項
## Go语言项
所有的編程語言都反映了語言設計者對編程哲的反思,通常包括之前的言所暴露的一些不足地方的改。Go目是在Google公司維護超級複雜的幾個軟件繫統遇到的一些問題的反思(但是這類問題絶不是Google公司所特有的
所有的编程语言都反映了语言设计者对编程哲的反思,通常包括之前的言所暴露的一些不足地方的改。Go目是在Google公司维护超级复杂的几个软件系统遇到的一些问题的反思(但是这类问题绝不是Google公司所特有的
正如[Rob Pike](http://genius.cat-v.org/rob-pike/)所,“件的複雜性是乘法級相關的”,通增加一部分的複雜性來脩複問題通常慢慢地增加其他部分的複雜性。通增加功能和選項和配置是脩複問題的最快的途,但是很容易人忘記簡潔的內涵,卽使從長遠來看,簡潔依然是好件的關鍵因素。
正如[Rob Pike](http://genius.cat-v.org/rob-pike/)所,“件的复杂性是乘法级相关的”,通增加一部分的复杂性来修复问题通常慢慢地增加其他部分的复杂性。通增加功能和选项和配置是修复问题的最快的途,但是很容易人忘记简洁的内涵,即使从长远来看,简洁依然是好件的关键因素。
簡潔的設計需要在工作始的候舍不必要的想法,且在件的生命週期內嚴格區别好的改變或壞的改。通過足夠的努力,一好的改可以在不破原有完整概念的前提下保持自適應,正如[Fred Brooks](http://www.cs.unc.edu/~brooks/)所的“概念完整性”;而一個壞的改變則不能達到這個效果,它們僅僅是通過膚淺的和簡單的妥協來破壞原有設計的一致性。有通過簡潔的設計,才能讓一個繫統保持定、安全和持續的進化。
简洁的设计需要在工作始的候舍不必要的想法,且在件的生命周期内严格区别好的改变或坏的改。通过足够的努力,一好的改可以在不破原有完整概念的前提下保持自适应,正如[Fred Brooks](http://www.cs.unc.edu/~brooks/)所的“概念完整性”;而一个坏的改变则不能达到这个效果,它们仅仅是通过肤浅的和简单的妥协来破坏原有设计的一致性。有通过简洁的设计,才能让一个系统保持定、安全和持续的进化。
Go目包括編程語言本身,附了相的工具和標準庫,最後但併非代表不重要的,關於簡潔編程哲的宣言。就事後諸葛的角度Go言的些地方都做的還不錯:擁有自垃圾收、一個包繫統、函數作爲一等公民、法作用域、繫統調用接口、隻讀的UTF8字符串等。但是Go言本身有很少的特性,也不太可能添加太多的特性。例如,它沒有隱式的數值轉換,沒有構造函和析構函數,沒有運算符重載,沒有默認參數,也沒有繼承,有泛型,沒有異常,有宏,有函數脩飾,更沒有線程局部存。但是言本身是成熟和定的,而且承諾保證向後兼容用之前的Go語言編寫程序可以用新版本的Go語言編譯器和標準庫直接建而不需要改代
Go目包括编程语言本身,附了相的工具和标准库,最后但并非代表不重要的,关于简洁编程哲的宣言。就事后诸葛的角度Go言的些地方都做的还不错:拥有自垃圾收、一个包系统、函数作为一等公民、法作用域、系统调用接口、只读的UTF8字符串等。但是Go言本身有很少的特性,也不太可能添加太多的特性。例如,它没有隐式的数值转换,没有构造函和析构函数,没有运算符重载,没有默认参数,也没有继承,有泛型,没有异常,有宏,有函数修饰,更没有线程局部存。但是言本身是成熟和定的,而且承诺保证向后兼容用之前的Go语言编写程序可以用新版本的Go语言编译器和标准库直接建而不需要改代
Go言有足夠的類型繫統以避免動態語言中那些粗心的類型錯誤但是Go言的類型繫統相比傳統的強類型語言又要簡潔很多。然有時候這會導致一個“無類型”的抽象型概念但是Go言程序員併不需要像C++或Haskell程序員那樣糾結於具體類型的安全性。在實踐中Go語言簡潔的類型繫統給了程序員帶來了更多的安全性和更好的運行時性能。
Go言有足够的类型系统以避免动态语言中那些粗心的类型错误但是Go言的类型系统相比传统的强类型语言又要简洁很多。然有时候这会导致一个“无类型”的抽象型概念但是Go言程序员并不需要像C++或Haskell程序员那样纠结于具体类型的安全性。在实践中Go语言简洁的类型系统给了程序员带来了更多的安全性和更好的运行时性能。
Go言鼓勵當代計算機繫統設計的原,特别是局部的重要性。它的內置數據類型和大多數的準庫數據結構都經過精心設計而避免式的初始化或式的造函,因很少的存分配和存初始化代碼被隱藏在庫代碼中了。Go言的聚合型(結構體和數組)可以直接操作它的元素,需要更少的存儲空間、更少的存分配,而且指操作比其他接操作的言也更有效率。由於現代計算機是一個併行的Go言提供了基CSP的併發特性支持。Go言的動態棧使得輕量級線程goroutine的初始可以很小,因此建一goroutine的代很小,建百萬級的goroutine完全是可行的。
Go言鼓励当代计算机系统设计的原,特别是局部的重要性。它的内置数据类型和大多数的准库数据结构都经过精心设计而避免式的初始化或式的造函,因很少的存分配和存初始化代码被隐藏在库代码中了。Go言的聚合型(结构体和数组)可以直接操作它的元素,需要更少的存储空间、更少的存分配,而且指操作比其他接操作的言也更有效率。由于现代计算机是一个并行的Go言提供了基CSP的并发特性支持。Go言的动态栈使得轻量级线程goroutine的初始可以很小,因此建一goroutine的代很小,建百万级的goroutine完全是可行的。
Go言的標準庫(通常被稱爲語言自帶的電池),提供了清晰的建模和公共接口包含I/O操作、文本理、像、密碼學、網絡和分布式用程序等,支持許多標準化的文件格式和編解碼協議。庫和工具使用了大量的約定來減少額外的配置和解釋,從而最終簡化程序的邏輯,而且每Go程序結構都是如此的相似因此Go程序也很容易學習。使用Go言自工具建Go語言項目隻需要使用文件名和標識符名, 一個偶爾的特殊註釋來確定所有的、可行文件、測試、基準測試、例子、以及特定平台的量、目的文Go言源代本身就包含了構建規范。
Go言的标准库(通常被称为语言自带的电池),提供了清晰的建模和公共接口包含I/O操作、文本理、像、密码学、网络和分布式用程序等,支持许多标准化的文件格式和编解码协议。库和工具使用了大量的约定来减少额外的配置和解释,从而最终简化程序的逻辑,而且每Go程序结构都是如此的相似因此Go程序也很容易学习。使用Go言自工具建Go语言项目只需要使用文件名和标识符名, 一个偶尔的特殊注释来确定所有的、可行文件、测试、基准测试、例子、以及特定平台的量、目的文Go言源代本身就包含了构建规范。

View File

@@ -1,42 +1,42 @@
## 本書的組織
## 本书的组织
們假設你已有一或多其他編程語言的使用經歷,不管是似C、c++或Java的編譯型語言,還是類似Python、Ruby、JavaScript的腳本語言,因此我們不會像對完全的編程語言初者那樣解釋所有的細節。因Go言的量、常量、表式、控流和函等基本法也是似的。
们假设你已有一或多其他编程语言的使用经历,不管是似C、c++或Java的编译型语言,还是类似Python、Ruby、JavaScript的脚本语言,因此我们不会像对完全的编程语言初者那样解释所有的细节。因Go言的量、常量、表式、控流和函等基本法也是似的。
第一章包含了本程的基本結構,通過十幾個程序介了用Go言如何實現 類似讀寫文件、文本格式化、創建圖像、網絡客戶端和服器通等日常工作。
第一章包含了本程的基本结构,通过十几个程序介了用Go言如何实现 类似读写文件、文本格式化、创建图像、网络客户端和服器通等日常工作。
第二章描述了Go言程序的基本元素結構、變量、新型定、包和文件、以及作用域的概念。第三章討論了數字、布值、字符串和常量,演示了如何示和理Unicode字符。第四章描述了複合類型,從簡單的數組、字典、切片到動態列表。第五章涵了函數,併討論了錯誤處理、panic和recover有defer句。
第二章描述了Go言程序的基本元素结构、变量、新型定、包和文件、以及作用域的概念。第三章讨论了数字、布值、字符串和常量,演示了如何示和理Unicode字符。第四章描述了复合类型,从简单的数组、字典、切片到动态列表。第五章涵了函数,并讨论了错误处理、panic和recover有defer句。
第一章到第五章是基部分,主流命令式編程語言這部分都似。别之Go言有自己特色的法和格,但是大多程序能很快適應。其餘章節是Go言特有的:方法、接口、併發、包、測試和反射等言特性。
第一章到第五章是基部分,主流命令式编程语言这部分都似。别之Go言有自己特色的法和格,但是大多程序能很快适应。其余章节是Go言特有的:方法、接口、并发、包、测试和反射等言特性。
Go言的面向對象機製與一般言不同。它沒有類層次結構,甚至可以説沒有類;僅僅通過組合(而不是承)簡單的對象來構建複雜的對象。方法不可以定義在結構體上, 而且可以定在任何用自定義的類型上;且具體類型和抽象型(接口)之間的關繫是隱式的,所以很多型的設計者可能不知道該類型到底實現了哪些接口。方法在第六章討論,接口在第七章討論
Go言的面向对象机制与一般言不同。它没有类层次结构,甚至可以说没有类;仅仅通过组合(而不是承)简单的对象来构建复杂的对象。方法不可以定义在结构体上, 而且可以定在任何用自定义的类型上;且具体类型和抽象型(接口)之间的关系是隐式的,所以很多型的设计者可能不知道该类型到底实现了哪些接口。方法在第六章讨论,接口在第七章讨论
第八章討論了基於順序通信程(CSP)概念的併發編使用goroutines和channels處理併發編程。第九章則討論了傳統的基共享量的併發編程。
第八章讨论了基于顺序通信程(CSP)概念的并发编使用goroutines和channels处理并发编程。第九章则讨论了传统的基共享量的并发编程。
第十章描述了包機製和包的組織結構。這一章展示了如何有效的利用Go自的工具,使用單個命令完成編譯、測試、基準測試、代格式化、文以及其他多任
第十章描述了包机制和包的组织结构。这一章展示了如何有效的利用Go自的工具,使用单个命令完成编译、测试、基准测试、代格式化、文以及其他多任
第十一章討論了單元測試Go言的工具和標準庫中集成了輕量級的測試功能,避免了大但複雜的測試框架。測試庫提供了一些基本件,必要可以用來構建複雜的測試構件。
第十一章讨论了单元测试Go言的工具和标准库中集成了轻量级的测试功能,避免了大但复杂的测试框架。测试库提供了一些基本件,必要可以用来构建复杂的测试构件。
第十二章討論了反射,一程序在行期間審視自己的能力。反射是一個強大的程工具,不過要謹慎地使用;一章利用反射機製實現一些重要的Go語言庫函數, 展示了反射的大用法。第十三章解了底層編程的細節,在必要可以使用unsafe包繞過Go言安全的類型繫統
第十二章讨论了反射,一程序在行期间审视自己的能力。反射是一个强大的程工具,不过要谨慎地使用;一章利用反射机制实现一些重要的Go语言库函数, 展示了反射的大用法。第十三章解了底层编程的细节,在必要可以使用unsafe包绕过Go言安全的类型系统
部分章節的後面有練習題,根據對Go言的理解脩改書中的例子探索Go言的用法。
部分章节的后面有练习题,根据对Go言的理解修改书中的例子探索Go言的用法。
中所有的代都可以 http://gopl.io 上的Git倉庫下載。go get命令根據每個例子的入路智能地取、構建併安裝。隻需要選擇一個目録作爲工作空,然後將GOPATH環境變量設置爲該路徑
中所有的代都可以 http://gopl.io 上的Git仓库下载。go get命令根据每个例子的入路智能地取、构建并安装。只需要选择一个目录作为工作空,然后将GOPATH环境变量设置为该路径
必要Go言工具會創建目。例如:
必要Go言工具会创建目。例如:
```
$ export GOPATH=$HOME/gobook # 選擇工作目
$ go get gopl.io/ch1/helloworld # 取/編譯/安
$ $GOPATH/bin/helloworld # 行程序
Hello, 世界 # 是中文
$ export GOPATH=$HOME/gobook # 选择工作目
$ go get gopl.io/ch1/helloworld # 取/编译/安
$ $GOPATH/bin/helloworld # 行程序
Hello, 世界 # 是中文
```
運行這些例子需要安Go1.5以上的版本。
运行这些例子需要安Go1.5以上的版本。
```
$ go version
go version go1.5 linux/amd64
```
如果使用其他的操作繫統, 請參考 https://golang.org/doc/install 提供的明安
如果使用其他的操作系统, 请参考 https://golang.org/doc/install 提供的明安

View File

@@ -1,14 +1,14 @@
## 更多的信息
最佳的助信息自Go言的官方https://golang.org ,它提供了完善的考文,包括編程語言規范和標準庫等諸多權威的助信息。同也包含了如何編寫更地道的Go程序的基本程,有各種各樣的在文本源和視頻資源,它是本最有值的充。Go言的官方博客 https://blog.golang.org 不定期布一些Go言最好的實踐文章,包括當前語言的發展狀態、未來的計劃、會議報告和Go言相的各種會議的主等信息(譯註 http://talks.golang.org/ 包含了官方收的各種報告的稿)。
最佳的助信息自Go言的官方https://golang.org ,它提供了完善的考文,包括编程语言规范和标准库等诸多权威的助信息。同也包含了如何编写更地道的Go程序的基本程,有各种各样的在线文本源和视频资源,它是本最有值的充。Go言的官方博客 https://blog.golang.org 不定期布一些Go言最好的实践文章,包括当前语言的发展状态、未来的计划、会议报告和Go言相的各种会议的主等信息(译注 http://talks.golang.org/ 包含了官方收的各种报告的稿)。
線訪問的一個有價值的地方是可以web頁面運行Go言的程序(而紙質書則沒有這麽便利了)。這個功能由自 https://play.golang.org 的 Go Playground 提供,且可以方便地嵌入到其他面中,例如 https://golang.org 的主,或 godoc 提供的文檔頁面中。
线访问的一个有价值的地方是可以web页面运行Go言的程序(而纸质书则没有这么便利了)。这个功能由自 https://play.golang.org 的 Go Playground 提供,且可以方便地嵌入到其他面中,例如 https://golang.org 的主,或 godoc 提供的文档页面中。
Playground可以簡單的通過執行一小程序來測試對語法、語義和對程序的理解,似其他很多言提供的REPL卽時運行的工具。同它可以生成對應的url非常合共享Go言代片段,滙報bug或提供反饋意見等。
Playground可以简单的通过执行一小程序来测试对语法、语义和对程序的理解,似其他很多言提供的REPL即时运行的工具。同它可以生成对应的url非常合共享Go言代片段,汇报bug或提供反馈意见等。
Playground 建的 Go Tourhttps://tour.golang.org ,是一個繫列的Go言入門敎程,它包含了多基本概念和結構相關的併可在線運行的互小程序。
Playground 建的 Go Tourhttps://tour.golang.org ,是一个系列的Go言入门教程,它包含了多基本概念和结构相关的并可在线运行的互小程序。
Playground 和 Tour 也有一些限,它們隻能導入標準庫,而且因安全的原因一些網絡庫做了限。如果要在編譯和運行時需要訪問互聯網,對於一些更複雜的實驗,你可能需要在自己的電腦上構建併運行程序。幸的是下Go言的程很簡單,從 https://golang.org 下載安裝包應該不超過幾分鐘(譯註:感謝偉大的城,讓大陸的Gopher們都學會了自己打洞的基本生活技能,下載時間可能會因爲洞的大小等因素從幾分鐘到幾天或更久),然就可以在自己電腦上編寫和運行Go程序了。
Playground 和 Tour 也有一些限,它们只能导入标准库,而且因安全的原因一些网络库做了限。如果要在编译和运行时需要访问互联网,对于一些更复杂的实验,你可能需要在自己的电脑上构建并运行程序。幸的是下Go言的程很简单,从 https://golang.org 下载安装包应该不超过几分钟(译注:感谢伟大的城,让大陆的Gopher们都学会了自己打洞的基本生活技能,下载时间可能会因为洞的大小等因素从几分钟到几天或更久),然就可以在自己电脑上编写和运行Go程序了。
Go言是一個開源項目,你可以在 https://golang.org/pkg 閲讀標準庫中任意函數和類型的實現代碼,和下載安裝包的代完全一致。這樣你可以知道很多函是如何工作的, 通挖掘找出一些答案的細節,或者僅僅是出於欣賞專業級Go代
Go言是一个开源项目,你可以在 https://golang.org/pkg 阅读标准库中任意函数和类型的实现代码,和下载安装包的代完全一致。这样你可以知道很多函是如何工作的, 通挖掘找出一些答案的细节,或者仅仅是出于欣赏专业级Go代

View File

@@ -1,15 +1,15 @@
## 致
## 致
[Rob Pike](http://genius.cat-v.org/rob-pike/)和[Russ Cox](http://research.swtch.com/)以及很多其他Go糰隊的核心成多次仔細閲讀了本的手稿,他們對本書的組織結構和表述用詞等給出了很多寶貴的建。在準備日文版翻譯的時Yoshiki Shibata更是仔細地審閲了本的每部分,及時發現了諸多英文和代碼的錯誤。我非常感謝本書的每一位審閲者,併感謝對本書給出了重要的建的Brian Goetz、Corey Kosak、Arnold Robbins、Josh Bleecher Snyder和Peter Weinberger等人。
[Rob Pike](http://genius.cat-v.org/rob-pike/)和[Russ Cox](http://research.swtch.com/)以及很多其他Go团队的核心成多次仔细阅读了本的手稿,他们对本书的组织结构和表述用词等给出了很多宝贵的建。在准备日文版翻译的时Yoshiki Shibata更是仔细地审阅了本的每部分,及时发现了诸多英文和代码的错误。我非常感谢本书的每一位审阅者,并感谢对本书给出了重要的建的Brian Goetz、Corey Kosak、Arnold Robbins、Josh Bleecher Snyder和Peter Weinberger等人。
們還感謝Sameer Ajmani、Ittai Balaban、David Crawshaw、Billy Donohue、Jonathan Feinberg、Andrew Gerrand、Robert Griesemer、John Linderman、Minux Ma譯註中国人Go糰隊成員、Bryan Mills、Bala Natarajan、Cosmos Nicolaou、Paul Staniforth、Nigel Tao譯註:好像是陶哲的兄弟以及Howard Trickey出的多有值的建。我們還要感David Brailsford和Raph Levien關於類型設置的建
们还感谢Sameer Ajmani、Ittai Balaban、David Crawshaw、Billy Donohue、Jonathan Feinberg、Andrew Gerrand、Robert Griesemer、John Linderman、Minux Ma译注中国人Go团队成员、Bryan Mills、Bala Natarajan、Cosmos Nicolaou、Paul Staniforth、Nigel Tao译注:好像是陶哲的兄弟以及Howard Trickey出的多有值的建。我们还要感David Brailsford和Raph Levien关于类型设置的建
們的來自Addison-Wesley的編輯Greg Doench收到了很多助,從最開始就得到了越越多的助。自AW生産糰隊的John Fuller、Dayna Isley、Julie Nahil、Chuti Prasertsith到Barbara Wood謝你們的熱心幫助。
们的来自Addison-Wesley的编辑Greg Doench收到了很多助,从最开始就得到了越越多的助。自AW生产团队的John Fuller、Dayna Isley、Julie Nahil、Chuti Prasertsith到Barbara Wood谢你们的热心帮助。
[Alan Donovan](https://github.com/adonovan)特别感Sameer Ajmani、Chris Demetriou、Walt Drummond和Google公司的Reid Tatge允他有充裕的時間去寫本書;感Stephen Donovan的建和始如一的鼓以及他的妻子Leila Kazemi併沒有讓他爲了家庭事而分心,併熱情堅定地支持這個項目。
[Alan Donovan](https://github.com/adonovan)特别感Sameer Ajmani、Chris Demetriou、Walt Drummond和Google公司的Reid Tatge允他有充裕的时间去写本书;感Stephen Donovan的建和始如一的鼓以及他的妻子Leila Kazemi并没有让他为了家庭事而分心,并热情坚定地支持这个项目。
[Brian Kernighan](http://www.cs.princeton.edu/~bwk/)特别感:朋友和同事他的耐心和容,他慢慢地梳理本書的寫作思路。同時感謝他的妻子Meg和其他很多朋友對他寫作事的支持。
[Brian Kernighan](http://www.cs.princeton.edu/~bwk/)特别感:朋友和同事他的耐心和容,他慢慢地梳理本书的写作思路。同时感谢他的妻子Meg和其他很多朋友对他写作事的支持。
2015年 10月 於 紐約
2015年 10月 于 纽约