This commit is contained in:
chai2010
2015-12-24 14:47:06 +08:00
parent 7ec2f7cdc1
commit 745a165b6f
145 changed files with 3157 additions and 859 deletions

2107
CONTRIBUTORS.html Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -8,6 +8,8 @@
# https://github.com/GitbookIO/gitbook
# https://github.com/wastemobile/gitbook
# http://www.imagemagick.org/
default:
gitbook build
@@ -21,3 +23,17 @@ loop:
go run zh2tw.go . .md$$ tw2zh
go run zh2tw.go . .md$$ zh2tw
review:
go run zh2tw.go . .md$$ tw2zh
gitbook build
go run zh2tw.go . .md$$ zh2tw
cover:
composite cover_patch.png cover_bgd.png cover.jpg
convert -resize 1800x2360! cover.jpg cover.jpg
convert -resize 200x262! cover.jpg cover_small.jpg
convert -quality 75% cover.jpg cover.jpg
convert -quality 75% cover_small.jpg cover_small.jpg
convert -strip cover.jpg cover.jpg
convert -strip cover_small.jpg cover_small.jpg

View File

@@ -1,27 +1,27 @@
# 關於 [《Go聖經讀書筆記》](http://golang-china.github.io/gopl-zh)
# Go語言聖經中文版
作爲 [《The Go Programming Language》](http://gopl.io/) (中文名[《Go編程語言》](http://golang-china.github.io/gopl-zh)) 英文原版紙質圖書的購買者, [《Go聖經讀書筆記》](http://golang-china.github.io/gopl-zh) 是我們的 **讀書筆記****習題解答**, 僅供學習交流用.
Go語言聖經 [《The Go Programming Language》](http://gopl.io) 中文版本僅供編程和英語學習交流之用請在下載後24小時內刪除。
- **讀書筆記** 在線預覽: http://golang-china.github.io/gopl-zh
- **讀書筆記** 的源文件: http://github.com/golang-china/gopl-zh
- **讀書筆記** 項目進度: http://github.com/golang-china/gopl-zh/blob/master/progress.md
- **讀書筆記** 參與人員: http://github.com/golang-china/gopl-zh/blob/master/CONTRIBUTORS.md
- 原版官網: http://gopl.io
- 項目主頁http://github.com/golang-china/gopl-zh
- 項目進度:http://github.com/golang-china/gopl-zh/blob/master/progress.md
- 參與人員:http://github.com/golang-china/gopl-zh/blob/master/CONTRIBUTORS.md
- 在線預覽http://golang-china.github.io/gopl-zh
- 原版官網http://gopl.io
[![](cover_small.jpg)](https://github.com/golang-china/gopl-zh)
### 從源文件構建:
### 從源文件構建
先安裝 Go語言環境, git 工具GitBook 命令行工具(`npm install gitbook-cli -g` 命令).
先安裝Go語言環境Git工具GitBook命令行工具(`npm install gitbook-cli -g`命令)
1. 運行 `go get github.com/golang-china/gopl-zh`, 穫取 源文件
2. 運行 `go generate github.com/golang-china/gopl-zh`, 生成 `_book` 目録
3. 打開 `_book/index.html` 文件
1. 運行`go get github.com/golang-china/gopl-zh`穫取源文件
2. 運行`go generate github.com/golang-china/gopl-zh`生成`_book`目録
3. 打開`_book/index.html`文件
### 簡體中文讀者
如果是使用簡體中文的用戶, 可在執行上述命令前運行 `make tw2zh` 命令, 將繁體中文轉換爲簡體中文.
如果是使用簡體中文的用戶可在執行上述命令前運行`make tw2zh`命令將繁體中文轉換爲簡體中文
### Markdown 格式預覽
@@ -29,11 +29,11 @@
# 版權聲明
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>.
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="./images/by-nc-sa-4.0-88x31.png"></img></a>
嚴禁任何商業行爲使用或引用該 **讀書筆記** 的全部或部分內容!
嚴禁任何商業行爲使用或引用該文檔的全部或部分內容
歡迎大家提供建議!
歡迎大家提供建議

View File

@@ -149,5 +149,5 @@
* [13.3. 示例: 深度相等判斷](ch13/ch13-03.md)
* [13.4. 通過cgo調用C代碼](ch13/ch13-04.md)
* [13.5. 幾點忠告](ch13/ch13-05.md)
* [勘誤](errata.md)
* [附録](CONTRIBUTORS.md)

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="0.1" data-chapter-title="Go語言起源" data-filepath="ch0/ch0-01.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="0.1" data-chapter-title="Go語言起源" data-filepath="ch0/ch0-01.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>
@@ -2024,16 +2024,15 @@
<section class="normal" id="section-">
<h2 id="go&#x8A9E;&#x8A00;&#x8D77;&#x6E90;">Go&#x8A9E;&#x8A00;&#x8D77;&#x6E90;</h2>
<p>&#x5C31;&#x50CF;&#x751F;&#x7269;&#x7269;&#x7A2E;, &#x4E00;&#x500B;&#x6210;&#x529F;&#x7684;&#x7DE8;&#x7A0B;&#x8A9E;&#x8A00;&#x7684;&#x5F8C;&#x4EE3;&#x4E00;&#x822C;&#x90FD;&#x6703;&#x7E7C;&#x627F;&#x5B83;&#x5011;&#x7956;&#x5148;&#x7684;&#x512A;&#x9EDE;; &#x7576;&#x7136;&#x6709;&#x6642;&#x591A;&#x7A2E;&#x8A9E;&#x8A00;&#x6DF7;&#x5408;&#x4E5F;&#x6703;&#x7523;&#x751F;&#x4EE4;&#x4EBA;&#x9A5A;&#x8A1D;&#x7684;&#x7279;&#x6027;; &#x9084;&#x6709;&#x4E00;&#x4E9B;&#x6FC0;&#x9032;&#x7684;&#x65B0;&#x7279;&#x6027;&#x53EF;&#x80FD;&#x4F75;&#x6C92;&#x6709;&#x5148;&#x4F8B;. &#x6211;&#x5011;&#x53EF;&#x4EE5;&#x901A;&#x904E;&#x89C0;&#x5BDF;&#x8A9E;&#x8A00;&#x7684;&#x548C;&#x74B0;&#x5883;&#x662F;&#x5982;&#x4F55;&#x76F8;&#x4E92;&#x4FC3;&#x9032;&#x548C;&#x5F71;&#x97FF;&#x7684;&#x6F14;&#x5316;&#x904E;&#x7A0B;&#x800C;&#x5B78;&#x5230;&#x5F88;&#x591A;.</p>
<p>&#x4E0B;&#x5716;&#x5C55;&#x793A;&#x4E86;&#x6700;&#x65E9;&#x671F;&#x7684;&#x7DE8;&#x7A0B;&#x8A9E;&#x8A00;&#x5C0D;Go&#x8A9E;&#x8A00;&#x8A2D;&#x8A08;&#x7523;&#x751F;&#x7684;&#x91CD;&#x8981;&#x5F71;&#x97FF;.</p>
<p>&#x7DE8;&#x7A0B;&#x8A9E;&#x8A00;&#x7684;&#x6F14;&#x5316;&#x5C31;&#x50CF;&#x751F;&#x7269;&#x7269;&#x7A2E;&#x7684;&#x6F14;&#x5316;&#x985E;&#x4F3C;&#xFF0C;&#x4E00;&#x500B;&#x6210;&#x529F;&#x7684;&#x7DE8;&#x7A0B;&#x8A9E;&#x8A00;&#x7684;&#x5F8C;&#x4EE3;&#x4E00;&#x822C;&#x90FD;&#x6703;&#x7E7C;&#x627F;&#x5B83;&#x5011;&#x7956;&#x5148;&#x7684;&#x512A;&#x9EDE;&#xFF1B;&#x7576;&#x7136;&#x6709;&#x6642;&#x591A;&#x7A2E;&#x8A9E;&#x8A00;&#x96DC;&#x5408;&#x4E5F;&#x53EF;&#x80FD;&#x6703;&#x7523;&#x751F;&#x4EE4;&#x4EBA;&#x9A5A;&#x8A1D;&#x7684;&#x7279;&#x6027;&#xFF1B;&#x9084;&#x6709;&#x4E00;&#x4E9B;&#x6FC0;&#x9032;&#x7684;&#x65B0;&#x7279;&#x6027;&#x53EF;&#x80FD;&#x4F75;&#x6C92;&#x6709;&#x5148;&#x4F8B;&#x3002;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x901A;&#x904E;&#x89C0;&#x5BDF;&#x7DE8;&#x7A0B;&#x8A9E;&#x8A00;&#x548C;&#x8EDF;&#x786C;&#x4EF6;&#x74B0;&#x5883;&#x662F;&#x5982;&#x4F55;&#x76F8;&#x4E92;&#x4FC3;&#x9032;&#x3001;&#x76F8;&#x4E92;&#x5F71;&#x97FF;&#x7684;&#x6F14;&#x5316;&#x904E;&#x7A0B;&#x800C;&#x5B78;&#x5230;&#x5F88;&#x591A;&#x3002;</p>
<p>&#x4E0B;&#x5716;&#x5C55;&#x793A;&#x4E86;&#x6709;&#x54EA;&#x4E9B;&#x65E9;&#x671F;&#x7684;&#x7DE8;&#x7A0B;&#x8A9E;&#x8A00;&#x5C0D;Go&#x8A9E;&#x8A00;&#x7684;&#x8A2D;&#x8A08;&#x7523;&#x751F;&#x4E86;&#x91CD;&#x8981;&#x5F71;&#x97FF;&#x3002;</p>
<p><img src="../images/ch0-01.png" alt=""></p>
<p>Go&#x6709;&#x6642;&#x5019;&#x88AB;&#x63CF;&#x8FF0;&#x7232;&quot;C&#x985E;&#x4F3C;&#x8A9E;&#x8A00;&quot;, &#x6216;&#x8005;&#x662F;&quot;21&#x4E16;&#x7D00;&#x7684;C&#x8A9E;&#x8A00;&quot;. Go&#x5F9E;C&#x8A9E;&#x8A00;&#x7E7C;&#x627F;&#x4E86;&#x76F8;&#x4F3C;&#x7684;&#x8868;&#x9054;&#x5F0F;&#x8A9E;&#x6CD5;, &#x63A7;&#x88FD;&#x6D41;&#x7D50;&#x69CB;, &#x57FA;&#x790E;&#x6578;&#x64DA;&#x985E;&#x578B;, &#x8ABF;&#x7528;&#x53C3;&#x6578;&#x50B3;&#x503C;, &#x6307;&#x91DD;&#x7B49;&#x5F88;&#x591A;&#x601D;&#x60F3;, &#x9084;&#x6709;C&#x8A9E;&#x8A00;&#x4E00;&#x76F4;&#x770B;&#x4E2D;&#x7684;&#x7DE8;&#x8B6F;&#x5F8C;&#x6A5F;&#x5668;&#x78BC;&#x7684;&#x904B;&#x884C;&#x6548;&#x7387;&#x4EE5;&#x53CA;&#x548C;&#x73FE;&#x6709;&#x64CD;&#x4F5C;&#x7E6B;&#x7D71;&#x7684;&#x7121;&#x7E2B;&#x7684;&#x9069;&#x914D;.</p>
<p>&#x4F46;&#x662F;&#x5728;Go&#x8A9E;&#x8A00;&#x5BB6;&#x7684;&#x65CF;&#x6A39;&#x4E2D;&#x9084;&#x6709;&#x5176;&#x4ED6;&#x7684;&#x7956;&#x5148;. &#x5176;&#x4E2D;&#x4E00;&#x500B;&#x6709;&#x5F71;&#x97FF;&#x7684;&#x5206;&#x652F;&#x4F86;&#x81EA;Niklaus Wirth&#x8A2D;&#x8A08;&#x7684;Pascal&#x8A9E;&#x8A00;. Modula-2 &#x6FC0;&#x767C;&#x4E86;&#x5305;&#x7684;&#x6982;&#x5FF5;. Oberon &#x6452;&#x68C4;&#x4E86;&#x6A21;&#x584A;&#x63A5;&#x53E3;&#x6587;&#x4EF6;&#x548C;&#x6A21;&#x584A;&#x5BE6;&#x73FE;&#x6587;&#x4EF6;&#x4E4B;&#x9593;&#x7684;&#x5340;&#x522B;. Oberon-2 &#x5F71;&#x97FF;&#x4E86;&#x7684;&#x5305;&#x7684;&#x5C0E;&#x5165;&#x548C;&#x8072;&#x660E;&#x7684;&#x8A9E;&#x6CD5;, &#x9084;&#x6709; &#x9762;&#x5411;&#x5C0D;&#x8C61; Oberon &#x6240;&#x63D0;&#x4F9B;&#x7684;&#x65B9;&#x6CD5;&#x7684;&#x8072;&#x660E;&#x8A9E;&#x6CD5;&#x7B49;.</p>
<p>Go&#x7684;&#x53E6;&#x4E00;&#x652F;&#x7956;&#x5148;, &#x4E5F;&#x662F;Go&#x5340;&#x522B;&#x5176;&#x4ED6;&#x8A9E;&#x8A00;&#x7684;&#x91CD;&#x8981;&#x7279;&#x6027;, &#x9748;&#x611F;&#x4F86;&#x81EA;&#x8C9D;&#x723E;&#x5BE6;&#x9A57;&#x5BA4;&#x7684;Tony Hoare&#x7684;1978&#x5E74;&#x767C;&#x8868;&#x7684;&#x9BAE;&#x7232;&#x5916;&#x754C;&#x6240;&#x77E5;&#x7684;&#x95DC;&#x65BC;&#x4F75;&#x767C;&#x7814;&#x7A76;&#x7684;&#x57FA;&#x790E;&#x6587;&#x737B;communicating sequential processes (CSP). &#x5728;CSP&#x4E2D;, &#x7A0B;&#x5E8F;&#x662F;&#x4E00;&#x7D44;&#x4E2D;&#x9593;&#x6C92;&#x6709;&#x5171;&#x4EAB;&#x72C0;&#x614B;&#x7684;&#x5E73;&#x884C;&#x7684;&#x8655;&#x7406;&#x904E;&#x7A0B;, &#x5B83;&#x5011;&#x4F7F;&#x7528;&#x7BA1;&#x9053;&#x9032;&#x884C;&#x901A;&#x4FE1;&#x548C;&#x540C;&#x6B65;. &#x4E0D;&#x904E;Tony Hoare&#x7684;CSP&#x96BB;&#x662F;&#x4E00;&#x500B;&#x7528;&#x65BC;&#x63CF;&#x8FF0;&#x4F75;&#x767C;&#x6027;&#x57FA;&#x672C;&#x6982;&#x5FF5;&#x7684;&#x63CF;&#x8FF0;&#x8A9E;&#x8A00;, &#x4F75;&#x4E0D;&#x662F;&#x4E00;&#x500B;&#x7DE8;&#x5BEB;&#x53EF;&#x57F7;&#x884C;&#x7A0B;&#x5E8F;&#x7684;&#x7DE8;&#x7A0B;&#x8A9E;&#x8A00;.</p>
<p>Rob Pike&#x548C;&#x5176;&#x4ED6;&#x4EBA;&#x958B;&#x59CB;&#x5690;&#x8A66;&#x5C07;CSP&#x5F15;&#x5165;&#x5BE6;&#x969B;&#x7684;&#x7DE8;&#x7A0B;&#x8A9E;&#x8A00;&#x4E2D;. &#x7B2C;&#x4E00;&#x500B;&#x8A9E;&#x8A00;&#x53EB;Squeak(&#x8001;&#x9F20;&#x9593;&#x4EA4;&#x6D41;&#x7684;&#x8A9E;&#x8A00;), &#x4E00;&#x500B;&#x63D0;&#x4F9B;&#x9F20;&#x6A19;&#x548C;&#x9375;&#x76E4;&#x4E8B;&#x4EF6;&#x8655;&#x7406;&#x7684;&#x8A9E;&#x8A00;, &#x5B83;&#x7684;&#x7BA1;&#x9053;&#x662F;&#x975C;&#x614B;&#x5275;&#x5EFA;&#x7684;. &#x7136;&#x5F8C;&#x662F;Newsqueak, &#x63D0;&#x4F9B;&#x4E86;&#x985E;&#x4F3C;C&#x8A9E;&#x8A00;&#x8A9E;&#x53E5;&#x548C;&#x8868;&#x9054;&#x5F0F;&#x7684;&#x7684;&#x8A9E;&#x6CD5;&#x548C;Pascal&#x7684;&#x985E;&#x4F3C;&#x63A8;&#x5C0E;&#x8A9E;&#x6CD5;. &#x5B83;&#x662F;&#x4E00;&#x500B;&#x5E36;&#x5783;&#x573E;&#x8FF4;&#x6536;&#x7684;&#x7D14;&#x51FD;&#x6578;&#x5F0F;&#x8A9E;&#x8A00;, &#x518D;&#x6B64;&#x91DD;&#x5C0D;&#x7BA1;&#x7406;&#x9375;&#x76E4;, &#x9F20;&#x6A19;&#x548C;&#x7A97;&#x53E3;&#x4E8B;&#x4EF6;&#x7BA1;&#x7406;. &#x4F46;&#x662F;Newsqueak&#x4E2D;&#x7BA1;&#x9053;&#x662F;&#x52D5;&#x614B;&#x5275;&#x5EFA;&#x7684;, &#x5C6C;&#x65BC;&#x7B2C;&#x4E00;&#x985E;&#x503C;, &#x53EF;&#x4EE5;&#x4FDD;&#x5B58;&#x5230;&#x8B8A;&#x91CF;&#x4E2D;.</p>
<p>&#x5728;Plan9&#x64CD;&#x4F5C;&#x7E6B;&#x7D71;&#x4E2D;, &#x9019;&#x4E9B;&#x60F3;&#x6CD5;&#x88AB;&#x5438;&#x6536;&#x5230;&#x4E00;&#x500B;&#x53EB;Alef&#x7684;&#x7DE8;&#x7A0B;&#x8A9E;&#x8A00;&#x4E2D;. Alef&#x8996;&#x5716;&#x5C07;Newsqueak&#x6539;&#x9020;&#x7232;&#x7E6B;&#x7D71;&#x7DE8;&#x7A0B;&#x8A9E;&#x8A00;, &#x4F46;&#x662F;&#x56E0;&#x7232;&#x7F3A;&#x5C11;&#x5783;&#x573E;&#x8FF4;&#x6536;&#x6A5F;&#x88FD;&#x800C;&#x5C0E;&#x81F4;&#x4F75;&#x767C;&#x8655;&#x7406;&#x5F88;&#x75DB;&#x82E6;.</p>
<p>Go&#x7684;&#x5176;&#x4ED6;&#x4E00;&#x4E9B;&#x7279;&#x6027;&#x96F6;&#x6563;&#x5730;&#x4F86;&#x7740;&#x5176;&#x4ED6;&#x7684;&#x4E00;&#x4E9B;&#x8A9E;&#x8A00;; &#x6BD4;&#x5982; iota &#x5F9E; APL &#x501F;&#x9452;, &#x8A5E;&#x6CD5;&#x4F5C;&#x7528;&#x57DF;&#x8207;&#x5D4C;&#x5957;&#x51FD;&#x6578;&#x4F86;&#x81EA; Scheme (&#x548C;&#x5176;&#x4ED6;&#x5F88;&#x591A;&#x8A9E;&#x8A00;). &#x6211;&#x5011;&#x4E5F;&#x53EF;&#x4EE5;&#x5F9E;Go&#x4E2D;&#x767C;&#x73FE;&#x5F88;&#x591A;&#x5275;&#x65B0;&#x7684;&#x8A2D;&#x8A08;. &#x6BD4;&#x5982;Go&#x7684;&#x5207;&#x7247;&#x7232;&#x52D5;&#x614B;&#x6578;&#x7D44;&#x63D0;&#x4F9B;&#x4E86;&#x6709;&#x6548;&#x7684;&#x96A8;&#x6A5F;&#x5B58;&#x53D6;&#x6027;&#x80FD;, &#x4EE5;&#x53CA;&#x53EF;&#x80FD;&#x6703;&#x8B93;&#x4EBA;&#x806F;&#x60F3;&#x5230;&#x93C8;&#x8868;&#x7684;&#x5E95;&#x5C64;&#x7684;&#x5171;&#x4EAB;&#x6A5F;&#x88FD;.
&#x9084;&#x6709;Go&#x81EA;&#x5DF1;&#x767C;&#x660E;&#x7684;defer&#x8A9E;&#x53E5;.</p>
<p>Go&#x8A9E;&#x8A00;&#x6709;&#x6642;&#x5019;&#x88AB;&#x63CF;&#x8FF0;&#x7232;&#x201C;C&#x985E;&#x4F3C;&#x8A9E;&#x8A00;&#x201D;&#xFF0C;&#x6216;&#x8005;&#x662F;&#x201C;21&#x4E16;&#x7D00;&#x7684;C&#x8A9E;&#x8A00;&#x201D;&#x3002;Go&#x5F9E;C&#x8A9E;&#x8A00;&#x7E7C;&#x627F;&#x4E86;&#x76F8;&#x4F3C;&#x7684;&#x8868;&#x9054;&#x5F0F;&#x8A9E;&#x6CD5;&#x3001;&#x63A7;&#x88FD;&#x6D41;&#x7D50;&#x69CB;&#x3001;&#x57FA;&#x790E;&#x6578;&#x64DA;&#x985E;&#x578B;&#x3001;&#x8ABF;&#x7528;&#x53C3;&#x6578;&#x50B3;&#x503C;&#x3001;&#x6307;&#x91DD;&#x7B49;&#x5F88;&#x591A;&#x601D;&#x60F3;&#xFF0C;&#x9084;&#x6709;C&#x8A9E;&#x8A00;&#x4E00;&#x76F4;&#x6240;&#x770B;&#x4E2D;&#x7684;&#x7DE8;&#x8B6F;&#x5F8C;&#x6A5F;&#x5668;&#x78BC;&#x7684;&#x904B;&#x884C;&#x6548;&#x7387;&#x4EE5;&#x53CA;&#x548C;&#x73FE;&#x6709;&#x64CD;&#x4F5C;&#x7E6B;&#x7D71;&#x7684;&#x7121;&#x7E2B;&#x9069;&#x914D;&#x3002;</p>
<p>&#x4F46;&#x662F;&#x5728;Go&#x8A9E;&#x8A00;&#x7684;&#x5BB6;&#x65CF;&#x6A39;&#x4E2D;&#x9084;&#x6709;&#x5176;&#x5B83;&#x7684;&#x7956;&#x5148;&#x3002;&#x5176;&#x4E2D;&#x4E00;&#x500B;&#x6709;&#x5F71;&#x97FF;&#x529B;&#x7684;&#x5206;&#x652F;&#x4F86;&#x81EA;Niklaus Wirth&#x6240;&#x8A2D;&#x8A08;&#x7684;Pascal&#x8A9E;&#x8A00;&#x3002;&#x7136;&#x5F8C;Modula-2&#x8A9E;&#x8A00;&#x6FC0;&#x767C;&#x4E86;&#x5305;&#x7684;&#x6982;&#x5FF5;&#x3002;&#x7136;&#x5F8C;Oberon&#x8A9E;&#x8A00; &#x6452;&#x68C4;&#x4E86;&#x6A21;&#x584A;&#x63A5;&#x53E3;&#x6587;&#x4EF6;&#x548C;&#x6A21;&#x584A;&#x5BE6;&#x73FE;&#x6587;&#x4EF6;&#x4E4B;&#x9593;&#x7684;&#x5340;&#x522B;&#x3002;&#x7B2C;&#x4E8C;&#x4EE3;&#x7684;Oberon-2&#x8A9E;&#x8A00;&#x76F4;&#x63A5;&#x5F71;&#x97FF;&#x4E86;&#x5305;&#x7684;&#x5C0E;&#x5165;&#x548C;&#x8072;&#x660E;&#x7684;&#x8A9E;&#x6CD5;&#xFF0C;&#x9084;&#x6709;Oberon&#x8A9E;&#x8A00;&#x7684;&#x9762;&#x5411;&#x5C0D;&#x8C61;&#x7279;&#x6027;&#x6240;&#x63D0;&#x4F9B;&#x7684;&#x65B9;&#x6CD5;&#x7684;&#x8072;&#x660E;&#x8A9E;&#x6CD5;&#x7B49;&#x3002;</p>
<p>Go&#x8A9E;&#x8A00;&#x7684;&#x53E6;&#x4E00;&#x652F;&#x7956;&#x5148;&#xFF0C;&#x5E36;&#x4F86;&#x4E86;Go&#x8A9E;&#x8A00;&#x5340;&#x522B;&#x5176;&#x4ED6;&#x8A9E;&#x8A00;&#x7684;&#x91CD;&#x8981;&#x7279;&#x6027;&#xFF0C;&#x9748;&#x611F;&#x4F86;&#x81EA;&#x65BC;&#x8C9D;&#x723E;&#x5BE6;&#x9A57;&#x5BA4;&#x7684;Tony Hoare&#x65BC;1978&#x5E74;&#x767C;&#x8868;&#x7684;&#x9BAE;&#x7232;&#x5916;&#x754C;&#x6240;&#x77E5;&#x7684;&#x95DC;&#x65BC;&#x4F75;&#x767C;&#x7814;&#x7A76;&#x7684;&#x57FA;&#x790E;&#x6587;&#x737B; <em>&#x9806;&#x5E8F;&#x901A;&#x4FE1;&#x9032;&#x7A0B;</em> &#xFF08; <em>communicating sequential processes</em> &#xFF0C;&#x7E2E;&#x5BEB;&#x7232;CSP&#xFF09;&#x3002;&#x5728;CSP&#x4E2D;&#xFF0C;&#x7A0B;&#x5E8F;&#x662F;&#x4E00;&#x7D44;&#x4E2D;&#x9593;&#x6C92;&#x6709;&#x5171;&#x4EAB;&#x72C0;&#x614B;&#x7684;&#x5E73;&#x884C;&#x904B;&#x884C;&#x7684;&#x8655;&#x7406;&#x904E;&#x7A0B;&#xFF0C;&#x5B83;&#x5011;&#x4E4B;&#x9593;&#x4F7F;&#x7528;&#x7BA1;&#x9053;&#x9032;&#x884C;&#x901A;&#x4FE1;&#x548C;&#x63A7;&#x88FD;&#x540C;&#x6B65;&#x3002;&#x4E0D;&#x904E;Tony Hoare&#x7684;CSP&#x96BB;&#x662F;&#x4E00;&#x500B;&#x7528;&#x65BC;&#x63CF;&#x8FF0;&#x4F75;&#x767C;&#x6027;&#x57FA;&#x672C;&#x6982;&#x5FF5;&#x7684;&#x63CF;&#x8FF0;&#x8A9E;&#x8A00;&#xFF0C;&#x4F75;&#x4E0D;&#x662F;&#x4E00;&#x500B;&#x53EF;&#x4EE5;&#x7DE8;&#x5BEB;&#x53EF;&#x57F7;&#x884C;&#x7A0B;&#x5E8F;&#x7684;&#x901A;&#x7528;&#x7DE8;&#x7A0B;&#x8A9E;&#x8A00;&#x3002;</p>
<p>&#x63A5;&#x4E0B;&#x4F86;&#xFF0C;Rob Pike&#x548C;&#x5176;&#x4ED6;&#x4EBA;&#x958B;&#x59CB;&#x4E0D;&#x65B7;&#x5690;&#x8A66;&#x5C07;CSP&#x5F15;&#x5165;&#x5BE6;&#x969B;&#x7684;&#x7DE8;&#x7A0B;&#x8A9E;&#x8A00;&#x4E2D;&#x3002;&#x4ED6;&#x5011;&#x7B2C;&#x4E00;&#x6B21;&#x5690;&#x8A66;&#x5F15;&#x5165;CSP&#x7279;&#x6027;&#x7684;&#x7DE8;&#x7A0B;&#x8A9E;&#x8A00;&#x53EB;Squeak&#xFF08;&#x8001;&#x9F20;&#x9593;&#x4EA4;&#x6D41;&#x7684;&#x8A9E;&#x8A00;&#xFF09;&#xFF0C;&#x662F;&#x4E00;&#x500B;&#x63D0;&#x4F9B;&#x9F20;&#x6A19;&#x548C;&#x9375;&#x76E4;&#x4E8B;&#x4EF6;&#x8655;&#x7406;&#x7684;&#x7DE8;&#x7A0B;&#x8A9E;&#x8A00;&#xFF0C;&#x5B83;&#x7684;&#x7BA1;&#x9053;&#x662F;&#x975C;&#x614B;&#x5275;&#x5EFA;&#x7684;&#x3002;&#x7136;&#x5F8C;&#x662F;&#x6539;&#x9032;&#x7248;&#x7684;Newsqueak&#x8A9E;&#x8A00;&#xFF0C;&#x63D0;&#x4F9B;&#x4E86;&#x985E;&#x4F3C;C&#x8A9E;&#x8A00;&#x8A9E;&#x53E5;&#x548C;&#x8868;&#x9054;&#x5F0F;&#x7684;&#x8A9E;&#x6CD5;&#x548C;&#x985E;&#x4F3C;Pascal&#x8A9E;&#x8A00;&#x7684;&#x63A8;&#x5C0E;&#x8A9E;&#x6CD5;&#x3002;Newsqueak&#x662F;&#x4E00;&#x500B;&#x5E36;&#x5783;&#x573E;&#x8FF4;&#x6536;&#x7684;&#x7D14;&#x51FD;&#x6578;&#x5F0F;&#x8A9E;&#x8A00;&#xFF0C;&#x5B83;&#x518D;&#x6B21;&#x91DD;&#x5C0D;&#x9375;&#x76E4;&#x3001;&#x9F20;&#x6A19;&#x548C;&#x7A97;&#x53E3;&#x4E8B;&#x4EF6;&#x7BA1;&#x7406;&#x3002;&#x4F46;&#x662F;&#x5728;Newsqueak&#x8A9E;&#x8A00;&#x4E2D;&#x7BA1;&#x9053;&#x662F;&#x52D5;&#x614B;&#x5275;&#x5EFA;&#x7684;&#xFF0C;&#x5C6C;&#x65BC;&#x7B2C;&#x4E00;&#x985E;&#x503C;, &#x53EF;&#x4EE5;&#x4FDD;&#x5B58;&#x5230;&#x8B8A;&#x91CF;&#x4E2D;&#x3002;</p>
<p>&#x5728;Plan9&#x64CD;&#x4F5C;&#x7E6B;&#x7D71;&#x4E2D;&#xFF0C;&#x9019;&#x4E9B;&#x512A;&#x79C0;&#x7684;&#x60F3;&#x6CD5;&#x88AB;&#x5438;&#x6536;&#x5230;&#x4E86;&#x4E00;&#x500B;&#x53EB;Alef&#x7684;&#x7DE8;&#x7A0B;&#x8A9E;&#x8A00;&#x4E2D;&#x3002;Alef&#x8A66;&#x5716;&#x5C07;Newsqueak&#x8A9E;&#x8A00;&#x6539;&#x9020;&#x7232;&#x7E6B;&#x7D71;&#x7DE8;&#x7A0B;&#x8A9E;&#x8A00;&#xFF0C;&#x4F46;&#x662F;&#x56E0;&#x7232;&#x7F3A;&#x5C11;&#x5783;&#x573E;&#x8FF4;&#x6536;&#x6A5F;&#x88FD;&#x800C;&#x5C0E;&#x81F4;&#x4F75;&#x767C;&#x7DE8;&#x7A0B;&#x5F88;&#x75DB;&#x82E6;&#x3002;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;&#x5728;Aelf&#x4E4B;&#x5F8C;&#x9084;&#x6709;&#x4E00;&#x500B;&#x53EB;Limbo&#x7684;&#x7DE8;&#x7A0B;&#x8A9E;&#x8A00;&#xFF0C;Go&#x8A9E;&#x8A00;&#x5F9E;&#x5176;&#x4E2D;&#x501F;&#x9452;&#x4E86;&#x5F88;&#x591A;&#x7279;&#x6027;&#x3002;&#x5728;docs&#x76EE;&#x9332;&#x5305;&#x542B;&#x4E86;&#x9019;&#x4E9B;&#x8A9E;&#x8A00;&#x76F8;&#x95DC;&#x7684;&#x6587;&#x6A94;&#x624B;&#x518A;&#x3002; &#x5177;&#x9AD4;&#x8ACB;&#x53C3;&#x8003;Pike&#x7684;&#x8B1B;&#x7A3F;&#xFF1A;<a href="http://talks.golang.org/2012/concurrency.slide#9" target="_blank">http://talks.golang.org/2012/concurrency.slide#9</a> &#xFF09;</p>
<p>Go&#x8A9E;&#x8A00;&#x7684;&#x5176;&#x4ED6;&#x7684;&#x4E00;&#x4E9B;&#x7279;&#x6027;&#x96F6;&#x6563;&#x5730;&#x4F86;&#x81EA;&#x65BC;&#x5176;&#x4ED6;&#x4E00;&#x4E9B;&#x7DE8;&#x7A0B;&#x8A9E;&#x8A00;&#xFF1B;&#x6BD4;&#x5982;iota&#x8A9E;&#x6CD5;&#x662F;&#x5F9E;APL&#x8A9E;&#x8A00;&#x501F;&#x9452;&#xFF0C;&#x8A5E;&#x6CD5;&#x4F5C;&#x7528;&#x57DF;&#x8207;&#x5D4C;&#x5957;&#x51FD;&#x6578;&#x4F86;&#x81EA;&#x65BC;Scheme&#x8A9E;&#x8A00;&#xFF08;&#x548C;&#x5176;&#x4ED6;&#x5F88;&#x591A;&#x8A9E;&#x8A00;&#xFF09;&#x3002;&#x7576;&#x7136;&#xFF0C;&#x6211;&#x5011;&#x4E5F;&#x53EF;&#x4EE5;&#x5F9E;Go&#x4E2D;&#x767C;&#x73FE;&#x5F88;&#x591A;&#x5275;&#x65B0;&#x7684;&#x8A2D;&#x8A08;&#x3002;&#x6BD4;&#x5982;Go&#x8A9E;&#x8A00;&#x7684;&#x5207;&#x7247;&#x7232;&#x52D5;&#x614B;&#x6578;&#x7D44;&#x63D0;&#x4F9B;&#x4E86;&#x6709;&#x6548;&#x7684;&#x96A8;&#x6A5F;&#x5B58;&#x53D6;&#x7684;&#x6027;&#x80FD;&#xFF0C;&#x9019;&#x53EF;&#x80FD;&#x6703;&#x8B93;&#x4EBA;&#x806F;&#x60F3;&#x5230;&#x93C8;&#x8868;&#x7684;&#x5E95;&#x5C64;&#x7684;&#x5171;&#x4EAB;&#x6A5F;&#x88FD;&#x3002;&#x9084;&#x6709;Go&#x8A9E;&#x8A00;&#x65B0;&#x767C;&#x660E;&#x7684;defer&#x8A9E;&#x53E5;&#x3002;</p>
</section>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="0.2" data-chapter-title="Go語言項目" data-filepath="ch0/ch0-02.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="0.2" data-chapter-title="Go語言項目" data-filepath="ch0/ch0-02.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>
@@ -2024,14 +2024,13 @@
<section class="normal" id="section-">
<h2 id="go&#x8A9E;&#x8A00;&#x9805;&#x76EE;">Go&#x8A9E;&#x8A00;&#x9805;&#x76EE;</h2>
<p>&#x6240;&#x6709;&#x7684;&#x7DE8;&#x7A0B;&#x8A9E;&#x8A00;&#x90FD;&#x53CD;&#x6620;&#x4E86;&#x8A2D;&#x8A08;&#x8005;&#x5C0D;&#x7DE8;&#x7A0B;&#x54F2;&#x5B78;&#x7684;&#x53CD;&#x601D;, &#x901A;&#x5E38;&#x5305;&#x62EC;&#x4E4B;&#x524D;&#x7684;&#x8A9E;&#x8A00;&#x6240;&#x66B4;&#x9732;&#x7684;&#x4E00;&#x4E9B;&#x4E0D;&#x8DB3;&#x7684;&#x5730;&#x65B9;.
Go&#x9805;&#x76EE;&#x662F;&#x5728;Google&#x8D85;&#x7D1A;&#x8907;&#x96DC;&#x7684;&#x5E7E;&#x500B;&#x8EDF;&#x4EF6;&#x7E6B;&#x7D71;&#x9047;&#x5230;&#x7684;&#x4E00;&#x4E9B;&#x554F;&#x984C;&#x7684;&#x53CD;&#x601D;(&#x4F46;&#x662F;&#x9019;&#x500B;&#x554F;&#x984C;&#x7D76;&#x4E0D;&#x662F;&#x8C37;&#x6B4C;&#x7279;&#x6709;&#x7684;).</p>
<p>&#x6B63;&#x5982;Rob Pike&#x6240;&#x8AAC;, &#x201C;&#x8907;&#x96DC;&#x6027;&#x662F;&#x4E58;&#x6CD5;&#x7D1A;&#x76F8;&#x95DC;&#x7684;&#x201D;, &#x901A;&#x904E;&#x589E;&#x52A0;&#x4E00;&#x500B;&#x90E8;&#x5206;&#x7684;&#x8907;&#x96DC;&#x6027;&#x4F86;&#x8129;&#x8907;&#x554F;&#x984C;&#x901A;&#x5E38;&#x5C07;&#x6162;&#x6162;&#x5730;&#x589E;&#x52A0;&#x5176;&#x4ED6;&#x90E8;&#x5206;&#x7684;&#x8907;&#x96DC;&#x6027;. &#x901A;&#x904E;&#x589E;&#x52A0;&#x529F;&#x80FD;&#x548C;&#x9078;&#x9805;&#x548C;&#x914D;&#x7F6E;&#x662F;&#x8129;&#x8907;&#x554F;&#x984C;&#x7684;&#x6700;&#x5FEB;&#x7684;&#x9014;&#x5F91;, &#x4F46;&#x662F;&#x9019;&#x5F88;&#x5BB9;&#x6613;&#x5FFD;&#x7565;&#x7C21;&#x6F54;&#x7684;&#x5167;&#x6DB5;, &#x537D;&#x4F7F;&#x5F9E;&#x9577;&#x9060;&#x4F86;&#x770B;, &#x7C21;&#x6F54;&#x4F9D;&#x7136;&#x662F;&#x597D;&#x7684;&#x8EDF;&#x4EF6;&#x95DC;&#x9375;&#x56E0;&#x7D20;.</p>
<p>&#x7C21;&#x6F54;&#x9700;&#x8981;&#x5728;&#x5DE5;&#x4F5C;&#x958B;&#x59CB;&#x7684;&#x6642;&#x5019;&#x6E1B;&#x5C11;&#x4E0D;&#x5FC5;&#x8981;&#x7684;&#x60F3;&#x6CD5;, &#x4F75;&#x4E14;&#x5728;&#x8EDF;&#x4EF6;&#x7684;&#x751F;&#x547D;&#x9031;&#x671F;&#x5167;&#x56B4;&#x683C;&#x5340;&#x522B;&#x597D;&#x7684;&#x6539;&#x8B8A;&#x6216;&#x58DE;&#x7684;&#x6539;&#x8B8A;. &#x901A;&#x904E;&#x8DB3;&#x5920;&#x7684;&#x52AA;&#x529B;, &#x4E00;&#x500B;&#x597D;&#x7684;&#x6539;&#x8B8A;&#x53EF;&#x4EE5;&#x5728;&#x4E0D;&#x7834;&#x58DE;&#x5B8C;&#x6574;&#x6982;&#x5FF5;&#x7684;&#x524D;&#x63D0;&#x4E0B;&#x4FDD;&#x6301;&#x81EA;&#x9069;&#x61C9;, &#x6B63;&#x5982; Fred Brooks &#x6240;&#x8AAC;&#x7684; &quot;&#x6982;&#x5FF5;&#x5B8C;&#x6574;&#x6027;&quot;; &#x800C;&#x4E00;&#x500B;&#x58DE;&#x7684;&#x6539;&#x8B8A;&#x5247;&#x4E0D;&#x80FD;, &#x5B83;&#x5011;&#x50C5;&#x50C5;&#x662F;&#x901A;&#x904E;&#x819A;&#x6DFA;&#x7684;&#x7C21;&#x55AE;&#x7684;&#x59A5;&#x5354;&#x4F86;&#x7834;&#x58DE;&#x8A2D;&#x8A08;&#x7684;&#x4E00;&#x81F4;&#x6027;. &#x96BB;&#x6709;&#x901A;&#x904E;&#x7C21;&#x6F54;&#x7684;&#x8A2D;&#x8A08;, &#x7E94;&#x80FD;&#x8B93;&#x4E00;&#x500B;&#x7E6B;&#x7D71;&#x4FDD;&#x6301;&#x7A69;&#x5B9A;, &#x5B89;&#x5168;, &#x548C;&#x6301;&#x7E8C;&#x7684;&#x751F;&#x9577;.</p>
<p>Go&#x9805;&#x76EE;&#x5305;&#x62EC;&#x8A9E;&#x8A00;&#x672C;&#x8EAB;, &#x9644;&#x5E36;&#x7684;&#x5DE5;&#x5177;&#x548C;&#x6A19;&#x6E96;&#x5EAB;, &#x6700;&#x5F8C;&#x4F46;&#x4F75;&#x975E;&#x4E0D;&#x91CD;&#x8981;&#x7684;, &#x7C21;&#x6F54;&#x7DE8;&#x7A0B;&#x54F2;&#x5B78;&#x7684;&#x5BA3;&#x8A00;. &#x5C31;&#x4E8B;&#x5F8C;&#x7684;&#x76EE;&#x5149;&#x4F86;&#x770B;, Go&#x7684;&#x9019;&#x4E9B;&#x5730;&#x65B9;&#x90FD;&#x505A;&#x7684;&#x4E0D;&#x932F;: &#x64C1;&#x6709;&#x81EA;&#x52D5;&#x5783;&#x573E;&#x8FF4;&#x6536;, &#x4E00;&#x500B;&#x5305;&#x7E6B;&#x7D71;, &#x51FD;&#x6578;&#x4F5C;&#x7232;&#x4E00;&#x7B49;&#x516C;&#x6C11;, &#x8A5E;&#x6CD5;&#x4F5C;&#x7528;&#x57DF;, &#x7E6B;&#x7D71;&#x8ABF;&#x7528;&#x63A5;&#x53E3;, &#x96BB;&#x8B80;&#x7684;UTF8&#x5B57;&#x7B26;&#x4E32;. &#x4F46;&#x662F;Go&#x96BB;&#x6709;&#x76F8;&#x5C0D;&#x8F03;&#x5C11;&#x7684;&#x7279;&#x6027;, &#x4E5F;&#x4E0D;&#x592A;&#x53EF;&#x80FD;&#x5C0D;&#x6DFB;&#x52A0;&#x66F4;&#x591A;. &#x4F8B;&#x5982;, &#x5B83;&#x6C92;&#x6709;&#x96B1;&#x5F0F;&#x7684;&#x6578;&#x503C;&#x8F49;&#x63DB;, &#x6C92;&#x6709;&#x69CB;&#x9020;&#x51FD;&#x6578;&#x548C;&#x6790;&#x69CB;&#x51FD;&#x6578;, &#x6C92;&#x6709;&#x904B;&#x7B97;&#x7B26;&#x91CD;&#x8F09;, &#x6C92;&#x6709;&#x9ED8;&#x8A8D;&#x53C3;&#x6578;, &#x6C92;&#x6709;&#x7E7C;&#x627F;, &#x6C92;&#x6709;&#x6CDB;&#x578B;, &#x6C92;&#x6709;&#x7570;&#x5E38;, &#x6C92;&#x6709;&#x5B8F;, &#x6C92;&#x6709;&#x51FD;&#x6578;&#x8129;&#x98FE;, &#x6C92;&#x6709;&#x7DDA;&#x7A0B;&#x5C40;&#x90E8;&#x5B58;&#x5132;. &#x4F46;&#x662F;&#x8A9E;&#x8A00;&#x662F;&#x6210;&#x719F;&#x548C;&#x7A69;&#x5B9A;&#x7684;, &#x800C;&#x4E14;&#x4FDD;&#x8B49;&#x5411;&#x5F8C;&#x517C;&#x5BB9;: &#x4EE5;&#x524D;&#x7684;Go&#x7A0B;&#x5E8F;&#x53EF;&#x4EE5;&#x7528;&#x65B0;&#x7248;&#x672C;&#x7684;&#x7DE8;&#x8B6F;&#x5668;&#x548C;&#x6A19;&#x6E96;&#x5EAB;&#x4E0B;&#x69CB;&#x5EFA;.</p>
<p>Go&#x6709;&#x8DB3;&#x5920;&#x7684;&#x985E;&#x578B;&#x7E6B;&#x7D71;&#x4EE5;&#x907F;&#x514D;&#x52D5;&#x614B;&#x8A9E;&#x8A00;&#x4E2D;&#x90A3;&#x4E9B;&#x7C97;&#x5FC3;&#x7684;&#x985E;&#x578B;&#x932F;&#x8AA4;, &#x4F46;&#x662F;Go&#x7684;&#x985E;&#x578B;&#x7E6B;&#x7D71;&#x76F8;&#x6BD4;&#x50B3;&#x7D71;&#x7684;&#x5F37;&#x985E;&#x578B;&#x8A9E;&#x8A00;&#x53C8;&#x8981;&#x7C21;&#x6F54;&#x5F88;&#x591A;. &#x6709;&#x6642;&#x5019;&#x9019;&#x6703;&#x5C0E;&#x81F4;&#x4E00;&#x500B;&quot;&#x7121;&#x985E;&#x578B;&quot;&#x7684;&#x62BD;&#x8C61;&#x985E;&#x578B;, &#x4F46;&#x662F;Go&#x7A0B;&#x5E8F;&#x54E1;&#x4F75;&#x4E0D;&#x9700;&#x8981;&#x50CF; C++ &#x6216; Haskell &#x7A0B;&#x5E8F;&#x54E1;&#x90A3;&#x6A23;&#x7CFE;&#x7D50;&#x5177;&#x9AD4;&#x985E;&#x578B;&#x7684;&#x5B89;&#x5168;&#x5C6C;&#x6027;. &#x4F46;&#x5BE6;&#x8E10;&#x4E2D;Go&#x7684;&#x7C21;&#x6F54;&#x7684;&#x985E;&#x578B;&#x7E6B;&#x7D71;&#x7D66;&#x4E86;&#x7A0B;&#x5E8F;&#x54E1;&#x66F4;&#x591A;&#x7684;&#x5B89;&#x5168;&#x6027;&#x548C;&#x66F4;&#x597D;&#x7684;&#x904B;&#x884C;&#x6642;&#x6027;&#x80FD;.</p>
<p>Go &#x9F13;&#x52F5;&#x7576;&#x4EE3;&#x8A08;&#x7B97;&#x6A5F;&#x7E6B;&#x7D71;&#x8A2D;&#x8A08;&#x7684;&#x8A8D;&#x8B58;, &#x7279;&#x522B;&#x662F;&#x5C40;&#x90E8;&#x7684;&#x91CD;&#x8981;&#x6027;. &#x5B83;&#x7684;&#x5167;&#x7F6E;&#x6578;&#x64DA;&#x985E;&#x578B;&#x548C;&#x5927;&#x591A;&#x6578;&#x7684;&#x6E96;&#x5EAB;&#x6578;&#x64DA;&#x7D50;&#x69CB;&#x90FD;&#x7D93;&#x904E;&#x7CBE;&#x5FC3;&#x8A2D;&#x8A08;&#x800C;&#x907F;&#x514D;&#x986F;&#x5F0F;&#x7684;&#x521D;&#x59CB;&#x5316;&#x6216;&#x96B1;&#x5F0F;&#x7684;&#x69CB;&#x9020;&#x51FD;&#x6578;, &#x56E0;&#x6B64;&#x8F03;&#x5C11;&#x7684;&#x5167;&#x5B58;&#x5206;&#x914D;&#x548C;&#x5167;&#x5B58;&#x521D;&#x59CB;&#x5316;&#x88AB;&#x96B1;&#x85CF;&#x5728;&#x4E86;&#x4EE3;&#x78BC;&#x4E2D;. Go&#x7684;&#x805A;&#x5408;&#x985E;&#x578B;(&#x7D50;&#x69CB;&#x9AD4;&#x548C;&#x6578;&#x7D44;)&#x76F4;&#x63A5;&#x64CD;&#x4F5C;&#x5B83;&#x5011;&#x7684;&#x5143;&#x7D20;, &#x9700;&#x8981;&#x66F4;&#x5C11;&#x7684;&#x5B58;&#x5132;&#x7A7A;&#x9593;, &#x66F4;&#x5C11;&#x7684;&#x5167;&#x5B58;&#x5206;&#x914D;, &#x800C;&#x4E14;&#x6307;&#x91DD;&#x64CD;&#x4F5C;&#x6BD4;&#x5176;&#x4ED6;&#x9593;&#x63A5;&#x8A9E;&#x8A00;&#x4E5F;&#x66F4;&#x76F4;&#x63A5;. &#x7531;&#x65BC;&#x73FE;&#x4EE3;&#x8A08;&#x7B97;&#x6A5F;&#x662F;&#x4E00;&#x500B;&#x4F75;&#x884C;&#x7684;&#x6A5F;&#x5668;, Go&#x63D0;&#x4F9B;&#x4E86;&#x57FA;&#x65BC;CSP&#x7684;&#x4F75;&#x767C;&#x7279;&#x6027;. Go&#x7684;&#x52D5;&#x614B;&#x68E7;&#x4F7F;&#x5F97;&#x8F15;&#x91CF;&#x7D1A;&#x7DDA;&#x7A0B;goroutine&#x7684;&#x521D;&#x59CB;&#x68E7;&#x5F88;&#x5C0F;, &#x5275;&#x5EFA;&#x4E00;&#x500B;goroutine&#x7684;&#x4EE3;&#x50F9;&#x5F88;&#x5C0F;, &#x56E0;&#x6B64;&#x5275;&#x5EFA;&#x767E;&#x842C;&#x7D1A;&#x7684;goroutine&#x662F;&#x53EF;&#x884C;&#x7684;.</p>
<p>Go&#x7684;&#x6A19;&#x6E96;&#x5EAB;(&#x901A;&#x5E38;&#x88AB;&#x7A31;&#x7232;&#x81EA;&#x5E36;&#x7684;&#x96FB;&#x6C60;), &#x63D0;&#x4F9B;&#x4E86;&#x6E05;&#x6670;&#x7684;&#x69CB;&#x5EFA;&#x6A21;&#x584A;&#x548C;&#x63A5;&#x53E3;, &#x5305;&#x542B; I/O, &#x6587;&#x672C;&#x8655;&#x7406;, &#x5716;&#x50CF;, &#x5BC6;&#x78BC;&#x5B78;, &#x7DB2;&#x7D61;, &#x548C;&#x5206;&#x5E03;&#x5F0F;&#x61C9;&#x7528;&#x7A0B;&#x5E8F;, &#x4F75;&#x652F;&#x6301;&#x8A31;&#x591A;&#x6A19;&#x6E96;&#x7684;&#x6587;&#x4EF6;&#x683C;&#x5F0F;&#x548C;&#x5354;&#x8B70;. &#x5EAB;&#x548C;&#x5DE5;&#x5177;&#x4F7F;&#x7528;&#x5927;&#x91CF;&#x7684;&#x7D04;&#x5B9A;&#x4F86;&#x6E1B;&#x5C11;&#x984D;&#x5916;&#x7684;&#x914D;&#x7F6E;&#x548C;&#x89E3;&#x91CB;, &#x5F9E;&#x800C;&#x7C21;&#x5316;&#x7A0B;&#x5E8F;&#x7684;&#x908F;&#x8F2F;, &#x800C;&#x4E14;&#x6BCF;&#x500B;Go&#x7A0B;&#x5E8F;&#x7D50;&#x69CB;&#x90FD;&#x662F;&#x5982;&#x6B64;&#x7684;&#x76F8;&#x4F3C;, &#x56E0;&#x6B64;&#x4E5F;&#x66F4;&#x5BB9;&#x6613;&#x5B78;&#x7FD2;. &#x69CB;&#x5EFA;&#x9805;&#x76EE;&#x4F7F;&#x7528;&#x7684;Go&#x5DE5;&#x5177;&#x96BB;&#x4F7F;&#x7528;&#x6587;&#x4EF6;&#x540D;&#x548C;&#x6A19;&#x8B58;&#x7B26;&#x540D;&#x7A31;, &#x4E00;&#x500B;&#x5076;&#x723E;&#x7684;&#x7279;&#x6B8A;&#x8A3B;&#x91CB;&#x4F86;&#x78BA;&#x5B9A;&#x6240;&#x6709;&#x7684;&#x5EAB;, &#x53EF;&#x57F7;&#x884C;&#x6587;&#x4EF6;, &#x6E2C;&#x8A66;, &#x57FA;&#x6E96;&#x6E2C;&#x8A66;, &#x4F8B;&#x5B50;, &#x7279;&#x5B9A;&#x65BC;&#x5E73;&#x98B1;&#x7684;&#x8B8A;&#x91CF;, &#x9805;&#x76EE;&#x7684;&#x6587;&#x6A94;; Go&#x6E90;&#x4EE3;&#x78BC;&#x672C;&#x8EAB;&#x5305;&#x542B;&#x69CB;&#x5EFA;&#x898F;&#x8303;.</p>
<p>&#x6240;&#x6709;&#x7684;&#x7DE8;&#x7A0B;&#x8A9E;&#x8A00;&#x90FD;&#x53CD;&#x6620;&#x4E86;&#x8A9E;&#x8A00;&#x8A2D;&#x8A08;&#x8005;&#x5C0D;&#x7DE8;&#x7A0B;&#x54F2;&#x5B78;&#x7684;&#x53CD;&#x601D;&#xFF0C;&#x901A;&#x5E38;&#x5305;&#x62EC;&#x4E4B;&#x524D;&#x7684;&#x8A9E;&#x8A00;&#x6240;&#x66B4;&#x9732;&#x7684;&#x4E00;&#x4E9B;&#x4E0D;&#x8DB3;&#x5730;&#x65B9;&#x7684;&#x6539;&#x9032;&#x3002;Go&#x9805;&#x76EE;&#x662F;&#x5728;Google&#x516C;&#x53F8;&#x7DAD;&#x8B77;&#x8D85;&#x7D1A;&#x8907;&#x96DC;&#x7684;&#x5E7E;&#x500B;&#x8EDF;&#x4EF6;&#x7E6B;&#x7D71;&#x9047;&#x5230;&#x7684;&#x4E00;&#x4E9B;&#x554F;&#x984C;&#x7684;&#x53CD;&#x601D;&#xFF08;&#x4F46;&#x662F;&#x9019;&#x985E;&#x554F;&#x984C;&#x7D76;&#x4E0D;&#x662F;Google&#x516C;&#x53F8;&#x6240;&#x7279;&#x6709;&#x7684;&#xFF09;&#x3002;</p>
<p>&#x6B63;&#x5982;Rob Pike&#x6240;&#x8AAC;&#xFF0C;&#x201C;&#x8EDF;&#x4EF6;&#x7684;&#x8907;&#x96DC;&#x6027;&#x662F;&#x4E58;&#x6CD5;&#x7D1A;&#x76F8;&#x95DC;&#x7684;&#x201D;&#xFF0C;&#x901A;&#x904E;&#x589E;&#x52A0;&#x4E00;&#x500B;&#x90E8;&#x5206;&#x7684;&#x8907;&#x96DC;&#x6027;&#x4F86;&#x8129;&#x8907;&#x554F;&#x984C;&#x901A;&#x5E38;&#x5C07;&#x6162;&#x6162;&#x5730;&#x589E;&#x52A0;&#x5176;&#x4ED6;&#x90E8;&#x5206;&#x7684;&#x8907;&#x96DC;&#x6027;&#x3002;&#x901A;&#x904E;&#x589E;&#x52A0;&#x529F;&#x80FD;&#x548C;&#x9078;&#x9805;&#x548C;&#x914D;&#x7F6E;&#x662F;&#x8129;&#x8907;&#x554F;&#x984C;&#x7684;&#x6700;&#x5FEB;&#x7684;&#x9014;&#x5F91;&#xFF0C;&#x4F46;&#x662F;&#x9019;&#x5F88;&#x5BB9;&#x6613;&#x8B93;&#x4EBA;&#x5FD8;&#x8A18;&#x7C21;&#x6F54;&#x7684;&#x5167;&#x6DB5;&#xFF0C;&#x537D;&#x4F7F;&#x5F9E;&#x9577;&#x9060;&#x4F86;&#x770B;&#xFF0C;&#x7C21;&#x6F54;&#x4F9D;&#x7136;&#x662F;&#x597D;&#x8EDF;&#x4EF6;&#x7684;&#x95DC;&#x9375;&#x56E0;&#x7D20;&#x3002;</p>
<p>&#x7C21;&#x6F54;&#x7684;&#x8A2D;&#x8A08;&#x9700;&#x8981;&#x5728;&#x5DE5;&#x4F5C;&#x958B;&#x59CB;&#x7684;&#x6642;&#x5019;&#x820D;&#x68C4;&#x4E0D;&#x5FC5;&#x8981;&#x7684;&#x60F3;&#x6CD5;&#xFF0C;&#x4F75;&#x4E14;&#x5728;&#x8EDF;&#x4EF6;&#x7684;&#x751F;&#x547D;&#x9031;&#x671F;&#x5167;&#x56B4;&#x683C;&#x5340;&#x522B;&#x597D;&#x7684;&#x6539;&#x8B8A;&#x6216;&#x58DE;&#x7684;&#x6539;&#x8B8A;&#x3002;&#x901A;&#x904E;&#x8DB3;&#x5920;&#x7684;&#x52AA;&#x529B;&#xFF0C;&#x4E00;&#x500B;&#x597D;&#x7684;&#x6539;&#x8B8A;&#x53EF;&#x4EE5;&#x5728;&#x4E0D;&#x7834;&#x58DE;&#x539F;&#x6709;&#x5B8C;&#x6574;&#x6982;&#x5FF5;&#x7684;&#x524D;&#x63D0;&#x4E0B;&#x4FDD;&#x6301;&#x81EA;&#x9069;&#x61C9;&#xFF0C;&#x6B63;&#x5982;Fred Brooks&#x6240;&#x8AAC;&#x7684;&#x201C;&#x6982;&#x5FF5;&#x5B8C;&#x6574;&#x6027;&#x201D;&#xFF1B;&#x800C;&#x4E00;&#x500B;&#x58DE;&#x7684;&#x6539;&#x8B8A;&#x5247;&#x4E0D;&#x80FD;&#x9054;&#x5230;&#x9019;&#x500B;&#x6548;&#x679C;&#xFF0C;&#x5B83;&#x5011;&#x50C5;&#x50C5;&#x662F;&#x901A;&#x904E;&#x819A;&#x6DFA;&#x7684;&#x548C;&#x7C21;&#x55AE;&#x7684;&#x59A5;&#x5354;&#x4F86;&#x7834;&#x58DE;&#x539F;&#x6709;&#x8A2D;&#x8A08;&#x7684;&#x4E00;&#x81F4;&#x6027;&#x3002;&#x96BB;&#x6709;&#x901A;&#x904E;&#x7C21;&#x6F54;&#x7684;&#x8A2D;&#x8A08;&#xFF0C;&#x7E94;&#x80FD;&#x8B93;&#x4E00;&#x500B;&#x7E6B;&#x7D71;&#x4FDD;&#x6301;&#x7A69;&#x5B9A;&#x3001;&#x5B89;&#x5168;&#x548C;&#x6301;&#x7E8C;&#x7684;&#x9032;&#x5316;&#x3002;</p>
<p>Go&#x9805;&#x76EE;&#x5305;&#x62EC;&#x7DE8;&#x7A0B;&#x8A9E;&#x8A00;&#x672C;&#x8EAB;&#xFF0C;&#x9644;&#x5E36;&#x4E86;&#x76F8;&#x95DC;&#x7684;&#x5DE5;&#x5177;&#x548C;&#x6A19;&#x6E96;&#x5EAB;&#xFF0C;&#x6700;&#x5F8C;&#x4F46;&#x4F75;&#x975E;&#x4EE3;&#x8868;&#x4E0D;&#x91CD;&#x8981;&#x7684;&#xFF0C;&#x95DC;&#x65BC;&#x7C21;&#x6F54;&#x7DE8;&#x7A0B;&#x54F2;&#x5B78;&#x7684;&#x5BA3;&#x8A00;&#x3002;&#x5C31;&#x4E8B;&#x5F8C;&#x8AF8;&#x845B;&#x7684;&#x89D2;&#x5EA6;&#x4F86;&#x770B;&#xFF0C;Go&#x8A9E;&#x8A00;&#x7684;&#x9019;&#x4E9B;&#x5730;&#x65B9;&#x90FD;&#x505A;&#x7684;&#x9084;&#x4E0D;&#x932F;&#xFF1A;&#x64C1;&#x6709;&#x81EA;&#x52D5;&#x5783;&#x573E;&#x8FF4;&#x6536;&#x3001;&#x4E00;&#x500B;&#x5305;&#x7E6B;&#x7D71;&#x3001;&#x51FD;&#x6578;&#x4F5C;&#x7232;&#x4E00;&#x7B49;&#x516C;&#x6C11;&#x3001;&#x8A5E;&#x6CD5;&#x4F5C;&#x7528;&#x57DF;&#x3001;&#x7E6B;&#x7D71;&#x8ABF;&#x7528;&#x63A5;&#x53E3;&#x3001;&#x96BB;&#x8B80;&#x7684;UTF8&#x5B57;&#x7B26;&#x4E32;&#x7B49;&#x3002;&#x4F46;&#x662F;Go&#x8A9E;&#x8A00;&#x672C;&#x8EAB;&#x96BB;&#x6709;&#x5F88;&#x5C11;&#x7684;&#x7279;&#x6027;&#xFF0C;&#x4E5F;&#x4E0D;&#x592A;&#x53EF;&#x80FD;&#x6DFB;&#x52A0;&#x592A;&#x591A;&#x7684;&#x7279;&#x6027;&#x3002;&#x4F8B;&#x5982;&#xFF0C;&#x5B83;&#x6C92;&#x6709;&#x96B1;&#x5F0F;&#x7684;&#x6578;&#x503C;&#x8F49;&#x63DB;&#xFF0C;&#x6C92;&#x6709;&#x69CB;&#x9020;&#x51FD;&#x6578;&#x548C;&#x6790;&#x69CB;&#x51FD;&#x6578;&#xFF0C;&#x6C92;&#x6709;&#x904B;&#x7B97;&#x7B26;&#x91CD;&#x8F09;&#xFF0C;&#x6C92;&#x6709;&#x9ED8;&#x8A8D;&#x53C3;&#x6578;&#xFF0C;&#x4E5F;&#x6C92;&#x6709;&#x7E7C;&#x627F;&#xFF0C;&#x6C92;&#x6709;&#x6CDB;&#x578B;&#xFF0C;&#x6C92;&#x6709;&#x7570;&#x5E38;&#xFF0C;&#x6C92;&#x6709;&#x5B8F;&#xFF0C;&#x6C92;&#x6709;&#x51FD;&#x6578;&#x8129;&#x98FE;&#xFF0C;&#x66F4;&#x6C92;&#x6709;&#x7DDA;&#x7A0B;&#x5C40;&#x90E8;&#x5B58;&#x5132;&#x3002;&#x4F46;&#x662F;&#x8A9E;&#x8A00;&#x672C;&#x8EAB;&#x662F;&#x6210;&#x719F;&#x548C;&#x7A69;&#x5B9A;&#x7684;&#xFF0C;&#x800C;&#x4E14;&#x627F;&#x8AFE;&#x4FDD;&#x8B49;&#x5411;&#x5F8C;&#x517C;&#x5BB9;&#xFF1A;&#x7528;&#x4E4B;&#x524D;&#x7684;Go&#x8A9E;&#x8A00;&#x7DE8;&#x5BEB;&#x7A0B;&#x5E8F;&#x53EF;&#x4EE5;&#x7528;&#x65B0;&#x7248;&#x672C;&#x7684;Go&#x8A9E;&#x8A00;&#x7DE8;&#x8B6F;&#x5668;&#x548C;&#x6A19;&#x6E96;&#x5EAB;&#x76F4;&#x63A5;&#x69CB;&#x5EFA;&#x800C;&#x4E0D;&#x9700;&#x8981;&#x8129;&#x6539;&#x4EE3;&#x78BC;&#x3002;</p>
<p>Go&#x8A9E;&#x8A00;&#x6709;&#x8DB3;&#x5920;&#x7684;&#x985E;&#x578B;&#x7E6B;&#x7D71;&#x4EE5;&#x907F;&#x514D;&#x52D5;&#x614B;&#x8A9E;&#x8A00;&#x4E2D;&#x90A3;&#x4E9B;&#x7C97;&#x5FC3;&#x7684;&#x985E;&#x578B;&#x932F;&#x8AA4;&#xFF0C;&#x4F46;&#x662F;Go&#x8A9E;&#x8A00;&#x7684;&#x985E;&#x578B;&#x7E6B;&#x7D71;&#x76F8;&#x6BD4;&#x50B3;&#x7D71;&#x7684;&#x5F37;&#x985E;&#x578B;&#x8A9E;&#x8A00;&#x53C8;&#x8981;&#x7C21;&#x6F54;&#x5F88;&#x591A;&#x3002;&#x96D6;&#x7136;&#x6709;&#x6642;&#x5019;&#x9019;&#x6703;&#x5C0E;&#x81F4;&#x4E00;&#x500B;&#x201C;&#x7121;&#x985E;&#x578B;&#x201D;&#x7684;&#x62BD;&#x8C61;&#x985E;&#x578B;&#x6982;&#x5FF5;&#xFF0C;&#x4F46;&#x662F;Go&#x8A9E;&#x8A00;&#x7A0B;&#x5E8F;&#x54E1;&#x4F75;&#x4E0D;&#x9700;&#x8981;&#x50CF;C++&#x6216;Haskell&#x7A0B;&#x5E8F;&#x54E1;&#x90A3;&#x6A23;&#x7CFE;&#x7D50;&#x65BC;&#x5177;&#x9AD4;&#x985E;&#x578B;&#x7684;&#x5B89;&#x5168;&#x5C6C;&#x6027;&#x3002;&#x5728;&#x5BE6;&#x8E10;&#x4E2D;Go&#x8A9E;&#x8A00;&#x7C21;&#x6F54;&#x7684;&#x985E;&#x578B;&#x7E6B;&#x7D71;&#x7D66;&#x4E86;&#x7A0B;&#x5E8F;&#x54E1;&#x5E36;&#x4F86;&#x4E86;&#x66F4;&#x591A;&#x7684;&#x5B89;&#x5168;&#x6027;&#x548C;&#x66F4;&#x597D;&#x7684;&#x904B;&#x884C;&#x6642;&#x6027;&#x80FD;&#x3002;</p>
<p>Go&#x8A9E;&#x8A00;&#x9F13;&#x52F5;&#x7576;&#x4EE3;&#x8A08;&#x7B97;&#x6A5F;&#x7E6B;&#x7D71;&#x8A2D;&#x8A08;&#x7684;&#x539F;&#x5247;&#xFF0C;&#x7279;&#x522B;&#x662F;&#x5C40;&#x90E8;&#x7684;&#x91CD;&#x8981;&#x6027;&#x3002;&#x5B83;&#x7684;&#x5167;&#x7F6E;&#x6578;&#x64DA;&#x985E;&#x578B;&#x548C;&#x5927;&#x591A;&#x6578;&#x7684;&#x6E96;&#x5EAB;&#x6578;&#x64DA;&#x7D50;&#x69CB;&#x90FD;&#x7D93;&#x904E;&#x7CBE;&#x5FC3;&#x8A2D;&#x8A08;&#x800C;&#x907F;&#x514D;&#x986F;&#x5F0F;&#x7684;&#x521D;&#x59CB;&#x5316;&#x6216;&#x96B1;&#x5F0F;&#x7684;&#x69CB;&#x9020;&#x51FD;&#x6578;&#xFF0C;&#x56E0;&#x7232;&#x5F88;&#x5C11;&#x7684;&#x5167;&#x5B58;&#x5206;&#x914D;&#x548C;&#x5167;&#x5B58;&#x521D;&#x59CB;&#x5316;&#x4EE3;&#x78BC;&#x88AB;&#x96B1;&#x85CF;&#x5728;&#x5EAB;&#x4EE3;&#x78BC;&#x4E2D;&#x4E86;&#x3002;Go&#x8A9E;&#x8A00;&#x7684;&#x805A;&#x5408;&#x985E;&#x578B;&#xFF08;&#x7D50;&#x69CB;&#x9AD4;&#x548C;&#x6578;&#x7D44;&#xFF09;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x64CD;&#x4F5C;&#x5B83;&#x5011;&#x7684;&#x5143;&#x7D20;&#xFF0C;&#x96BB;&#x9700;&#x8981;&#x66F4;&#x5C11;&#x7684;&#x5B58;&#x5132;&#x7A7A;&#x9593;&#x3001;&#x66F4;&#x5C11;&#x7684;&#x5167;&#x5B58;&#x5206;&#x914D;&#xFF0C;&#x800C;&#x4E14;&#x6307;&#x91DD;&#x64CD;&#x4F5C;&#x6BD4;&#x5176;&#x4ED6;&#x9593;&#x63A5;&#x64CD;&#x4F5C;&#x7684;&#x8A9E;&#x8A00;&#x4E5F;&#x66F4;&#x6709;&#x6548;&#x7387;&#x3002;&#x7531;&#x65BC;&#x73FE;&#x4EE3;&#x8A08;&#x7B97;&#x6A5F;&#x662F;&#x4E00;&#x500B;&#x4F75;&#x884C;&#x7684;&#x6A5F;&#x5668;&#xFF0C;Go&#x8A9E;&#x8A00;&#x63D0;&#x4F9B;&#x4E86;&#x57FA;&#x65BC;CSP&#x7684;&#x4F75;&#x767C;&#x7279;&#x6027;&#x652F;&#x6301;&#x3002;Go&#x8A9E;&#x8A00;&#x7684;&#x52D5;&#x614B;&#x68E7;&#x4F7F;&#x5F97;&#x8F15;&#x91CF;&#x7D1A;&#x7DDA;&#x7A0B;goroutine&#x7684;&#x521D;&#x59CB;&#x68E7;&#x53EF;&#x4EE5;&#x5F88;&#x5C0F;&#xFF0C;&#x56E0;&#x6B64;&#x5275;&#x5EFA;&#x4E00;&#x500B;goroutine&#x7684;&#x4EE3;&#x50F9;&#x5F88;&#x5C0F;&#xFF0C;&#x5275;&#x5EFA;&#x767E;&#x842C;&#x7D1A;&#x7684;goroutine&#x5B8C;&#x5168;&#x662F;&#x53EF;&#x884C;&#x7684;&#x3002;</p>
<p>Go&#x8A9E;&#x8A00;&#x7684;&#x6A19;&#x6E96;&#x5EAB;&#xFF08;&#x901A;&#x5E38;&#x88AB;&#x7A31;&#x7232;&#x8A9E;&#x8A00;&#x81EA;&#x5E36;&#x7684;&#x96FB;&#x6C60;&#xFF09;&#xFF0C;&#x63D0;&#x4F9B;&#x4E86;&#x6E05;&#x6670;&#x7684;&#x69CB;&#x5EFA;&#x6A21;&#x584A;&#x548C;&#x516C;&#x5171;&#x63A5;&#x53E3;&#xFF0C;&#x5305;&#x542B;I/O&#x64CD;&#x4F5C;&#x3001;&#x6587;&#x672C;&#x8655;&#x7406;&#x3001;&#x5716;&#x50CF;&#x3001;&#x5BC6;&#x78BC;&#x5B78;&#x3001;&#x7DB2;&#x7D61;&#x548C;&#x5206;&#x5E03;&#x5F0F;&#x61C9;&#x7528;&#x7A0B;&#x5E8F;&#x7B49;&#xFF0C;&#x4F75;&#x652F;&#x6301;&#x8A31;&#x591A;&#x6A19;&#x6E96;&#x5316;&#x7684;&#x6587;&#x4EF6;&#x683C;&#x5F0F;&#x548C;&#x7DE8;&#x89E3;&#x78BC;&#x5354;&#x8B70;&#x3002;&#x5EAB;&#x548C;&#x5DE5;&#x5177;&#x4F7F;&#x7528;&#x4E86;&#x5927;&#x91CF;&#x7684;&#x7D04;&#x5B9A;&#x4F86;&#x6E1B;&#x5C11;&#x984D;&#x5916;&#x7684;&#x914D;&#x7F6E;&#x548C;&#x89E3;&#x91CB;&#xFF0C;&#x5F9E;&#x800C;&#x6700;&#x7D42;&#x7C21;&#x5316;&#x7A0B;&#x5E8F;&#x7684;&#x908F;&#x8F2F;&#xFF0C;&#x800C;&#x4E14;&#x6BCF;&#x500B;Go&#x7A0B;&#x5E8F;&#x7D50;&#x69CB;&#x90FD;&#x662F;&#x5982;&#x6B64;&#x7684;&#x76F8;&#x4F3C;&#xFF0C;&#x56E0;&#x6B64;Go&#x7A0B;&#x5E8F;&#x4E5F;&#x5F88;&#x5BB9;&#x6613;&#x5B78;&#x7FD2;&#x3002;&#x4F7F;&#x7528;Go&#x8A9E;&#x8A00;&#x81EA;&#x5E36;&#x5DE5;&#x5177;&#x69CB;&#x5EFA;Go&#x8A9E;&#x8A00;&#x9805;&#x76EE;&#x96BB;&#x9700;&#x8981;&#x4F7F;&#x7528;&#x6587;&#x4EF6;&#x540D;&#x548C;&#x6A19;&#x8B58;&#x7B26;&#x540D;&#x7A31;, &#x4E00;&#x500B;&#x5076;&#x723E;&#x7684;&#x7279;&#x6B8A;&#x8A3B;&#x91CB;&#x4F86;&#x78BA;&#x5B9A;&#x6240;&#x6709;&#x7684;&#x5EAB;&#x3001;&#x53EF;&#x57F7;&#x884C;&#x6587;&#x4EF6;&#x3001;&#x6E2C;&#x8A66;&#x3001;&#x57FA;&#x6E96;&#x6E2C;&#x8A66;&#x3001;&#x4F8B;&#x5B50;&#x3001;&#x4EE5;&#x53CA;&#x7279;&#x5B9A;&#x65BC;&#x5E73;&#x98B1;&#x7684;&#x8B8A;&#x91CF;&#x3001;&#x9805;&#x76EE;&#x7684;&#x6587;&#x6A94;&#x7B49;&#xFF1B;Go&#x8A9E;&#x8A00;&#x6E90;&#x4EE3;&#x78BC;&#x672C;&#x8EAB;&#x5C31;&#x5305;&#x542B;&#x4E86;&#x69CB;&#x5EFA;&#x898F;&#x8303;&#x3002;</p>
</section>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="0.3" data-chapter-title="本書的組織" data-filepath="ch0/ch0-03.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="0.3" data-chapter-title="本書的組織" data-filepath="ch0/ch0-03.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>
@@ -2024,35 +2024,26 @@
<section class="normal" id="section-">
<h2 id="&#x672C;&#x66F8;&#x7684;&#x7D44;&#x7E54;">&#x672C;&#x66F8;&#x7684;&#x7D44;&#x7E54;</h2>
<p>&#x6211;&#x5011;&#x5047;&#x8A2D;&#x4F60;&#x6709;&#x4E00;&#x500B;&#x6216;&#x591A;&#x500B;&#x5176;&#x4ED6;&#x7DE8;&#x7A0B;&#x8A9E;&#x8A00;&#x7684;&#x4F7F;&#x7528;&#x7D93;&#x6B77;, &#x4E0D;&#x904E;&#x662F;&#x985E;&#x4F3C; C&#x3001;c++,&#x548C;Java &#x7684;&#x7DE8;&#x8B6F;&#x578B;&#x8A9E;&#x8A00;,
&#x9084;&#x662F;&#x985E;&#x4F3C; Python, Ruby, JavaScript &#x7684;&#x8173;&#x672C;&#x8A9E;&#x8A00;, &#x56E0;&#x6B64;&#x6211;&#x5011;&#x4E0D;&#x6703;&#x76F8;&#x5C0D;&#x5B8C;&#x5168;&#x7684;&#x7DE8;&#x7A0B;&#x8A9E;&#x8A00;&#x521D;&#x5B78;&#x8005;&#x90A3;&#x6A23;&#x89E3;&#x91CB;&#x6240;&#x6709;&#x7684;&#x7D30;&#x7BC0;.
&#x56E0;&#x7232;Go&#x7684;&#x8A9E;&#x8A00;&#x7684; &#x8B8A;&#x91CF;,&#x5E38;&#x91CF;,&#x8868;&#x9054;&#x5F0F;,&#x63A7;&#x88FD;&#x6D41;&#x548C;&#x51FD;&#x6578;&#x7B49;&#x8A9E;&#x6CD5;&#x4E5F;&#x662F;&#x985E;&#x4F3C;&#x7684;.</p>
<p>&#x7B2C;&#x4E00;&#x7AE0;&#x5305;&#x542B;&#x4E86;Go&#x654E;&#x7A0B;&#x7684;&#x57FA;&#x672C;&#x7D50;&#x69CB;, &#x901A;&#x904E;&#x5341;&#x5E7E;&#x500B;&#x7A0B;&#x5E8F;&#x4ECB;&#x7D39;&#x4E86;&#x7528;Go&#x5982;&#x4F55;&#x5BE6;&#x73FE; &#x985E;&#x4F3C;&#x8B80;&#x5BEB;&#x6587;&#x4EF6;, &#x6587;&#x672C;&#x683C;&#x5F0F;&#x5316;, &#x5275;&#x5EFA;&#x5716;&#x50CF;,
&#x7DB2;&#x7D61;&#x5BA2;&#x6236;&#x7AEF;&#x548C;&#x670D;&#x52D9;&#x5668;&#x901A;&#x8A0A; &#x7B49;&#x65E5;&#x5E38;&#x5DE5;&#x4F5C;.</p>
<p>&#x7B2C;&#x4E8C;&#x7AE0;&#x63CF;&#x8FF0;&#x4E86;&#x4E00;&#x500B;Go&#x7A0B;&#x5E8F;&#x7684;&#x57FA;&#x672C;&#x5143;&#x7D20;&#x7D50;&#x69CB;, &#x8B8A;&#x91CF;, &#x5B9A;&#x7FA9;&#x65B0;&#x7684;&#x985E;&#x578B;, &#x5305;&#x548C;&#x6587;&#x4EF6;, &#x548C;&#x4F5C;&#x7528;&#x57DF;. &#x7B2C;&#x4E09;&#x7AE0;&#x8A0E;&#x8AD6;&#x4E86;&#x6578;&#x5B57;, &#x5E03;&#x723E;&#x503C;, &#x5B57;&#x7B26;&#x4E32;&#x548C;&#x5E38;&#x91CF;, &#x4F75;&#x6F14;&#x793A;&#x4E86;&#x5982;&#x4F55;&#x986F;&#x793A;&#x548C;&#x8655;&#x7406;Unicode. &#x7B2C;&#x56DB;&#x7AE0;&#x63CF;&#x8FF0;&#x4E86;&#x8907;&#x5408;&#x985E;&#x578B;, &#x5F9E;&#x7C21;&#x55AE;&#x7684;&#x6578;&#x7D44;, &#x5B57;&#x5178;, &#x5207;&#x7247;, &#x5230;&#x52D5;&#x614B;&#x5217;&#x8868;. &#x7B2C;&#x4E94;&#x7AE0;&#x6DB5;&#x84CB;&#x4E86;&#x51FD;&#x6578;, &#x4F75;&#x8A0E;&#x8AD6;&#x4E86;&#x932F;&#x8AA4;&#x8655;&#x7406;, panic &#x548C; recover, &#x548C; defer &#x8A9E;&#x53E5;.</p>
<p>&#x7B2C;&#x4E09;&#x7AE0;&#x8A0E;&#x8AD6;&#x4E86;&#x6578;&#x5B57;&#x3001;&#x5E03;&#x723E;&#x503C;&#x3001;&#x5B57;&#x7B26;&#x4E32;&#x548C;&#x5E38;&#x6578;,&#x4F75;&#x89E3;&#x91CB;&#x986F;&#x793A;&#x8655;&#x7406;Unicode&#x3002;
&#x7B2C;&#x56DB;&#x7AE0;&#x63CF;&#x8FF0;&#x4E86;&#x8907;&#x5408;&#x985E;&#x578B;,&#x985E;&#x578B;&#x5EFA;&#x7ACB;&#x4F7F;&#x7528;&#x6578;&#x7D44;,&#x5F9E;&#x7C21;&#x55AE;&#x7684;&#x5730;&#x5716;,&#x7D50;&#x69CB;,&#x548C;&#x5207;&#x5272;&#x7684;&#x65B9;&#x6CD5;&#x53BB;&#x52D5;&#x614B;&#x5217;&#x8868;&#x3002;&#x7B2C;&#x4E94;&#x7AE0;&#x6DB5;&#x84CB;&#x4E86;&#x51FD;&#x6578;&#x548C;&#x8A0E;&#x8AD6;&#x932F;&#x8AA4;&#x8655;&#x7406;,&#x6050;&#x614C;&#x548C;&#x6062;&#x8907;,&#x800C;&#x63A8;&#x9072;&#x7684;&#x9673;&#x8FF0;&#x3002;</p>
<p>&#x7B2C;&#x4E00;&#x7AE0;&#x5230;&#x7B2C;&#x4E94;&#x7AE0;&#x662F;&#x57FA;&#x790E;&#x90E8;&#x5206;, &#x4EFB;&#x4F55;&#x4E3B;&#x6D41;&#x547D;&#x4EE4;&#x5F0F;&#x8A9E;&#x8A00;&#x7684;&#x4E00;&#x90E8;&#x5206;&#x90FD;&#x662F;&#x985E;&#x4F3C;&#x7684;. &#x96D6;&#x7136;&#x6709;&#x6642;&#x5019;Go&#x7684;&#x8A9E;&#x6CD5;&#x548C;&#x98A8;&#x683C;&#x6703;&#x6709;&#x81EA;&#x5DF1;&#x7684;&#x7279;&#x8272;, &#x4F46;&#x662F;&#x5927;&#x591A;&#x6578;&#x7A0B;&#x5E8F;&#x54E1;&#x5C07;&#x5F88;&#x5FEB;&#x9069;&#x61C9;.
&#x5269;&#x4E0B;&#x7684;&#x7AE0;&#x7BC0;&#x662F;Go&#x4E2D;&#x7279;&#x6709;&#x7684;&#x90E8;&#x5206;: &#x65B9;&#x6CD5;, &#x63A5;&#x53E3;, &#x4F75;&#x767C;, &#x5305;, &#x6E2C;&#x8A66;&#x548C;&#x53CD;&#x5C04;&#x7B49;.</p>
<p>Go&#x7684;&#x9762;&#x5411;&#x5C0D;&#x8C61;&#x662F;&#x4E0D;&#x540C;&#x5C0B;&#x5E38;&#x7684;. &#x5B83;&#x6C92;&#x6709;&#x985E;&#x5C64;&#x6B21;&#x7D50;&#x69CB;, &#x751A;&#x81F3;&#x6C92;&#x6709;&#x985E;; &#x50C5;&#x50C5;&#x662F;&#x901A;&#x904E;&#x7D44;&#x5408;(&#x800C;&#x4E0D;&#x662F;&#x7E7C;&#x627F;)&#x7C21;&#x55AE;&#x7684;&#x5C0D;&#x8C61;&#x4F86;&#x69CB;&#x5EFA;&#x8907;&#x96DC;&#x7684;&#x5C0D;&#x8C61;.
&#x65B9;&#x6CD5;&#x4E0D;&#x50C5;&#x50C5;&#x53EF;&#x4EE5;&#x5B9A;&#x7FA9;&#x5728;&#x7D50;&#x69CB;&#x9AD4;&#x4E0A;, &#x800C;&#x662F;&#x53EF;&#x4EE5;&#x5728;&#x4EFB;&#x4F55;&#x7528;&#x6236;&#x81EA;&#x5DF1;&#x5B9A;&#x7FA9;&#x7684;&#x985E;&#x578B;&#x4E0A;; &#x4F75;&#x4E14;&#x5177;&#x9AD4;&#x985E;&#x578B;&#x548C;&#x62BD;&#x8C61;&#x985E;&#x578B;(&#x63A5;&#x53E3;)&#x4E4B;&#x9593;&#x7684;&#x95DC;&#x7E6B;&#x662F;&#x96B1;&#x5F0F;&#x7684;,
&#x6240;&#x4EE5;&#x5F88;&#x591A;&#x985E;&#x578B;&#x7684;&#x8A2D;&#x8A08;&#x8005;&#x53EF;&#x80FD;&#x4F75;&#x4E0D;&#x77E5;&#x9053;&#x8A72;&#x985E;&#x578B;&#x5230;&#x5E95;&#x6EFF;&#x8DB3;&#x4E86;&#x54EA;&#x4E9B;&#x63A5;&#x53E3;. &#x65B9;&#x6CD5;&#x5728;&#x7B2C;&#x516D;&#x7AE0;&#x8A0E;&#x8AD6;, &#x63A5;&#x53E3;&#x5728;&#x7B2C;&#x4E03;&#x7AE0;&#x5C07;&#x8A0E;&#x8AD6;.</p>
<p>&#x7B2C;&#x516B;&#x7AE0;&#x8A0E;&#x8AD6;&#x4E86;&#x57FA;&#x65BC;&#x9806;&#x5E8F;&#x901A;&#x4FE1;&#x9032;&#x7A0B;(CSP)&#x7684;&#x6982;&#x5FF5;&#x7684;&#x4F75;&#x767C;&#x7DE8;&#x7A0B;, &#x4F7F;&#x7528; goroutines &#x548C; channels. &#x7B2C;&#x4E5D;&#x7AE0;&#x8A0E;&#x8AD6;&#x4E86;&#x66F4;&#x7232;&#x50B3;&#x7D71;&#x7684;&#x57FA;&#x65BC;&#x5171;&#x4EAB;&#x8B8A;&#x91CF;&#x7684;&#x4F75;&#x767C;&#x6027;.</p>
<p>&#x7B2C;&#x5341;&#x7AE0;&#x63CF;&#x8FF0;&#x4E86;&#x5305;&#x6A5F;&#x88FD;, &#x5305;&#x7684;&#x7D44;&#x7E54;&#x7D50;&#x69CB;. &#x672C;&#x7AE0;&#x9084;&#x5C55;&#x793A;&#x4E86;&#x5982;&#x4F55;&#x5229;&#x7528;&#x6709;&#x6548;&#x7684;&#x5229;&#x7528;Go&#x81EA;&#x5E36;&#x7684;&#x5DE5;&#x5177;,
&#x901A;&#x904E;&#x4E00;&#x500B;&#x547D;&#x4EE4;&#x63D0;&#x4F9B;&#x4E86;&#x7DE8;&#x8B6F;, &#x6E2C;&#x8A66;, &#x57FA;&#x6E96;&#x6E2C;&#x8A66;, &#x4EE3;&#x78BC;&#x683C;&#x5F0F;&#x5316;, &#x6587;&#x6A94;, &#x548C;&#x8A31;&#x591A;&#x5176;&#x4ED6;&#x4EFB;&#x52D9;.</p>
<p>&#x7B2C;&#x5341;&#x4E00;&#x7AE0;&#x8A0E;&#x8AD6;&#x55AE;&#x5143;&#x6E2C;&#x8A66;, Go&#x7684;&#x5DE5;&#x5177;&#x548C;&#x6A19;&#x6E96;&#x5EAB;&#x4E2D;&#x96C6;&#x6210;&#x4E86;&#x8F15;&#x91CF;&#x7D1A;&#x7684;&#x6E2C;&#x8A66;&#x529F;&#x80FD;, &#x5F9E;&#x800C;&#x907F;&#x514D;&#x4E86;&#x91C7;&#x7528;&#x8907;&#x96DC;&#x5F37;&#x5927;&#x7684;&#x6E2C;&#x8A66;&#x6846;&#x67B6;. &#x6E2C;&#x8A66;&#x5EAB;&#x63D0;&#x4F9B;&#x4E00;&#x4E9B;&#x57FA;&#x672C;&#x7684;&#x69CB;&#x5EFA;, &#x5982;&#x679C;&#x6709;&#x5FC5;&#x8981;&#x53EF;&#x4EE5;&#x69CB;&#x5EFA;&#x66F4;&#x8907;&#x96DC;&#x7684;&#x6E2C;&#x8A66;&#x62BD;&#x8C61;.</p>
<p>&#x7B2C;&#x5341;&#x4E8C;&#x7AE0;&#x8A0E;&#x8AD6;&#x4E86;&#x53CD;&#x5C04;, &#x4E00;&#x500B;&#x7A0B;&#x5E8F;&#x5728;&#x904B;&#x884C;&#x671F;&#x9593;&#x4F86;&#x6AA2;&#x8996;&#x81EA;&#x5DF1;&#x7684;&#x80FD;&#x529B;. &#x53CD;&#x5C04;&#x662F;&#x4E00;&#x500B;&#x5F37;&#x5927;&#x7684;&#x5DE5;&#x5177;, &#x4E0D;&#x904E;&#x8981;&#x8B39;&#x614E;&#x5730;&#x4F7F;&#x7528;; &#x672C;&#x7AE0;&#x901A;&#x904E;&#x7528;&#x53CD;&#x5C04;&#x5BE6;&#x73FE;&#x4E00;&#x4E9B;&#x91CD;&#x8981;&#x7684;Go&#x5EAB;&#x4F86;&#x5C55;&#x793A;&#x4E86;&#x53CD;&#x5C04;&#x7684;&#x7528;&#x6CD5;. &#x7B2C;&#x5341;&#x4E09;&#x7AE0;&#x89E3;&#x91CB;&#x4E86;&#x4F4E;&#x7D1A;&#x7DE8;&#x7A0B;&#x7684;&#x7D30;&#x7BC0;, &#x901A;&#x904E;&#x4F7F;&#x7528; unsafe &#x5305;&#x4F86;&#x7E5E;&#x904E;Go&#x7684;&#x985E;&#x578B;&#x7E6B;&#x7D71;, &#x6709;&#x6642;&#x9019;&#x662F;&#x5FC5;&#x8981;&#x7684;.</p>
<p>&#x6BCF;&#x4E00;&#x7AE0;&#x6703;&#x6709;&#x4E00;&#x4E9B;&#x7DF4;&#x7FD2;, &#x4F60;&#x53EF;&#x4EE5;&#x6839;&#x64DA;&#x4F60;&#x5C0D;Go&#x8A9E;&#x8A00;&#x7684;&#x7406;&#x89E3;, &#x7136;&#x5F8C;&#x8129;&#x6539;&#x66F8;&#x4E2D;&#x7684;&#x4F8B;&#x5B50;&#x4F86;&#x63A2;&#x7D22;Go&#x7684;&#x5176;&#x4ED6;&#x7528;&#x6CD5;.</p>
<p>&#x66F8;&#x4E2D;&#x6240;&#x6709;&#x7684;&#x4EE3;&#x78BC;&#x90FD;&#x53EF;&#x4EE5;&#x5F9E; gopl.io &#x4E0A;&#x7684; Git &#x5009;&#x5EAB;&#x4E0B;&#x8F09;. go get&#x53EF;&#x4EE5;&#x6839;&#x64DA;&#x6BCF;&#x500B;&#x4F8B;&#x5B50;&#x7684;&#x5176;&#x5C0E;&#x5165;&#x8DEF;&#x5F91;&#x65B9;&#x4FBF;&#x5730;&#x7A6B;&#x53D6;/&#x69CB;&#x5EFA;/&#x4F75;&#x5B89;&#x88DD;. &#x4F60;&#x9700;&#x8981;&#x9078;&#x64C7;&#x4E00;&#x500B;&#x76EE;&#x9332;&#x4F5C;&#x7232;&#x5DE5;&#x4F5C;&#x7A7A;&#x9593;, &#x7136;&#x5F8C;&#x5C07;GOPATH&#x74B0;&#x5883;&#x6307;&#x5411;&#x9019;&#x500B;&#x5DE5;&#x4F5C;&#x76EE;&#x9332;.</p>
<p>Go&#x5DE5;&#x5177;&#x5C07;&#x5728;&#x5FC5;&#x8981;&#x6642;&#x5275;&#x5EFA;&#x7684;&#x76F8;&#x61C9;&#x7684;&#x76EE;&#x9332;. &#x4F8B;&#x5982;:</p>
<p>&#x6211;&#x5011;&#x5047;&#x8A2D;&#x4F60;&#x5DF2;&#x7D93;&#x6709;&#x4E00;&#x500B;&#x6216;&#x591A;&#x500B;&#x5176;&#x4ED6;&#x7DE8;&#x7A0B;&#x8A9E;&#x8A00;&#x7684;&#x4F7F;&#x7528;&#x7D93;&#x6B77;&#xFF0C;&#x4E0D;&#x7BA1;&#x662F;&#x985E;&#x4F3C;C&#x3001;c++&#x6216;Java&#x7684;&#x7DE8;&#x8B6F;&#x578B;&#x8A9E;&#x8A00;&#xFF0C;&#x9084;&#x662F;&#x985E;&#x4F3C;Python&#x3001;Ruby&#x3001;JavaScript&#x7684;&#x8173;&#x672C;&#x8A9E;&#x8A00;&#xFF0C;&#x56E0;&#x6B64;&#x6211;&#x5011;&#x4E0D;&#x6703;&#x50CF;&#x5C0D;&#x5B8C;&#x5168;&#x7684;&#x7DE8;&#x7A0B;&#x8A9E;&#x8A00;&#x521D;&#x5B78;&#x8005;&#x90A3;&#x6A23;&#x89E3;&#x91CB;&#x6240;&#x6709;&#x7684;&#x7D30;&#x7BC0;&#x3002;&#x56E0;&#x7232;Go&#x8A9E;&#x8A00;&#x7684; &#x8B8A;&#x91CF;&#x3001;&#x5E38;&#x91CF;&#x3001;&#x8868;&#x9054;&#x5F0F;&#x3001;&#x63A7;&#x88FD;&#x6D41;&#x548C;&#x51FD;&#x6578;&#x7B49;&#x57FA;&#x672C;&#x8A9E;&#x6CD5;&#x4E5F;&#x662F;&#x985E;&#x4F3C;&#x7684;&#x3002;</p>
<p>&#x7B2C;&#x4E00;&#x7AE0;&#x5305;&#x542B;&#x4E86;&#x672C;&#x654E;&#x7A0B;&#x7684;&#x57FA;&#x672C;&#x7D50;&#x69CB;&#xFF0C;&#x901A;&#x904E;&#x5341;&#x5E7E;&#x500B;&#x7A0B;&#x5E8F;&#x4ECB;&#x7D39;&#x4E86;&#x7528;Go&#x8A9E;&#x8A00;&#x5982;&#x4F55;&#x5BE6;&#x73FE; &#x985E;&#x4F3C;&#x8B80;&#x5BEB;&#x6587;&#x4EF6;&#x3001;&#x6587;&#x672C;&#x683C;&#x5F0F;&#x5316;&#x3001;&#x5275;&#x5EFA;&#x5716;&#x50CF;&#x3001;&#x7DB2;&#x7D61;&#x5BA2;&#x6236;&#x7AEF;&#x548C;&#x670D;&#x52D9;&#x5668;&#x901A;&#x8A0A;&#x7B49;&#x65E5;&#x5E38;&#x5DE5;&#x4F5C;&#x3002;</p>
<p>&#x7B2C;&#x4E8C;&#x7AE0;&#x63CF;&#x8FF0;&#x4E86;&#x4E00;&#x500B;Go&#x8A9E;&#x8A00;&#x7A0B;&#x5E8F;&#x7684;&#x57FA;&#x672C;&#x5143;&#x7D20;&#x7D50;&#x69CB;&#x3001;&#x8B8A;&#x91CF;&#x3001;&#x5B9A;&#x7FA9;&#x65B0;&#x7684;&#x985E;&#x578B;&#x3001;&#x5305;&#x548C;&#x6587;&#x4EF6;&#x3001;&#x4EE5;&#x53CA;&#x4F5C;&#x7528;&#x57DF;&#x7684;&#x6982;&#x5FF5;&#x3002;&#x7B2C;&#x4E09;&#x7AE0;&#x8A0E;&#x8AD6;&#x4E86;&#x6578;&#x5B57;&#x3001;&#x5E03;&#x723E;&#x503C;&#x3001;&#x5B57;&#x7B26;&#x4E32;&#x548C;&#x5E38;&#x91CF;&#xFF0C;&#x4F75;&#x6F14;&#x793A;&#x4E86;&#x5982;&#x4F55;&#x986F;&#x793A;&#x548C;&#x8655;&#x7406;Unicode&#x5B57;&#x7B26;&#x3002;&#x7B2C;&#x56DB;&#x7AE0;&#x63CF;&#x8FF0;&#x4E86;&#x8907;&#x5408;&#x985E;&#x578B;&#xFF0C;&#x5F9E;&#x7C21;&#x55AE;&#x7684;&#x6578;&#x7D44;&#x3001;&#x5B57;&#x5178;&#x3001;&#x5207;&#x7247;&#x5230;&#x52D5;&#x614B;&#x5217;&#x8868;&#x3002;&#x7B2C;&#x4E94;&#x7AE0;&#x6DB5;&#x84CB;&#x4E86;&#x51FD;&#x6578;&#xFF0C;&#x4F75;&#x8A0E;&#x8AD6;&#x4E86;&#x932F;&#x8AA4;&#x8655;&#x7406;&#x3001;panic&#x548C;recover&#xFF0C;&#x9084;&#x6709;defer&#x8A9E;&#x53E5;&#x3002;</p>
<p>&#x7B2C;&#x4E00;&#x7AE0;&#x5230;&#x7B2C;&#x4E94;&#x7AE0;&#x662F;&#x57FA;&#x790E;&#x90E8;&#x5206;&#xFF0C;&#x5C0D;&#x65BC;&#x4EFB;&#x4F55;&#x4E3B;&#x6D41;&#x547D;&#x4EE4;&#x5F0F;&#x7DE8;&#x7A0B;&#x8A9E;&#x8A00;&#x9019;&#x500B;&#x90E8;&#x5206;&#x90FD;&#x662F;&#x985E;&#x4F3C;&#x7684;&#x3002;&#x96D6;&#x7136;&#x6709;&#x6642;&#x5019;Go&#x8A9E;&#x8A00;&#x7684;&#x8A9E;&#x6CD5;&#x548C;&#x98A8;&#x683C;&#x6703;&#x6709;&#x81EA;&#x5DF1;&#x7684;&#x7279;&#x8272;&#xFF0C;&#x4F46;&#x662F;&#x5927;&#x591A;&#x6578;&#x7A0B;&#x5E8F;&#x54E1;&#x5C07;&#x80FD;&#x5F88;&#x5FEB;&#x5730;&#x9069;&#x61C9;&#x3002;&#x5269;&#x4E0B;&#x7684;&#x7AE0;&#x7BC0;&#x662F;Go&#x8A9E;&#x8A00;&#x4E2D;&#x7279;&#x6709;&#x5730;&#x65B9;&#xFF1A;&#x65B9;&#x6CD5;&#x3001;&#x63A5;&#x53E3;&#x3001;&#x4F75;&#x767C;&#x3001;&#x5305;&#x3001;&#x6E2C;&#x8A66;&#x548C;&#x53CD;&#x5C04;&#x7B49;&#x8A9E;&#x8A00;&#x7279;&#x6027;&#x3002;</p>
<p>Go&#x8A9E;&#x8A00;&#x7684;&#x9762;&#x5411;&#x5C0D;&#x8C61;&#x662F;&#x4E0D;&#x540C;&#x5C0B;&#x5E38;&#x7684;&#x3002;&#x5B83;&#x6C92;&#x6709;&#x985E;&#x5C64;&#x6B21;&#x7D50;&#x69CB;&#xFF0C;&#x751A;&#x81F3;&#x53EF;&#x4EE5;&#x8AAC;&#x6C92;&#x6709;&#x985E;&#xFF1B;&#x50C5;&#x50C5;&#x662F;&#x901A;&#x904E;&#x7D44;&#x5408;&#xFF08;&#x800C;&#x4E0D;&#x662F;&#x7E7C;&#x627F;&#xFF09;&#x7C21;&#x55AE;&#x7684;&#x5C0D;&#x8C61;&#x4F86;&#x69CB;&#x5EFA;&#x8907;&#x96DC;&#x7684;&#x5C0D;&#x8C61;&#x3002;&#x65B9;&#x6CD5;&#x4E0D;&#x50C5;&#x50C5;&#x53EF;&#x4EE5;&#x5B9A;&#x7FA9;&#x5728;&#x7D50;&#x69CB;&#x9AD4;&#x4E0A;, &#x800C;&#x4E14;&#x53EF;&#x4EE5;&#x5B9A;&#x7FA9;&#x5728;&#x4EFB;&#x4F55;&#x7528;&#x6236;&#x81EA;&#x5DF1;&#x5B9A;&#x7FA9;&#x7684;&#x985E;&#x578B;&#x4E0A;&#xFF1B;&#x4F75;&#x4E14;&#x5177;&#x9AD4;&#x985E;&#x578B;&#x548C;&#x62BD;&#x8C61;&#x985E;&#x578B;&#xFF08;&#x63A5;&#x53E3;&#xFF09;&#x4E4B;&#x9593;&#x7684;&#x95DC;&#x7E6B;&#x662F;&#x96B1;&#x5F0F;&#x7684;&#xFF0C;&#x6240;&#x4EE5;&#x5F88;&#x591A;&#x985E;&#x578B;&#x7684;&#x8A2D;&#x8A08;&#x8005;&#x53EF;&#x80FD;&#x4F75;&#x4E0D;&#x77E5;&#x9053;&#x8A72;&#x985E;&#x578B;&#x5230;&#x5E95;&#x6EFF;&#x8DB3;&#x4E86;&#x54EA;&#x4E9B;&#x63A5;&#x53E3;&#x3002;&#x65B9;&#x6CD5;&#x5C07;&#x5728;&#x7B2C;&#x516D;&#x7AE0;&#x8A0E;&#x8AD6;&#xFF0C;&#x63A5;&#x53E3;&#x5C07;&#x5728;&#x7B2C;&#x4E03;&#x7AE0;&#x5C07;&#x8A0E;&#x8AD6;&#x3002;</p>
<p>&#x7B2C;&#x516B;&#x7AE0;&#x8A0E;&#x8AD6;&#x4E86;&#x57FA;&#x65BC;&#x9806;&#x5E8F;&#x901A;&#x4FE1;&#x9032;&#x7A0B;(CSP)&#x6982;&#x5FF5;&#x7684;&#x4F75;&#x767C;&#x7DE8;&#x7A0B;&#xFF0C;&#x901A;&#x904E;&#x4F7F;&#x7528;goroutines&#x548C;channels&#x8655;&#x7406;&#x4F75;&#x767C;&#x7DE8;&#x7A0B;&#x3002;&#x7B2C;&#x4E5D;&#x7AE0;&#x5247;&#x8A0E;&#x8AD6;&#x4E86;&#x66F4;&#x7232;&#x50B3;&#x7D71;&#x7684;&#x57FA;&#x65BC;&#x5171;&#x4EAB;&#x8B8A;&#x91CF;&#x7684;&#x4F75;&#x767C;&#x7DE8;&#x7A0B;&#x3002;</p>
<p>&#x7B2C;&#x5341;&#x7AE0;&#x63CF;&#x8FF0;&#x4E86;&#x5305;&#x6A5F;&#x88FD;&#x548C;&#x5305;&#x7684;&#x7D44;&#x7E54;&#x7D50;&#x69CB;&#x3002;&#x9019;&#x4E00;&#x7AE0;&#x9084;&#x5C55;&#x793A;&#x4E86;&#x5982;&#x4F55;&#x6709;&#x6548;&#x7684;&#x5229;&#x7528;Go&#x81EA;&#x5E36;&#x7684;&#x5DE5;&#x5177;&#xFF0C;&#x901A;&#x904E;&#x4E00;&#x500B;&#x547D;&#x4EE4;&#x63D0;&#x4F9B;&#x4E86;&#x7DE8;&#x8B6F;&#x3001;&#x6E2C;&#x8A66;&#x3001;&#x57FA;&#x6E96;&#x6E2C;&#x8A66;&#x3001;&#x4EE3;&#x78BC;&#x683C;&#x5F0F;&#x5316;&#x3001;&#x6587;&#x6A94;&#x548C;&#x8A31;&#x591A;&#x5176;&#x4ED6;&#x4EFB;&#x52D9;&#x3002;</p>
<p>&#x7B2C;&#x5341;&#x4E00;&#x7AE0;&#x8A0E;&#x8AD6;&#x4E86;&#x55AE;&#x5143;&#x6E2C;&#x8A66;&#xFF0C;Go&#x8A9E;&#x8A00;&#x7684;&#x5DE5;&#x5177;&#x548C;&#x6A19;&#x6E96;&#x5EAB;&#x4E2D;&#x96C6;&#x6210;&#x7684;&#x8F15;&#x91CF;&#x7D1A;&#x7684;&#x6E2C;&#x8A66;&#x529F;&#x80FD;&#xFF0C;&#x5F9E;&#x800C;&#x907F;&#x514D;&#x4E86;&#x91C7;&#x7528;&#x5F37;&#x5927;&#x4F46;&#x8907;&#x96DC;&#x7684;&#x6E2C;&#x8A66;&#x6846;&#x67B6;&#x3002;&#x6E2C;&#x8A66;&#x5EAB;&#x63D0;&#x4F9B;&#x4E00;&#x4E9B;&#x57FA;&#x672C;&#x7684;&#x69CB;&#x4EF6;&#xFF0C;&#x5982;&#x679C;&#x6709;&#x5FC5;&#x8981;&#x53EF;&#x4EE5;&#x7528;&#x4F86;&#x69CB;&#x5EFA;&#x66F4;&#x8907;&#x96DC;&#x7684;&#x6E2C;&#x8A66;&#x69CB;&#x4EF6;&#x3002;</p>
<p>&#x7B2C;&#x5341;&#x4E8C;&#x7AE0;&#x8A0E;&#x8AD6;&#x4E86;&#x53CD;&#x5C04;&#xFF0C;&#x4E00;&#x500B;&#x7A0B;&#x5E8F;&#x5728;&#x904B;&#x884C;&#x671F;&#x9593;&#x4F86;&#x5BE9;&#x8996;&#x81EA;&#x5DF1;&#x7684;&#x80FD;&#x529B;&#x3002;&#x53CD;&#x5C04;&#x662F;&#x4E00;&#x500B;&#x5F37;&#x5927;&#x7684;&#x7DE8;&#x7A0B;&#x5DE5;&#x5177;&#xFF0C;&#x4E0D;&#x904E;&#x8981;&#x8B39;&#x614E;&#x5730;&#x4F7F;&#x7528;&#xFF1B;&#x9019;&#x4E00;&#x7AE0;&#x901A;&#x904E;&#x7528;&#x5229;&#x7528;&#x53CD;&#x5C04;&#x6A5F;&#x88FD;&#x5BE6;&#x73FE;&#x4E00;&#x4E9B;&#x91CD;&#x8981;&#x7684;Go&#x8A9E;&#x8A00;&#x5EAB;&#x51FD;&#x6578;&#x4F86;&#x5C55;&#x793A;&#x4E86;&#x53CD;&#x5C04;&#x7684;&#x5F37;&#x5927;&#x7528;&#x6CD5;&#x3002;&#x7B2C;&#x5341;&#x4E09;&#x7AE0;&#x89E3;&#x91CB;&#x4E86;&#x5E95;&#x5C64;&#x7DE8;&#x7A0B;&#x7684;&#x7D30;&#x7BC0;&#xFF0C;&#x901A;&#x904E;&#x4F7F;&#x7528;unsafe&#x5305;&#x4F86;&#x7E5E;&#x904E;Go&#x8A9E;&#x8A00;&#x5B89;&#x5168;&#x7684;&#x985E;&#x578B;&#x7E6B;&#x7D71;&#xFF0C;&#x7576;&#x7136;&#x6709;&#x6642;&#x9019;&#x662F;&#x5FC5;&#x8981;&#x7684;&#x3002;</p>
<p>&#x6709;&#x4E9B;&#x7AE0;&#x7BC0;&#x7684;&#x5F8C;&#x9762;&#x53EF;&#x80FD;&#x6703;&#x6709;&#x4E00;&#x4E9B;&#x7DF4;&#x7FD2;&#xFF0C;&#x4F60;&#x53EF;&#x4EE5;&#x6839;&#x64DA;&#x4F60;&#x5C0D;Go&#x8A9E;&#x8A00;&#x7684;&#x7406;&#x89E3;&#xFF0C;&#x7136;&#x5F8C;&#x8129;&#x6539;&#x66F8;&#x4E2D;&#x7684;&#x4F8B;&#x5B50;&#x4F86;&#x63A2;&#x7D22;Go&#x8A9E;&#x8A00;&#x7684;&#x5176;&#x4ED6;&#x7528;&#x6CD5;&#x3002;</p>
<p>&#x66F8;&#x4E2D;&#x6240;&#x6709;&#x7684;&#x4EE3;&#x78BC;&#x90FD;&#x53EF;&#x4EE5;&#x5F9E; <a href="http://gopl.io" target="_blank">http://gopl.io</a> &#x4E0A;&#x7684;Git&#x5009;&#x5EAB;&#x4E0B;&#x8F09;&#x3002;go get&#x547D;&#x4EE4;&#x53EF;&#x4EE5;&#x6839;&#x64DA;&#x6BCF;&#x500B;&#x4F8B;&#x5B50;&#x7684;&#x5176;&#x5C0E;&#x5165;&#x8DEF;&#x5F91;&#x667A;&#x80FD;&#x5730;&#x7A6B;&#x53D6;&#x3001;&#x69CB;&#x5EFA;&#x4F75;&#x5B89;&#x88DD;&#x3002;&#x4F60;&#x96BB;&#x9700;&#x8981;&#x9078;&#x64C7;&#x4E00;&#x500B;&#x76EE;&#x9332;&#x4F5C;&#x7232;&#x5DE5;&#x4F5C;&#x7A7A;&#x9593;&#xFF0C;&#x7136;&#x5F8C;&#x5C07;GOPATH&#x74B0;&#x5883;&#x6307;&#x5411;&#x9019;&#x500B;&#x5DE5;&#x4F5C;&#x76EE;&#x9332;&#x3002;</p>
<p>Go&#x8A9E;&#x8A00;&#x5DE5;&#x5177;&#x5C07;&#x5728;&#x5FC5;&#x8981;&#x6642;&#x5275;&#x5EFA;&#x7684;&#x76F8;&#x61C9;&#x7684;&#x76EE;&#x9332;&#x3002;&#x4F8B;&#x5982;&#xFF1A;</p>
<pre><code>$ export GOPATH=$HOME/gobook # &#x9078;&#x64C7;&#x5DE5;&#x4F5C;&#x76EE;&#x9332;
$ go get gopl.io/ch1/helloworld # &#x7A6B;&#x53D6;/&#x7DE8;&#x8B6F;/&#x5B89;&#x88DD;
$ $GOPATH/bin/helloworld # &#x904B;&#x884C;
Hello, &#x4E16;&#x754C; # &#x9019;&#x662F;&#x4E2D;&#x6587;, &#x4E0D;&#x662F;&#x65E5;&#x6587;
$ $GOPATH/bin/helloworld # &#x904B;&#x884C;&#x7A0B;&#x5E8F;
Hello, &#x4E16;&#x754C; # &#x9019;&#x662F;&#x4E2D;&#x6587;
</code></pre><p>&#x8981;&#x904B;&#x884C;&#x9019;&#x4E9B;&#x4F8B;&#x5B50;, &#x4F60;&#x9700;&#x8981;&#x5B89;&#x88DD;Go1.5&#x4EE5;&#x4E0A;&#x7684;&#x7248;&#x672C;.</p>
<p>$ go version
go version go1.5 linux/amd64</p>
<p>&#x5982;&#x679C;&#x4F60;&#x7528;&#x7684;&#x662F;&#x5176;&#x4ED6;&#x7684;&#x64CD;&#x4F5C;&#x7E6B;&#x7D71;, &#x8ACB;&#x53C3;&#x8003; <a href="https://golang.org/doc/install" target="_blank">https://golang.org/doc/install</a> &#x63D0;&#x4F9B;&#x7684;&#x8AAC;&#x660E;&#x5B89;&#x88DD;.</p>
<pre><code>$ go version
go version go1.5 linux/amd64
</code></pre><p>&#x5982;&#x679C;&#x4F60;&#x7528;&#x7684;&#x662F;&#x5176;&#x4ED6;&#x7684;&#x64CD;&#x4F5C;&#x7E6B;&#x7D71;, &#x8ACB;&#x53C3;&#x8003; <a href="https://golang.org/doc/install" target="_blank">https://golang.org/doc/install</a> &#x63D0;&#x4F9B;&#x7684;&#x8AAC;&#x660E;&#x5B89;&#x88DD;&#x3002;</p>
</section>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="0.4" data-chapter-title="更多的信息" data-filepath="ch0/ch0-04.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="0.4" data-chapter-title="更多的信息" data-filepath="ch0/ch0-04.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>
@@ -2024,12 +2024,12 @@
<section class="normal" id="section-">
<h2 id="&#x66F4;&#x591A;&#x7684;&#x4FE1;&#x606F;">&#x66F4;&#x591A;&#x7684;&#x4FE1;&#x606F;</h2>
<p>&#x6700;&#x4F73;&#x7684;&#x4FE1;&#x606F;&#x4F86;&#x81EA;Go&#x7684;&#x5B98;&#x65B9;&#x7DB2;&#x7AD9;, <a href="https://golang.org" target="_blank">https://golang.org</a>, &#x5B83;&#x63D0;&#x4F9B;&#x4E86;&#x8A2A;&#x554F;&#x5B8C;&#x5584;&#x7684;&#x53C3;&#x8003;&#x6587;&#x6A94;, &#x5305;&#x62EC;&#x7DE8;&#x7A0B;&#x8A9E;&#x8A00;&#x898F;&#x8303;&#x548C;&#x6A19;&#x6E96;&#x5EAB;&#x7B49;&#x8AF8;&#x591A;&#x4FE1;&#x606F;. &#x540C;&#x6642;&#x4E5F;&#x5305;&#x542B;&#x4E86;&#x5982;&#x679C;&#x66F4;&#x597D;&#x4E86;&#x7DE8;&#x5BEB;Go&#x7A0B;&#x5E8F;&#x7684;&#x57FA;&#x672C;&#x654E;&#x7A0B;, &#x9084;&#x6709;&#x5404;&#x7A2E;&#x5404;&#x6A23;&#x7684;&#x5728;&#x7DDA;&#x6587;&#x672C;&#x8CC7;&#x6E90;&#x548C;&#x8996;&#x983B;&#x8CC7;&#x6E90;, &#x5B83;&#x5011;&#x662F;&#x672C;&#x8EAB;&#x7D42;&#x6709;&#x50F9;&#x503C;&#x7684;&#x88DC;&#x5145;. Go&#x7684;&#x535A;&#x5BA2; blog.golang.org &#x767C;&#x5E03;&#x4E00;&#x4E9B;Go&#x8A9E;&#x8A00;&#x6700;&#x597D;&#x7684;&#x5BE6;&#x8E10;&#x6587;&#x7AE0;, &#x5305;&#x62EC;&#x7576;&#x524D;&#x8A9E;&#x8A00;&#x7684;&#x72C0;&#x614B;, &#x672A;&#x4F86;&#x7684;&#x8A08;&#x5283;, &#x6703;&#x8B70;&#x5831;&#x544A;&#x548C;Go&#x76F8;&#x95DC;&#x7684;&#x5404;&#x7A2E;&#x4E3B;&#x984C;.</p>
<p>&#x5728;&#x7DDA;&#x8A2A;&#x554F;&#x7684;&#x4E00;&#x500B;&#x6709;&#x50F9;&#x503C;&#x7684;&#x5730;&#x65B9;&#x662F;&#x53EF;&#x4EE5;&#x5F9E;web&#x9801;&#x9762;&#x904B;&#x884C;Go&#x7684;&#x7A0B;&#x5E8F;(&#x800C;&#x7D19;&#x8CEA;&#x66F8;&#x5247;&#x6C92;&#x6709;&#x9019;&#x9EBD;&#x4FBF;&#x5229;&#x4E86;). &#x9019;&#x500B;&#x529F;&#x80FD; &#x7531;&#x4F86;&#x81EA; play.golang.org &#x7684; Go Playground &#x63D0;&#x4F9B;, &#x4F75;&#x4E14;&#x53EF;&#x4EE5;&#x65B9;&#x4FBF;&#x5730;&#x5D4C;&#x5165;&#x5230;&#x5176;&#x4ED6;&#x9801;&#x9762;, &#x4F8B;&#x5982; golang.org &#x7684;&#x4E3B;&#x9801;, &#x6216; godoc &#x63D0;&#x4F9B;&#x7684;&#x6587;&#x6A94;&#x4E2D;.</p>
<p>Playground &#x53EF;&#x4EE5;&#x7C21;&#x55AE;&#x7684;&#x901A;&#x904E;&#x57F7;&#x884C;&#x4E00;&#x500B;&#x5C0F;&#x7A0B;&#x5E8F;&#x4F86;&#x6E2C;&#x8A66;&#x5C0D;&#x8A9E;&#x6CD5;, &#x8A9E;&#x7FA9;, &#x6216;&#x5C0D;&#x7A0B;&#x5E8F;&#x5EAB;&#x7684;&#x7406;&#x89E3;, &#x985E;&#x4F3C;&#x5176;&#x4ED6;&#x5F88;&#x591A;&#x8A9E;&#x8A00;&#x63D0;&#x4F9B;&#x7684; REPL &#x537D;&#x6642;&#x904B;&#x884C;&#x7684;&#x65B9;&#x5F0F;. &#x540C;&#x6642;&#x5B83;&#x53EF;&#x4EE5;&#x751F;&#x6210;&#x5C0D;&#x61C9;&#x7684;url, &#x975E;&#x5E38;&#x9069;&#x5408;&#x5171;&#x4EAB;Go&#x4EE3;&#x78BC;&#x7247;&#x6BB5;, bug&#x5831;&#x544A;&#x6216;&#x63D0;&#x9F63;&#x5EFA;&#x8B70;.</p>
<p>&#x57FA;&#x65BC; Playground &#x69CB;&#x5EFA;&#x7684; Go Tour (tour.golang.org), &#x662F;&#x4E00;&#x500B;&#x7E6B;&#x5217;&#x7684;Go&#x5165;&#x9580;&#x654E;&#x7A0B;, &#x5305;&#x542B;&#x4E86;&#x8AF8;&#x591A;&#x57FA;&#x672C;&#x6982;&#x5FF5;&#x548C;&#x7D50;&#x69CB;&#x76F8;&#x95DC;&#x7684;&#x53EF;&#x5728;&#x7DDA;&#x904B;&#x884C;&#x7684;&#x4E92;&#x52D5;&#x5C0F;&#x7A0B;&#x5E8F;.</p>
<p>Playground &#x548C; Tour &#x4E5F;&#x6709;&#x4E00;&#x4E9B;&#x4E0D;&#x8DB3;, &#x5B83;&#x5011;&#x96BB;&#x80FD;&#x5C0E;&#x5165;&#x6A19;&#x6E96;&#x5EAB;, &#x800C;&#x4E14;&#x56E0;&#x7232;&#x5B89;&#x5168;&#x7684;&#x539F;&#x56E0;&#x5C0D;&#x4E00;&#x4E9B;&#x7DB2;&#x7D61;&#x5EAB;&#x505A;&#x4E86;&#x9650;&#x88FD;. &#x800C;&#x4E14;&#x8981;&#x7DE8;&#x8B6F;&#x548C;&#x904B;&#x884C;&#x9700;&#x8981;&#x8A2A;&#x554F;&#x4E92;&#x806F;&#x7DB2;. &#x5C0D;&#x65BC;&#x4E00;&#x4E9B;&#x66F4;&#x8907;&#x88FD;&#x7684;&#x5BE6;&#x9A57;, &#x4F60;&#x53EF;&#x80FD;&#x9700;&#x8981;&#x5728;&#x81EA;&#x5DF1;&#x7684;&#x96FB;&#x8166;&#x4E0A;&#x904B;&#x884C;&#x7A0B;&#x5E8F;. &#x5E78;&#x904B;&#x7684;&#x662F;&#x4E0B;&#x8F09;Go&#x7684;&#x904E;&#x7A0B;&#x5F88;&#x7C21;&#x55AE;, &#x5F9E; golang.org &#x4E0B;&#x8F09;&#x61C9;&#x8A72;&#x4E0D;&#x8D85;&#x904E;&#x5E7E;&#x5206;&#x9418;, &#x7136;&#x5F8C;&#x5C31;&#x53EF;&#x4EE5;&#x5728;&#x81EA;&#x5DF1;&#x96FB;&#x8166;&#x4E0A;&#x7DE8;&#x5BEB;&#x548C;&#x904B;&#x884C;Go&#x7A0B;&#x5E8F;&#x4E86;.</p>
<p>Go&#x662F;&#x4E00;&#x500B;&#x958B;&#x6E90;&#x9805;&#x76EE;, &#x4F60;&#x53EF;&#x4EE5; &#x5728; <a href="https://golang.org/pkg" target="_blank">https://golang.org/pkg</a> &#x95B2;&#x8B80;&#x6A19;&#x6E96;&#x5EAB;&#x4E2D;&#x4EFB;&#x610F;&#x51FD;&#x6578;&#x548C;&#x985E;&#x578B;&#x7684;&#x4EE3;&#x78BC;, &#x548C;&#x4E0B;&#x8F09;&#x7684;&#x4EE3;&#x78BC;&#x5B8C;&#x5168;&#x4E00;&#x81F4;. &#x9019;&#x6A23;&#x53EF;&#x4EE5;&#x77E5;&#x9053;&#x5F88;&#x591A;&#x51FD;&#x6578;&#x662F;&#x5982;&#x4F55;&#x5DE5;&#x4F5C;&#x7684;, &#x6316;&#x6398;&#x4E00;&#x4E9B;&#x7B54;&#x6848;&#x7684;&#x7D30;&#x7BC0;, &#x6216;&#x8005;&#x50C5;&#x50C5;&#x662F;&#x6B23;&#x8CDE; &#x5C08;&#x696D;&#x7684;Go&#x4EE3;&#x78BC;.</p>
<p>&#x6700;&#x4F73;&#x7684;&#x5E6B;&#x52A9;&#x4FE1;&#x606F;&#x4F86;&#x81EA;Go&#x8A9E;&#x8A00;&#x7684;&#x5B98;&#x65B9;&#x7DB2;&#x7AD9;&#xFF0C;<a href="https://golang.org" target="_blank">https://golang.org</a> &#xFF0C;&#x5B83;&#x63D0;&#x4F9B;&#x4E86;&#x5B8C;&#x5584;&#x7684;&#x53C3;&#x8003;&#x6587;&#x6A94;&#xFF0C;&#x5305;&#x62EC;&#x7DE8;&#x7A0B;&#x8A9E;&#x8A00;&#x898F;&#x8303;&#x548C;&#x6A19;&#x6E96;&#x5EAB;&#x7B49;&#x8AF8;&#x591A;&#x6B0A;&#x5A01;&#x7684;&#x5E6B;&#x52A9;&#x4FE1;&#x606F;&#x3002;&#x540C;&#x6642;&#x4E5F;&#x5305;&#x542B;&#x4E86;&#x5982;&#x4F55;&#x7DE8;&#x5BEB;&#x66F4;&#x5730;&#x9053;&#x7684;Go&#x7A0B;&#x5E8F;&#x7684;&#x57FA;&#x672C;&#x654E;&#x7A0B;&#xFF0C;&#x9084;&#x6709;&#x5404;&#x7A2E;&#x5404;&#x6A23;&#x7684;&#x5728;&#x7DDA;&#x6587;&#x672C;&#x8CC7;&#x6E90;&#x548C;&#x8996;&#x983B;&#x8CC7;&#x6E90;&#xFF0C;&#x5B83;&#x5011;&#x662F;&#x672C;&#x66F8;&#x6700;&#x6709;&#x50F9;&#x503C;&#x7684;&#x88DC;&#x5145;&#x3002;Go&#x8A9E;&#x8A00;&#x7684;&#x5B98;&#x65B9;&#x535A;&#x5BA2; <a href="https://blog.golang.org" target="_blank">https://blog.golang.org</a> &#x6703;&#x4E0D;&#x5B9A;&#x671F;&#x767C;&#x5E03;&#x4E00;&#x4E9B;Go&#x8A9E;&#x8A00;&#x6700;&#x597D;&#x7684;&#x5BE6;&#x8E10;&#x6587;&#x7AE0;&#xFF0C;&#x5305;&#x62EC;&#x7576;&#x524D;&#x8A9E;&#x8A00;&#x7684;&#x767C;&#x5C55;&#x72C0;&#x614B;&#x3001;&#x672A;&#x4F86;&#x7684;&#x8A08;&#x5283;&#x3001;&#x6703;&#x8B70;&#x5831;&#x544A;&#x548C;Go&#x8A9E;&#x8A00;&#x76F8;&#x95DC;&#x7684;&#x5404;&#x7A2E;&#x6703;&#x8B70;&#x7684;&#x4E3B;&#x984C;&#x7B49;&#x4FE1;&#x606F;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A; <a href="http://talks.golang.org/" target="_blank">http://talks.golang.org/</a> &#x5305;&#x542B;&#x4E86;&#x5B98;&#x65B9;&#x6536;&#x9332;&#x7684;&#x5404;&#x7A2E;&#x5831;&#x544A;&#x7684;&#x8B1B;&#x7A3F;&#xFF09;&#x3002;</p>
<p>&#x5728;&#x7DDA;&#x8A2A;&#x554F;&#x7684;&#x4E00;&#x500B;&#x6709;&#x50F9;&#x503C;&#x7684;&#x5730;&#x65B9;&#x662F;&#x53EF;&#x4EE5;&#x5F9E;web&#x9801;&#x9762;&#x904B;&#x884C;Go&#x8A9E;&#x8A00;&#x7684;&#x7A0B;&#x5E8F;&#xFF08;&#x800C;&#x7D19;&#x8CEA;&#x66F8;&#x5247;&#x6C92;&#x6709;&#x9019;&#x9EBD;&#x4FBF;&#x5229;&#x4E86;&#xFF09;&#x3002;&#x9019;&#x500B;&#x529F;&#x80FD;&#x7531;&#x4F86;&#x81EA; <a href="https://play.golang.org" target="_blank">https://play.golang.org</a> &#x7684; Go Playground &#x63D0;&#x4F9B;&#xFF0C;&#x4F75;&#x4E14;&#x53EF;&#x4EE5;&#x65B9;&#x4FBF;&#x5730;&#x5D4C;&#x5165;&#x5230;&#x5176;&#x4ED6;&#x9801;&#x9762;&#x4E2D;&#xFF0C;&#x4F8B;&#x5982; <a href="https://golang.org" target="_blank">https://golang.org</a> &#x7684;&#x4E3B;&#x9801;&#xFF0C;&#x6216; godoc &#x63D0;&#x4F9B;&#x7684;&#x6587;&#x6A94;&#x9801;&#x9762;&#x4E2D;&#x3002;</p>
<p>Playground&#x53EF;&#x4EE5;&#x7C21;&#x55AE;&#x7684;&#x901A;&#x904E;&#x57F7;&#x884C;&#x4E00;&#x500B;&#x5C0F;&#x7A0B;&#x5E8F;&#x4F86;&#x6E2C;&#x8A66;&#x5C0D;&#x8A9E;&#x6CD5;&#x3001;&#x8A9E;&#x7FA9;&#x548C;&#x5C0D;&#x7A0B;&#x5E8F;&#x5EAB;&#x7684;&#x7406;&#x89E3;&#xFF0C;&#x985E;&#x4F3C;&#x5176;&#x4ED6;&#x5F88;&#x591A;&#x8A9E;&#x8A00;&#x63D0;&#x4F9B;&#x7684;REPL&#x537D;&#x6642;&#x904B;&#x884C;&#x7684;&#x5DE5;&#x5177;&#x3002;&#x540C;&#x6642;&#x5B83;&#x53EF;&#x4EE5;&#x751F;&#x6210;&#x5C0D;&#x61C9;&#x7684;url&#xFF0C;&#x975E;&#x5E38;&#x9069;&#x5408;&#x5171;&#x4EAB;Go&#x8A9E;&#x8A00;&#x4EE3;&#x78BC;&#x7247;&#x6BB5;&#xFF0C;&#x6ED9;&#x5831;bug&#x6216;&#x63D0;&#x4F9B;&#x53CD;&#x994B;&#x610F;&#x898B;&#x7B49;&#x3002;</p>
<p>&#x57FA;&#x65BC; Playground &#x69CB;&#x5EFA;&#x7684; Go Tour&#xFF0C;<a href="https://tour.golang.org" target="_blank">https://tour.golang.org</a> &#xFF0C;&#x662F;&#x4E00;&#x500B;&#x7E6B;&#x5217;&#x7684;Go&#x8A9E;&#x8A00;&#x5165;&#x9580;&#x654E;&#x7A0B;&#xFF0C;&#x5B83;&#x5305;&#x542B;&#x4E86;&#x8AF8;&#x591A;&#x57FA;&#x672C;&#x6982;&#x5FF5;&#x548C;&#x7D50;&#x69CB;&#x76F8;&#x95DC;&#x7684;&#x4F75;&#x53EF;&#x5728;&#x7DDA;&#x904B;&#x884C;&#x7684;&#x4E92;&#x52D5;&#x5C0F;&#x7A0B;&#x5E8F;&#x3002;</p>
<p>&#x7576;&#x7136;&#xFF0C;Playground &#x548C; Tour &#x4E5F;&#x6709;&#x4E00;&#x4E9B;&#x9650;&#x88FD;&#xFF0C;&#x5B83;&#x5011;&#x96BB;&#x80FD;&#x5C0E;&#x5165;&#x6A19;&#x6E96;&#x5EAB;&#xFF0C;&#x800C;&#x4E14;&#x56E0;&#x7232;&#x5B89;&#x5168;&#x7684;&#x539F;&#x56E0;&#x5C0D;&#x4E00;&#x4E9B;&#x7DB2;&#x7D61;&#x5EAB;&#x505A;&#x4E86;&#x9650;&#x88FD;&#x3002;&#x5982;&#x679C;&#x8981;&#x5728;&#x7DE8;&#x8B6F;&#x548C;&#x904B;&#x884C;&#x6642;&#x9700;&#x8981;&#x8A2A;&#x554F;&#x4E92;&#x806F;&#x7DB2;&#xFF0C;&#x5C0D;&#x65BC;&#x4E00;&#x4E9B;&#x66F4;&#x8907;&#x88FD;&#x7684;&#x5BE6;&#x9A57;&#xFF0C;&#x4F60;&#x53EF;&#x80FD;&#x9700;&#x8981;&#x5728;&#x81EA;&#x5DF1;&#x7684;&#x96FB;&#x8166;&#x4E0A;&#x69CB;&#x5EFA;&#x4F75;&#x904B;&#x884C;&#x7A0B;&#x5E8F;&#x3002;&#x5E78;&#x904B;&#x7684;&#x662F;&#x4E0B;&#x8F09;Go&#x8A9E;&#x8A00;&#x7684;&#x904E;&#x7A0B;&#x5F88;&#x7C21;&#x55AE;&#xFF0C;&#x5F9E; <a href="https://golang.org" target="_blank">https://golang.org</a> &#x4E0B;&#x8F09;&#x5B89;&#x88DD;&#x5305;&#x61C9;&#x8A72;&#x4E0D;&#x8D85;&#x904E;&#x5E7E;&#x5206;&#x9418;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;&#x611F;&#x8B1D;&#x5049;&#x5927;&#x7684;&#x9577;&#x57CE;&#xFF0C;&#x8B93;&#x5927;&#x9678;&#x7684;Gopher&#x5011;&#x90FD;&#x5B78;&#x6703;&#x4E86;&#x81EA;&#x5DF1;&#x6253;&#x6D1E;&#x7684;&#x57FA;&#x672C;&#x751F;&#x6D3B;&#x6280;&#x80FD;&#xFF0C;&#x4E0B;&#x8F09;&#x6642;&#x9593;&#x53EF;&#x80FD;&#x6703;&#x56E0;&#x7232;&#x6D1E;&#x7684;&#x5927;&#x5C0F;&#x7B49;&#x56E0;&#x7D20;&#x5F9E;&#x5E7E;&#x5206;&#x9418;&#x5230;&#x5E7E;&#x5929;&#x6216;&#x66F4;&#x4E45;&#xFF09;&#xFF0C;&#x7136;&#x5F8C;&#x5C31;&#x53EF;&#x4EE5;&#x5728;&#x81EA;&#x5DF1;&#x96FB;&#x8166;&#x4E0A;&#x7DE8;&#x5BEB;&#x548C;&#x904B;&#x884C;Go&#x7A0B;&#x5E8F;&#x4E86;&#x3002;</p>
<p>Go&#x8A9E;&#x8A00;&#x662F;&#x4E00;&#x500B;&#x958B;&#x6E90;&#x9805;&#x76EE;&#xFF0C;&#x4F60;&#x53EF;&#x4EE5;&#x5728; <a href="https://golang.org/pkg" target="_blank">https://golang.org/pkg</a> &#x95B2;&#x8B80;&#x6A19;&#x6E96;&#x5EAB;&#x4E2D;&#x4EFB;&#x610F;&#x51FD;&#x6578;&#x548C;&#x985E;&#x578B;&#x7684;&#x5BE6;&#x73FE;&#x4EE3;&#x78BC;&#xFF0C;&#x548C;&#x4E0B;&#x8F09;&#x5B89;&#x88DD;&#x5305;&#x7684;&#x4EE3;&#x78BC;&#x5B8C;&#x5168;&#x4E00;&#x81F4;&#x3002;&#x9019;&#x6A23;&#x4F60;&#x53EF;&#x4EE5;&#x77E5;&#x9053;&#x5F88;&#x591A;&#x51FD;&#x6578;&#x662F;&#x5982;&#x4F55;&#x5DE5;&#x4F5C;&#x7684;&#xFF0C; &#x901A;&#x904E;&#x6316;&#x6398;&#x627E;&#x9F63;&#x4E00;&#x4E9B;&#x7B54;&#x6848;&#x7684;&#x7D30;&#x7BC0;&#xFF0C;&#x6216;&#x8005;&#x50C5;&#x50C5;&#x662F;&#x9F63;&#x65BC;&#x6B23;&#x8CDE;&#x5C08;&#x696D;&#x7D1A;Go&#x4EE3;&#x78BC;&#x3002;</p>
</section>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="0.5" data-chapter-title="致謝" data-filepath="ch0/ch0-05.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="0.5" data-chapter-title="致謝" data-filepath="ch0/ch0-05.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>
@@ -2024,22 +2024,11 @@
<section class="normal" id="section-">
<h2 id="&#x81F4;&#x8B1D;">&#x81F4;&#x8B1D;</h2>
<p>Rob Pike &#x548C; Russ Cox, &#x4EE5;&#x53CA;&#x5176;&#x4ED6;&#x5F88;&#x591A;Go&#x7CF0;&#x968A;&#x7684;&#x8988;&#x5FC3;&#x6210;&#x54E1;&#x591A;&#x6B21;&#x4ED4;&#x7D30;&#x95B2;&#x8B80;&#x4E86;&#x672C;&#x66F8;&#x7684;&#x624B;&#x7A3F;,
&#x4ED6;&#x5011;&#x5C0D;&#x672C;&#x66F8;&#x7684;&#x7D44;&#x7E54;&#x7D50;&#x69CB;&#x548C;&#x8868;&#x8FF0;&#x7528;&#x8A5E;&#x7B49;&#x7D66;&#x9F63;&#x4E86;&#x5F88;&#x591A;&#x5BF6;&#x8CB4;&#x7684;&#x5EFA;&#x8B70;. &#x5728;&#x6E96;&#x5099;&#x65E5;&#x672C;&#x7FFB;&#x8B6F;&#x7684;&#x6642;&#x5019;,
Yoshiki Shibata &#x66F4;&#x662F;&#x4ED4;&#x7D30;&#x5730;&#x5BE9;&#x95B2;&#x4E86;&#x672C;&#x66F8;&#x7684;&#x6BCF;&#x500B;&#x90E8;&#x5206;, &#x53CA;&#x6642;&#x767C;&#x73FE;&#x4E86;&#x8AF8;&#x591A;&#x82F1;&#x6587;&#x548C;&#x4EE3;&#x78BC;&#x7684;&#x932F;&#x8AA4;.
&#x6211;&#x5011;&#x975E;&#x5E38;&#x611F;&#x8B1D;&#x672C;&#x66F8;&#x7684;&#x5BE9;&#x95B2;&#x8005;, &#x4F75;&#x611F;&#x8B1D;&#x5C0D;&#x672C;&#x66F8;&#x7D66;&#x9F63;&#x4E86;&#x91CD;&#x8981;&#x7684;&#x5EFA;&#x8B70;&#x7684; Brian Goetz, Corey Kosak,
Arnold Robbins, Josh Bleecher Snyder &#x548C; Peter Weinberger &#x7B49;&#x4EBA;.</p>
<p>&#x6211;&#x5011;&#x611F;&#x8B1D; Sameer Ajmani, Ittai Balaban, David Crawshaw, Billy Donohue, Jonathan Feinberg, Andrew Gerrand,
Robert Griesemer, John Linderman, Minux Ma, Bryan Mills, Bala Natarajan, Cosmos Nicolaou, Paul Staniforth, Nigel Tao
&#x4EE5;&#x53CA; Howard Trickey &#x7D66;&#x9F63;&#x7684;&#x8A31;&#x591A;&#x6709;&#x7528;&#x7684;&#x5EFA;&#x8B70;.
&#x6211;&#x5011;&#x9084;&#x8981;&#x611F;&#x8B1D; David Brailsford &#x548C; Raph Levien &#x95DC;&#x65BC;&#x985E;&#x578B;&#x8A2D;&#x7F6E;&#x7684;&#x5EFA;&#x8B70;.</p>
<p>&#x6211;&#x5011;&#x4F86;&#x81EA; Addison-Wesley &#x7684;&#x7DE8;&#x8F2F; Greg Doench, &#x5F9E;&#x6700;&#x521D;&#x5C31;&#x5F97;&#x5230;&#x4E86;&#x8D8A;&#x4F86;&#x8D8A;&#x591A;&#x7684;&#x5E6B;&#x52A9;.
&#x4F86;&#x81EA;AW&#x751F;&#x7523;&#x7CF0;&#x968A;&#x7684; John Fuller, Dayna Isley, Julie Nahil, Chuti Prasertsith, &#x548C; Barbara Wood,
&#x611F;&#x8B1D;&#x4F60;&#x5011;&#x7684;&#x71B1;&#x5FC3;&#x5E6B;&#x52A9;.</p>
<p>Alan Donovan &#x7279;&#x522B;&#x611F;&#x8B1D;: Sameer Ajmani, Chris Demetriou, Walt Drummond &#x548C; Google&#x7684;Reid Tatge &#x5141;&#x8A31;&#x4ED6;&#x6709;&#x5145;&#x88D5;&#x7684;&#x6642;&#x9593;&#x53BB;&#x5BEB;&#x672C;&#x66F8;;
&#x611F;&#x8B1D; Stephen Donovan &#x7684;&#x5EFA;&#x8B70;&#x548C;&#x59CB;&#x7D42;&#x5982;&#x4E00;&#x7684;&#x9F13;&#x52F5;, &#x4EE5;&#x53CA;&#x4ED6;&#x7684;&#x59BB;&#x5B50; Leila Kazemi &#x6C92;&#x6709;&#x8B93;&#x4ED6;&#x7232;&#x4E86;&#x5BB6;&#x5EAD;&#x7463;&#x4E8B;&#x800C;&#x5206;&#x5FC3;, &#x4F75;&#x71B1;&#x60C5;&#x5805;&#x5B9A;&#x5730;&#x652F;&#x6301;&#x9019;&#x500B;&#x9805;&#x76EE;.</p>
<p>Brian Kernighan&#x7279;&#x522B;&#x611F;&#x8B1D;: &#x670B;&#x53CB;&#x548C;&#x540C;&#x4E8B;&#x7684;&#x8010;&#x5FC3;&#x548C;&#x5BEC;&#x5BB9;&#x4ED6;, &#x8B93;&#x4ED6;&#x6162;&#x6162;&#x5730;&#x68B3;&#x7406;&#x672C;&#x8EAB;&#x7684;&#x5BEB;&#x4F5C;&#x601D;&#x8DEF;.
&#x540C;&#x6642;&#x611F;&#x8B1D;&#x4ED6;&#x7684;&#x59BB;&#x5B50; Meg &#x548C;&#x5176;&#x4ED6;&#x5F88;&#x591A;&#x670B;&#x53CB;&#x5C0D;&#x4ED6;&#x5BEB;&#x4F5C;&#x4E8B;&#x696D;&#x7684;&#x652F;&#x6301;.</p>
<p>Rob Pike&#x548C;Russ Cox&#xFF0C;&#x4EE5;&#x53CA;&#x5F88;&#x591A;&#x5176;&#x4ED6;Go&#x7CF0;&#x968A;&#x7684;&#x8988;&#x5FC3;&#x6210;&#x54E1;&#x591A;&#x6B21;&#x4ED4;&#x7D30;&#x95B2;&#x8B80;&#x4E86;&#x672C;&#x66F8;&#x7684;&#x624B;&#x7A3F;&#xFF0C;&#x4ED6;&#x5011;&#x5C0D;&#x672C;&#x66F8;&#x7684;&#x7D44;&#x7E54;&#x7D50;&#x69CB;&#x548C;&#x8868;&#x8FF0;&#x7528;&#x8A5E;&#x7B49;&#x7D66;&#x9F63;&#x4E86;&#x5F88;&#x591A;&#x5BF6;&#x8CB4;&#x7684;&#x5EFA;&#x8B70;&#x3002;&#x5728;&#x6E96;&#x5099;&#x65E5;&#x6587;&#x7248;&#x7FFB;&#x8B6F;&#x7684;&#x6642;&#x5019;&#xFF0C;Yoshiki Shibata&#x66F4;&#x662F;&#x4ED4;&#x7D30;&#x5730;&#x5BE9;&#x95B2;&#x4E86;&#x672C;&#x66F8;&#x7684;&#x6BCF;&#x500B;&#x90E8;&#x5206;&#xFF0C;&#x53CA;&#x6642;&#x767C;&#x73FE;&#x4E86;&#x8AF8;&#x591A;&#x82F1;&#x6587;&#x548C;&#x4EE3;&#x78BC;&#x7684;&#x932F;&#x8AA4;&#x3002;&#x6211;&#x5011;&#x975E;&#x5E38;&#x611F;&#x8B1D;&#x672C;&#x66F8;&#x7684;&#x6BCF;&#x4E00;&#x4F4D;&#x5BE9;&#x95B2;&#x8005;&#xFF0C;&#x4F75;&#x611F;&#x8B1D;&#x5C0D;&#x672C;&#x66F8;&#x7D66;&#x9F63;&#x4E86;&#x91CD;&#x8981;&#x7684;&#x5EFA;&#x8B70;&#x7684;Brian Goetz&#x3001;Corey Kosak&#x3001;Arnold Robbins&#x3001;Josh Bleecher Snyder&#x548C;Peter Weinberger&#x7B49;&#x4EBA;&#x3002;</p>
<p>&#x6211;&#x5011;&#x9084;&#x611F;&#x8B1D;Sameer Ajmani&#x3001;Ittai Balaban&#x3001;David Crawshaw&#x3001;Billy Donohue&#x3001;Jonathan Feinberg&#x3001;Andrew Gerrand&#x3001;Robert Griesemer&#x3001;John Linderman&#x3001;Minux Ma&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;&#x4E2D;&#x570B;&#x4EBA;&#xFF0C;Go&#x7CF0;&#x968A;&#x6210;&#x54E1;&#x3002;&#xFF09;&#x3001;Bryan Mills&#x3001;Bala Natarajan&#x3001;Cosmos Nicolaou&#x3001;Paul Staniforth&#x3001;Nigel Tao&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;&#x597D;&#x50CF;&#x662F;&#x9676;&#x54F2;&#x8ED2;&#x7684;&#x5144;&#x5F1F;&#xFF09;&#x4EE5;&#x53CA;Howard Trickey&#x7D66;&#x9F63;&#x7684;&#x8A31;&#x591A;&#x6709;&#x50F9;&#x503C;&#x7684;&#x5EFA;&#x8B70;&#x3002;&#x6211;&#x5011;&#x9084;&#x8981;&#x611F;&#x8B1D;David Brailsford&#x548C;Raph Levien&#x95DC;&#x65BC;&#x985E;&#x578B;&#x8A2D;&#x7F6E;&#x7684;&#x5EFA;&#x8B70;&#x3002;</p>
<p>&#x6211;&#x5011;&#x7684;&#x4F86;&#x81EA;Addison-Wesley&#x7684;&#x7DE8;&#x8F2F;Greg Doench&#x6536;&#x5230;&#x4E86;&#x5F88;&#x591A;&#x5E6B;&#x52A9;&#xFF0C;&#x5F9E;&#x6700;&#x958B;&#x59CB;&#x5C31;&#x5F97;&#x5230;&#x4E86;&#x8D8A;&#x4F86;&#x8D8A;&#x591A;&#x7684;&#x5E6B;&#x52A9;&#x3002;&#x4F86;&#x81EA;AW&#x751F;&#x7523;&#x7CF0;&#x968A;&#x7684;John Fuller&#x3001;Dayna Isley&#x3001;Julie Nahil&#x3001;Chuti Prasertsith&#x5230;Barbara Wood&#xFF0C;&#x611F;&#x8B1D;&#x4F60;&#x5011;&#x7684;&#x71B1;&#x5FC3;&#x5E6B;&#x52A9;&#x3002;</p>
<p>Alan Donovan&#x7279;&#x522B;&#x611F;&#x8B1D;&#xFF1A;Sameer Ajmani&#x3001;Chris Demetriou&#x3001;Walt Drummond&#x548C;Google&#x516C;&#x53F8;&#x7684;Reid Tatge&#x5141;&#x8A31;&#x4ED6;&#x6709;&#x5145;&#x88D5;&#x7684;&#x6642;&#x9593;&#x53BB;&#x5BEB;&#x672C;&#x66F8;&#xFF1B;&#x611F;&#x8B1D;Stephen Donovan&#x7684;&#x5EFA;&#x8B70;&#x548C;&#x59CB;&#x7D42;&#x5982;&#x4E00;&#x7684;&#x9F13;&#x52F5;&#xFF0C;&#x4EE5;&#x53CA;&#x4ED6;&#x7684;&#x59BB;&#x5B50;Leila Kazemi&#x4F75;&#x6C92;&#x6709;&#x8B93;&#x4ED6;&#x7232;&#x4E86;&#x5BB6;&#x5EAD;&#x7463;&#x4E8B;&#x800C;&#x5206;&#x5FC3;&#xFF0C;&#x4F75;&#x71B1;&#x60C5;&#x5805;&#x5B9A;&#x5730;&#x652F;&#x6301;&#x9019;&#x500B;&#x9805;&#x76EE;&#x3002;</p>
<p>Brian Kernighan&#x7279;&#x522B;&#x611F;&#x8B1D;&#xFF1A;&#x670B;&#x53CB;&#x548C;&#x540C;&#x4E8B;&#x5C0D;&#x4ED6;&#x7684;&#x8010;&#x5FC3;&#x548C;&#x5BEC;&#x5BB9;&#xFF0C;&#x8B93;&#x4ED6;&#x6162;&#x6162;&#x5730;&#x68B3;&#x7406;&#x672C;&#x66F8;&#x7684;&#x5BEB;&#x4F5C;&#x601D;&#x8DEF;&#x3002;&#x540C;&#x6642;&#x611F;&#x8B1D;&#x4ED6;&#x7684;&#x59BB;&#x5B50;Meg&#x548C;&#x5176;&#x4ED6;&#x5F88;&#x591A;&#x670B;&#x53CB;&#x5C0D;&#x4ED6;&#x5BEB;&#x4F5C;&#x4E8B;&#x696D;&#x7684;&#x652F;&#x6301;&#x3002;</p>
<p>2015&#x5E74; 10&#x6708; &#x65BC; &#x7D10;&#x7D04;</p>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="1.1" data-chapter-title="Hello, World" data-filepath="ch1/ch1-01.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="1.1" data-chapter-title="Hello, World" data-filepath="ch1/ch1-01.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>
@@ -2024,41 +2024,42 @@
<section class="normal" id="section-">
<h2 id="11-hello-world">1.1. Hello, World</h2>
<p>&#x6211;&#x5011;&#x4EE5;1978&#x5E74;&#xFF0C;c&#x8A9E;&#x8A00;&#x6B77;&#x53F2;&#x4E0A;&#x7D93;&#x5178;&#x7684;hello world&#x6848;&#x4F8B;&#x4F86;&#x958B;&#x59CB;&#x5427;&#x3002;C&#x8A9E;&#x8A00;&#x5C0D;Go&#x8A9E;&#x8A00;&#x7684;&#x8A2D;&#x8A08;&#x7523;&#x751F;&#x4E86;&#x5F88;&#x591A;&#x5F71;&#x97FF;&#x3002;&#x7528;&#x9019;&#x500B;&#x4F8B;&#x5B50;&#xFF0C;&#x6211;&#x5011;&#x4F86;&#x8B1B;&#x89E3;&#x4E00;&#x4E9B;Go&#x8A9E;&#x8A00;&#x7684;&#x8988;&#x5FC3;&#x7279;&#x6027;&#xFF1A;</p>
<pre><code class="lang-go"><span class="hljs-comment">//gopl.io/ch1/helloworld</span>
<p>&#x6211;&#x5011;&#x4EE5;1978&#x5E74;&#x9F63;&#x7248;&#x7684;C&#x8A9E;&#x8A00;&#x8056;&#x7D93;&#x300A;The C Programming Language&#x300B;&#x4E2D;&#x7D93;&#x5178;&#x7684;&#x201C;hello world&#x201D;&#x6848;&#x4F8B;&#x4F86;&#x958B;&#x59CB;&#x5427;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;&#x672C;&#x66F8;&#x4F5C;&#x8005;&#x4E4B;&#x4E00;Brian W. Kernighan&#x4E5F;&#x662F;C&#x8A9E;&#x8A00;&#x8056;&#x7D93;&#x4E00;&#x66F8;&#x7684;&#x4F5C;&#x8005;&#xFF09;&#x3002;C&#x8A9E;&#x8A00;&#x5C0D;Go&#x8A9E;&#x8A00;&#x7684;&#x8A2D;&#x8A08;&#x7523;&#x751F;&#x4E86;&#x5F88;&#x591A;&#x5F71;&#x97FF;&#x3002;&#x7528;&#x9019;&#x500B;&#x4F8B;&#x5B50;&#xFF0C;&#x6211;&#x5011;&#x4F86;&#x8B1B;&#x89E3;&#x4E00;&#x4E9B;Go&#x8A9E;&#x8A00;&#x7684;&#x8988;&#x5FC3;&#x7279;&#x6027;&#xFF1A;</p>
<pre><code class="lang-go">gopl.io/ch1/helloworld
<span class="hljs-keyword">package</span> main
<span class="hljs-keyword">import</span> <span class="hljs-string">&quot;fmt&quot;</span>
<span class="hljs-keyword">func</span> main() {
fmt.Println(<span class="hljs-string">&quot;Hello, BF&quot;</span>)
fmt.Println(<span class="hljs-string">&quot;Hello, &#x4E16;&#x754C;&quot;</span>)
}
</code></pre>
<p>Go&#x662F;&#x4E00;&#x9580;&#x7DE8;&#x8B6F;&#x578B;&#x8A9E;&#x8A00;&#xFF0C;Go&#x7684;&#x5DE5;&#x5177;&#x93C8;&#x5C07;&#x6E90;&#x4EE3;&#x78BC;&#x548C;&#x5176;&#x4F9D;&#x8CF4;&#x4E00;&#x8D77;&#x6253;&#x5305;&#xFF0C;&#x751F;&#x6210;&#x6A5F;&#x5668;&#x7684;&#x672C;&#x5730;&#x6307;&#x4EE4;(&#x8B6F;&#x8A3B;&#xFF1A;&#x975C;&#x614B;&#x7DE8;&#x8B6F;)&#x3002;Go&#x8A9E;&#x8A00;&#x63D0;&#x4F9B;&#x7684;&#x5DE5;&#x5177;&#x53EF;&#x4EE5;&#x901A;&#x904E;go&#x4E0B;&#x7684;&#x4E00;&#x7E6B;&#x5217;&#x5B50;&#x547D;&#x4EE4;&#x4F86;&#x8ABF;&#x7528;&#x3002;&#x6700;&#x7C21;&#x55AE;&#x7684;&#x4E00;&#x500B;&#x5B50;&#x547D;&#x4EE4;&#x5C31;&#x662F;run&#x3002;&#x9019;&#x500B;&#x547D;&#x4EE4;&#x6703;&#x5C07;&#x4E00;&#x500B;&#x6216;&#x591A;&#x500B;&#x4EE5;.go&#x7D50;&#x675F;&#x7684;&#x6E90;&#x6587;&#x4EF6;&#xFF0C;&#x548C;&#x95DC;&#x806F;&#x5EAB;&#x93C8;&#x63A5;&#x5230;&#x4E00;&#x8D77;&#xFF0C;&#x7136;&#x5F8C;&#x904B;&#x884C;&#x6700;&#x7D42;&#x7684;&#x53EF;&#x57F7;&#x884C;&#x6587;&#x4EF6;&#x3002;(&#x672C;&#x66F8;&#x5C07;&#x7528;$&#x8868;&#x793A;&#x547D;&#x4EE4;&#x884C;&#x7684;&#x63D0;&#x793A;&#x7B26;)</p>
<p>Go&#x662F;&#x4E00;&#x9580;&#x7DE8;&#x8B6F;&#x578B;&#x8A9E;&#x8A00;&#xFF0C;Go&#x8A9E;&#x8A00;&#x7684;&#x5DE5;&#x5177;&#x93C8;&#x5C07;&#x6E90;&#x4EE3;&#x78BC;&#x548C;&#x5176;&#x4F9D;&#x8CF4;&#x4E00;&#x8D77;&#x6253;&#x5305;&#xFF0C;&#x751F;&#x6210;&#x6A5F;&#x5668;&#x7684;&#x672C;&#x5730;&#x6307;&#x4EE4;(&#x8B6F;&#x8A3B;&#xFF1A;&#x975C;&#x614B;&#x7DE8;&#x8B6F;)&#x3002;Go&#x8A9E;&#x8A00;&#x63D0;&#x4F9B;&#x7684;&#x5DE5;&#x5177;&#x53EF;&#x4EE5;&#x901A;&#x904E;go&#x547D;&#x4EE4;&#x4E0B;&#x7684;&#x4E00;&#x7E6B;&#x5217;&#x5B50;&#x547D;&#x4EE4;&#x4F86;&#x8ABF;&#x7528;&#x3002;&#x6700;&#x7C21;&#x55AE;&#x7684;&#x4E00;&#x500B;&#x5B50;&#x547D;&#x4EE4;&#x5C31;&#x662F;run&#x3002;&#x9019;&#x500B;&#x547D;&#x4EE4;&#x6703;&#x5C07;&#x4E00;&#x500B;&#x6216;&#x591A;&#x500B;&#x6587;&#x4EF6;&#x540D;&#x4EE5;.go&#x7D50;&#x5C3E;&#x7684;&#x6E90;&#x6587;&#x4EF6;&#xFF0C;&#x548C;&#x95DC;&#x806F;&#x5EAB;&#x93C8;&#x63A5;&#x5230;&#x4E00;&#x8D77;&#xFF0C;&#x7136;&#x5F8C;&#x904B;&#x884C;&#x6700;&#x7D42;&#x7684;&#x53EF;&#x57F7;&#x884C;&#x6587;&#x4EF6;&#x3002;&#xFF08;&#x672C;&#x66F8;&#x5C07;&#x7528;$&#x8868;&#x793A;&#x547D;&#x4EE4;&#x884C;&#x7684;&#x63D0;&#x793A;&#x7B26;&#x3002;&#xFF09;</p>
<pre><code>$ go run helloworld.go
</code></pre><p>&#x6BEB;&#x7121;&#x610F;&#x5916;&#xFF0C;&#x9019;&#x500B;&#x547D;&#x4EE4;&#x6703;&#x8F38;&#x9F63;&#xFF1A;</p>
<pre><code>Hello, BF
</code></pre><p>Go&#x539F;&#x751F;&#x652F;&#x6301;Unicode&#xFF0C;&#x6240;&#x4EE5;&#x4F60;&#x53EF;&#x4EE5;&#x7528;Go&#x8655;&#x7406;&#x4E16;&#x754C;&#x4E0A;&#x7684;&#x4EFB;&#x4F55;&#x8A9E;&#x8A00;&#x3002;</p>
<pre><code>Hello, &#x4E16;&#x754C;
</code></pre><p>Go&#x8A9E;&#x8A00;&#x539F;&#x751F;&#x652F;&#x6301;Unicode&#x6A19;&#x6E96;&#xFF0C;&#x6240;&#x4EE5;&#x4F60;&#x53EF;&#x4EE5;&#x7528;Go&#x8A9E;&#x8A00;&#x8655;&#x7406;&#x4E16;&#x754C;&#x4E0A;&#x7684;&#x4EFB;&#x4F55;&#x81EA;&#x7136;&#x8A9E;&#x8A00;&#x3002;</p>
<p>&#x5982;&#x679C;&#x4F60;&#x5E0C;&#x671B;&#x81EA;&#x5DF1;&#x7684;&#x7A0B;&#x5E8F;&#x4E0D;&#x96BB;&#x662F;&#x7C21;&#x55AE;&#x7684;&#x4E00;&#x6B21;&#x6027;&#x5BE6;&#x9A57;&#xFF0C;&#x90A3;&#x9EBD;&#x4F60;&#x4E00;&#x5B9A;&#x6703;&#x5E0C;&#x671B;&#x80FD;&#x5920;&#x7DE8;&#x8B6F;&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#xFF0C;&#x4F75;&#x4E14;&#x80FD;&#x5920;&#x5C07;&#x7DE8;&#x8B6F;&#x7D50;&#x679C;&#x4FDD;&#x5B58;&#x4E0B;&#x4F86;&#x4EE5;&#x5099;&#x5C07;&#x4F86;&#x4E4B;&#x7528;&#x3002;&#x9019;&#x500B;&#x53EF;&#x4EE5;&#x7528;build&#x5B50;&#x547D;&#x4EE4;&#x4F86;&#x5BE6;&#x73FE;&#xFF1A;</p>
<pre><code>$ go build helloworld.go
</code></pre><p>&#x9019;&#x6703;&#x5275;&#x5EFA;&#x4E00;&#x500B;&#x540D;&#x7232;helloworld&#x7684;&#x53EF;&#x57F7;&#x884C;&#x7684;&#x4E8C;&#x9032;&#x88FD;&#x6587;&#x4EF6;&#xFF0C;&#x4E4B;&#x5F8C;&#x4F60;&#x53EF;&#x4EE5;&#x5728;&#x4EFB;&#x4F55;&#x6642;&#x9593;&#x53BB;&#x904B;&#x884C;&#x9019;&#x500B;&#x4E8C;&#x9032;&#x88FD;&#x6587;&#x4EF6;&#xFF0C;&#x4E0D;&#x9700;&#x8981;&#x5176;&#x5B83;&#x7684;&#x4EFB;&#x4F55;&#x8655;&#x7406;(&#x8B6F;&#x8A3B;&#xFF1A;&#x56E0;&#x7232;&#x662F;&#x975C;&#x614B;&#x7DE8;&#x8B6F;&#xFF0C;&#x6240;&#x4EE5;&#x4E5F;&#x4E0D;&#x7528;&#x64D4;&#x5FC3;&#x5728;&#x7E6B;&#x7D71;&#x5EAB;&#x66F4;&#x65B0;&#x7684;&#x6642;&#x5019;&#x885D;&#x7A81;&#xFF0C;&#x5E78;&#x798F;&#x611F;&#x6EFF;&#x6EFF;)&#x3002;</p>
<p>&#x4E0B;&#x9762;&#x662F;&#x904B;&#x884C;&#x6211;&#x5011;&#x7684;&#x7DE8;&#x8B6F;&#x7D50;&#x679C;&#x6A23;&#x4F8B;&#xFF1A;</p>
</code></pre><p>&#x9019;&#x6703;&#x5275;&#x5EFA;&#x4E00;&#x500B;&#x540D;&#x7232;helloworld&#x7684;&#x53EF;&#x57F7;&#x884C;&#x7684;&#x4E8C;&#x9032;&#x88FD;&#x6587;&#x4EF6;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;&#x5728;Windows&#x7E6B;&#x7D71;&#x4E0B;&#x751F;&#x6210;&#x7684;&#x53EF;&#x57F7;&#x884C;&#x6587;&#x4EF6;&#x662F;helloworld.exe&#xFF0C;&#x589E;&#x52A0;&#x4E86;.exe&#x5F8C;&#x7DB4;&#x540D;&#xFF09;&#xFF0C;&#x4E4B;&#x5F8C;&#x4F60;&#x53EF;&#x4EE5;&#x5728;&#x4EFB;&#x4F55;&#x6642;&#x9593;&#x53BB;&#x904B;&#x884C;&#x9019;&#x500B;&#x4E8C;&#x9032;&#x88FD;&#x6587;&#x4EF6;&#xFF0C;&#x4E0D;&#x9700;&#x8981;&#x5176;&#x5B83;&#x7684;&#x4EFB;&#x4F55;&#x8655;&#x7406;(&#x8B6F;&#x8A3B;&#xFF1A;&#x56E0;&#x7232;&#x662F;&#x975C;&#x614B;&#x7DE8;&#x8B6F;&#xFF0C;&#x6240;&#x4EE5;&#x4E5F;&#x4E0D;&#x7528;&#x64D4;&#x5FC3;&#x5728;&#x7E6B;&#x7D71;&#x5EAB;&#x66F4;&#x65B0;&#x7684;&#x6642;&#x5019;&#x885D;&#x7A81;&#xFF0C;&#x5E78;&#x798F;&#x611F;&#x6EFF;&#x6EFF;)&#x3002;</p>
<p>&#x4E0B;&#x9762;&#x662F;&#x904B;&#x884C;&#x6211;&#x5011;&#x7684;&#x7DE8;&#x8B6F;&#x7D50;&#x679C;&#x6A23;&#x4F8B;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;&#x5728;Windows&#x7E6B;&#x7D71;&#x4E0B;&#x5728;&#x547D;&#x4EE4;&#x884C;&#x76F4;&#x63A5;&#x8F38;&#x5165;helloworld.exe&#x547D;&#x4EE4;&#x904B;&#x884C;&#xFF09;&#xFF1A;</p>
<pre><code>$ ./helloworld
Hello, BF
</code></pre><p>&#x672C;&#x66F8;&#x4E2D;&#x6211;&#x5011;&#x6240;&#x6709;&#x7684;&#x4F8B;&#x5B50;&#x90FD;&#x505A;&#x4E86;&#x4E00;&#x500B;&#x7279;&#x6B8A;&#x6A19;&#x8A18;&#xFF0C;&#x4F60;&#x53EF;&#x4EE5;&#x901A;&#x904E;&#x9019;&#x4E9B;&#x6A19;&#x8A18;&#x5728;gopl.io&#x5728;&#x7DDA;&#x7DB2;&#x7AD9;&#x4E0A;&#x627E;&#x5230;&#x9019;&#x4E9B;&#x6A23;&#x4F8B;&#x4EE3;&#x78BC;&#xFF0C;&#x6BD4;&#x5982;&#x9019;&#x500B; gopl.io/ch1/helloworld</p>
<p>&#x5982;&#x679C;&#x4F60;&#x57F7;&#x884C;go get gopl.io/ch1/helloworld&#xFF0C;go&#x80FD;&#x5920;&#x81EA;&#x5DF1;&#x5F9E;&#x7DB2;&#x4E0A;&#x7A6B;&#x53D6;&#x5230;&#x9019;&#x4E9B;&#x4EE3;&#x78BC;&#xFF0C;&#x4F75;&#x4E14;&#x5C07;&#x9019;&#x4E9B;&#x4EE3;&#x78BC;&#x653E;&#x5230;&#x5C0D;&#x61C9;&#x7684;&#x76EE;&#x9332;&#x4E2D;&#x3002;&#x66F4;&#x8A73;&#x7D30;&#x7684;&#x4ECB;&#x7D39;&#x5728;2.6&#x548C;10.7&#x7AE0;&#x7BC0;&#x4E2D;&#x3002;</p>
<p>&#x6211;&#x5011;&#x4F86;&#x8A0E;&#x8AD6;&#x4E00;&#x4E0B;&#x7A0B;&#x5E8F;&#x672C;&#x8EAB;&#x3002;Go&#x7684;&#x4EE3;&#x78BC;&#x662F;&#x7528;package&#x4F86;&#x7D44;&#x7E54;&#x7684;&#xFF0C;package&#x7684;&#x6982;&#x5FF5;&#x548C;&#x4F60;&#x77E5;&#x9053;&#x7684;&#x5176;&#x5B83;&#x8A9E;&#x8A00;&#x91CC;&#x7684;libraries&#x6216;&#x8005;modules&#x6BD4;&#x8F03;&#x985E;&#x4F3C;&#x3002;&#x4E00;&#x500B;package&#x6703;&#x5305;&#x542B;&#x4E00;&#x500B;&#x6216;&#x591A;&#x500B;.go&#x7D50;&#x675F;&#x7684;&#x6E90;&#x4EE3;&#x78BC;&#x6587;&#x4EF6;&#x3002;&#x6BCF;&#x4E00;&#x500B;&#x6E90;&#x6587;&#x4EF6;&#x90FD;&#x662F;&#x4EE5;&#x4E00;&#x500B;package xxx&#x7684;&#x8072;&#x660E;&#x958B;&#x982D;&#x7684;&#xFF0C;&#x6BD4;&#x5982;&#x6211;&#x5011;&#x7684;&#x4F8B;&#x5B50;&#x91CC;&#x5C31;&#x662F;package main&#x3002;&#x9019;&#x884C;&#x8072;&#x660E;&#x8868;&#x793A;&#x8A72;&#x6587;&#x4EF6;&#x662F;&#x5C6C;&#x65BC;&#x54EA;&#x4E00;&#x500B;package&#xFF0C;&#x7DCA;&#x8DDF;&#x7740;&#x662F;&#x4E00;&#x7E6B;&#x5217;import&#x7684;package&#x540D;&#xFF0C;&#x8868;&#x793A;&#x9019;&#x500B;&#x6587;&#x4EF6;&#x4E2D;&#x5F15;&#x5165;&#x7684;package&#x3002;&#x518D;&#x4E4B;&#x5F8C;&#x662F;&#x672C;&#x6587;&#x4EF6;&#x672C;&#x8EAB;&#x7684;&#x4EE3;&#x78BC;</p>
<p>Go&#x7684;&#x6A19;&#x6E96;&#x5EAB;&#x5DF2;&#x7D93;&#x63D0;&#x4F9B;&#x4E86;100&#x591A;&#x500B;package&#xFF0C;&#x7528;&#x4F86;&#x5B8C;&#x6210;&#x4E00;&#x9580;&#x7A0B;&#x5E8F;&#x8A9E;&#x8A00;&#x7684;&#x4E00;&#x4E9B;&#x57FA;&#x672C;&#x4EFB;&#x52D9;&#xFF0C;&#x6BD4;&#x5982;&#x8F38;&#x5165;&#x3001;&#x8F38;&#x9F63;&#x3001;&#x6392;&#x5E8F;&#x6216;&#x8005;&#x5B57;&#x7B26;&#x4E32;/&#x6587;&#x672C;&#x8655;&#x7406;&#x3002;&#x6BD4;&#x5982;fmt&#x9019;&#x500B;package&#xFF0C;&#x5C31;&#x5305;&#x62EC;&#x63A5;&#x6536;&#x8F38;&#x5165;&#x3001;&#x683C;&#x5F0F;&#x5316;&#x8F38;&#x9F63;&#x7684;&#x5404;&#x7A2E;&#x51FD;&#x6578;&#x3002;Println&#x662F;&#x5176;&#x4E2D;&#x7684;&#x4E00;&#x500B;&#x51FD;&#x6578;&#xFF0C;&#x53EF;&#x4EE5;&#x7528;&#x9019;&#x500B;&#x51FD;&#x6578;&#x4F86;&#x6253;&#x5370;&#x4E00;&#x500B;&#x6216;&#x591A;&#x500B;&#x503C;&#xFF0C;&#x8A72;&#x51FD;&#x6578;&#x6703;&#x5C07;&#x9019;&#x4E9B;&#x53C3;&#x6578;&#x7528;&#x7A7A;&#x683C;&#x9694;&#x958B;&#x9032;&#x884C;&#x8F38;&#x9F63;&#xFF0C;&#x4F75;&#x5728;&#x8F38;&#x9F63;&#x5B8C;&#x7562;&#x4E4B;&#x5F8C;&#x5728;&#x884C;&#x672B;&#x52A0;&#x4E0A;&#x4E00;&#x500B;&#x63DB;&#x884C;&#x7B26;&#x3002;</p>
<p>package main&#x6BD4;&#x8F03;&#x7279;&#x6B8A;&#x3002;&#x9019;&#x500B;package&#x91CC;&#x6703;&#x5B9A;&#x7FA9;&#x4E00;&#x500B;&#x7368;&#x7ACB;&#x7684;&#x7A0B;&#x5E8F;&#xFF0C;&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#x662F;&#x53EF;&#x4EE5;&#x904B;&#x884C;&#x7684;&#xFF0C;&#x800C;&#x4E0D;&#x662F;&#x50CF;&#x5176;&#x5B83;package&#x4E00;&#x6A23;&#x7684;library&#x3002;&#x5728;main&#x9019;&#x500B;package&#x91CC;&#xFF0C;main&#x51FD;&#x6578;&#x4E5F;&#x662F;&#x4E00;&#x500B;&#x7279;&#x6B8A;&#x7684;&#x51FD;&#x6578;&#xFF0C;&#x9019;&#x662F;&#x6211;&#x5011;&#x6574;&#x500B;&#x7A0B;&#x5E8F;&#x7684;&#x5165;&#x53E3;(&#x8B6F;&#x8A3B;&#xFF1A;&#x5176;&#x5BE6;c&#x7E6B;&#x8A9E;&#x8A00;&#x5DEE;&#x4E0D;&#x591A;&#x90FD;&#x662F;&#x9019;&#x6A23;)&#x3002;main&#x51FD;&#x6578;&#x6240;&#x505A;&#x7684;&#x4E8B;&#x60C5;&#x5C31;&#x662F;&#x6211;&#x5011;&#x7A0B;&#x5E8F;&#x505A;&#x7684;&#x4E8B;&#x60C5;&#x3002;&#x7576;&#x7136;&#x4E86;&#xFF0C;main&#x51FD;&#x6578;&#x4E00;&#x822C;&#x5B8C;&#x6210;&#x7684;&#x5DE5;&#x4F5C;&#x662F;&#x8ABF;&#x7528;&#x5176;&#x5B83;packge&#x91CC;&#x7684;&#x51FD;&#x6578;&#x4F86;&#x5B8C;&#x6210;&#x81EA;&#x5DF1;&#x7684;&#x5DE5;&#x4F5C;&#xFF0C;&#x6BD4;&#x5982;fmt.Println&#x3002;</p>
<p>&#x6211;&#x5011;&#x5FC5;&#x9B1A;&#x544A;&#x8A34;&#x7DE8;&#x8B6F;&#x5668;&#x5982;&#x679C;&#x8981;&#x6B63;&#x78BA;&#x5730;&#x57F7;&#x884C;&#x9019;&#x500B;&#x6E90;&#x6587;&#x4EF6;&#xFF0C;&#x9700;&#x8981;&#x7528;&#x5230;&#x54EA;&#x4E9B;package&#xFF0C;&#x9019;&#x5C31;&#x662F;import&#x5728;&#x9019;&#x500B;&#x6587;&#x4EF6;&#x91CC;&#x626E;&#x6F14;&#x7684;&#x89D2;&#x8272;&#x3002;&#x4E0A;&#x8FF0;&#x7684;hello world&#x96BB;&#x7528;&#x5230;&#x4E86;&#x4E00;&#x500B;&#x5176;&#x5B83;&#x7684;package&#xFF0C;&#x5C31;&#x662F;fmt&#x3002;&#x4E00;&#x822C;&#x60C5;&#x6CC1;&#x4E0B;&#xFF0C;&#x9700;&#x8981;import&#x7684;package&#x4E0D;&#x96BB;&#x4E00;&#x500B;&#x3002;</p>
<p>&#x4E5F;&#x6B63;&#x662F;&#x56E0;&#x7232;go&#x8A9E;&#x8A00;&#x5FC5;&#x9B1A;&#x5F15;&#x5165;&#x6240;&#x6709;&#x7528;&#x5230;&#x7684;package&#x7684;&#x539F;&#x5247;&#xFF0C;&#x5047;&#x5982;&#x4F60;&#x6C92;&#x6709;&#x5728;&#x4EE3;&#x78BC;&#x91CC;import&#x9700;&#x8981;&#x7528;&#x5230;&#x7684;package&#xFF0C;&#x7A0B;&#x5E8F;&#x5C07;&#x7121;&#x6CD5;&#x7DE8;&#x8B6F;&#x901A;&#x904E;&#xFF0C;&#x7576;&#x4F60;import&#x4E86;&#x6C92;&#x6709;&#x7528;&#x5230;&#x7684;package&#xFF0C;&#x4E5F;&#x6703;&#x7121;&#x6CD5;&#x7DE8;&#x8B6F;&#x901A;&#x904E;(&#x8B6F;&#x8A3B;&#xFF1A;&#x722D;&#x8B70;&#x7279;&#x6027;&#x4E4B;&#x4E00;)&#x3002;</p>
<p>import&#x8072;&#x660E;&#x5FC5;&#x9B1A;&#x8DDF;&#x5728;&#x6587;&#x4EF6;&#x7684;package&#x8072;&#x660E;&#x4E4B;&#x5F8C;&#x3002;&#x5728;import&#x4E4B;&#x5F8C;&#xFF0C;&#x5247;&#x662F;&#x5404;&#x7A2E;&#x65B9;&#x6CD5;&#x3001;&#x8B8A;&#x91CF;&#x3001;&#x5E38;&#x91CF;&#x3001;&#x985E;&#x578B;&#x7684;&#x8072;&#x660E;(&#x5206;&#x522B;&#x7528;&#x95DC;&#x9375;&#x5B57;func, var, const, type&#x4F86;&#x9032;&#x884C;&#x5B9A;&#x7FA9;)&#x3002;&#x9019;&#x4E9B;&#x5167;&#x5BB9;&#x7684;&#x8072;&#x660E;&#x9806;&#x5E8F;&#x4F75;&#x6C92;&#x6709;&#x4EC0;&#x9EBD;&#x898F;&#x5B9A;&#xFF0C;&#x53EF;&#x4EE5;&#x96A8;&#x4FBF;(&#x8B6F;&#x8A3B;&#xFF1A;&#x6700;&#x597D;&#x9084;&#x662F;&#x5B9A;&#x4E00;&#x4E0B;&#x898F;&#x8303;)&#x3002;&#x6211;&#x5011;&#x4F8B;&#x5B50;&#x91CC;&#x7684;&#x7A0B;&#x5E8F;&#x6BD4;&#x8F03;&#x7C21;&#x55AE;&#xFF0C;&#x96BB;&#x5305;&#x542B;&#x4E86;&#x4E00;&#x500B;&#x51FD;&#x6578;&#x3002;&#x4F75;&#x4E14;&#x5728;&#x8A72;&#x51FD;&#x6578;&#x91CC;&#x4E5F;&#x96BB;&#x8ABF;&#x7528;&#x4E86;&#x4E00;&#x500B;&#x5176;&#x5B83;&#x51FD;&#x6578;&#x3002;&#x7232;&#x4E86;&#x7BC0;&#x7701;&#x7A7A;&#x9593;&#xFF0C;&#x6709;&#x4E9B;&#x6642;&#x5019;&#x7684;&#x4F8B;&#x5B50;&#x6211;&#x5011;&#x6703;&#x7701;&#x7565;package&#x548C;import&#x8072;&#x660E;&#xFF0C;&#x4F46;&#x662F;&#x8B80;&#x8005;&#x9700;&#x8981;&#x8A3B;&#x610F;&#x9019;&#x4E9B;&#x8072;&#x660E;&#x662F;&#x4E00;&#x5B9A;&#x8981;&#x5305;&#x542B;&#x5728;&#x6E90;&#x6587;&#x4EF6;&#x91CC;&#x7684;&#x3002;</p>
<p>&#x4E00;&#x500B;&#x51FD;&#x6578;&#x7684;&#x8072;&#x660E;&#x5305;&#x542B;func&#x9019;&#x500B;&#x95DC;&#x9375;&#x5B57;&#x3001;&#x51FD;&#x6578;&#x540D;&#x3001;&#x53C3;&#x6578;&#x5217;&#x8868;(&#x6211;&#x5011;&#x4F8B;&#x5B50;&#x91CC;&#x7684;main&#x51FD;&#x6578;&#x662F;&#x7A7A;)&#x3001;&#x8FD4;&#x8FF4;&#x7D50;&#x679C;&#x5217;&#x8868;(&#x9019;&#x91CC;&#x7684;&#x4F8B;&#x5B50;&#x4E5F;&#x662F;&#x7A7A;)&#x4EE5;&#x53CA;&#x5305;&#x542B;&#x5728;&#x5927;&#x62EC;&#x865F;&#x91CC;&#x7684;&#x51FD;&#x6578;&#x9AD4;&#x3002;&#x95DC;&#x65BC;&#x51FD;&#x6578;&#x7684;&#x66F4;&#x8A73;&#x7D30;&#x63CF;&#x8FF0;&#x5728;&#x7B2C;&#x4E94;&#x7AE0;&#x3002;</p>
<p>Go&#x662F;&#x4E00;&#x9580;&#x4E0D;&#x9700;&#x8981;&#x5206;&#x865F;&#x4F5C;&#x7232;&#x8A9E;&#x53E5;&#x6216;&#x8005;&#x8072;&#x660E;&#x7D50;&#x675F;&#x7684;&#x8A9E;&#x8A00;&#xFF0C;&#x9664;&#x975E;&#x8981;&#x5728;&#x4E00;&#x884C;&#x4E2D;&#x5C07;&#x591A;&#x500B;&#x8A9E;&#x53E5;&#x3001;&#x8072;&#x660E;&#x9694;&#x958B;&#x3002;&#x7136;&#x800C;&#x5728;&#x7DE8;&#x8B6F;&#x6642;&#xFF0C;&#x7DE8;&#x8B6F;&#x5668;&#x6703;&#x4E3B;&#x52D5;&#x5728;&#x4E00;&#x4E9B;&#x7279;&#x5B9A;&#x7684;&#x7B26;&#x865F;(&#x8B6F;&#x8A3B;&#xFF1A;&#x6BD4;&#x5982;&#x884C;&#x672B;&#x662F;&#xFF0C;&#x4E00;&#x500B;&#x6A19;&#x8B58;&#x7B26;&#x3001;&#x4E00;&#x500B;&#x6574;&#x6578;&#x3001;&#x6D6E;&#x9EDE;&#x6578;&#x3001;&#x865B;&#x6578;&#x3001;&#x5B57;&#x7B26;&#x6216;&#x5B57;&#x7B26;&#x4E32;&#x6587;&#x5B57;&#x3001;&#x95DC;&#x9375;&#x5B57;break&#x3001;continue&#x3001;fallthrough&#x6216;return&#x4E2D;&#x7684;&#x4E00;&#x500B;&#x3001;&#x904B;&#x7B97;&#x7B26;&#x548C;&#x5206;&#x9694;&#x7B26;++&#x3001;--&#x3001;)&#x3001;]&#x6216;}&#x4E2D;&#x7684;&#x4E00;&#x500B;) &#x5F8C;&#x6DFB;&#x52A0;&#x5206;&#x865F;&#xFF0C;&#x6240;&#x4EE5;&#x5728;&#x54EA;&#x91CC;&#x52A0;&#x5206;&#x865F;&#x5408;&#x9069;&#x662F;&#x53D6;&#x6C7A;&#x65BC;Go&#x7684;&#x4EE3;&#x78BC;&#x7684;&#x3002;&#x4F8B;&#x5982;&#xFF1A;&#x5728;Go&#x8A9E;&#x8A00;&#x4E2D;&#x7684;&#x51FD;&#x6578;&#x8072;&#x660E;&#x548C; { &#x5FC5;&#x9B1A;&#x5728;&#x540C;&#x4E00;&#x884C;&#xFF0C;&#x800C;&#x5728;x + y&#x7684;&#x8868;&#x9054;&#x5F0F;&#x4E2D;&#xFF0C;&#x5728;+&#x865F;&#x5F8C;&#x63DB;&#x884C;&#x53EF;&#x4EE5;&#xFF0C;&#x4F46;&#x662F;&#x5728;+&#x865F;&#x524D;&#x63DB;&#x884C;&#x5247;&#x6703;&#x6709;&#x554F;&#x984C;&#x3002;</p>
<p>Go&#x8A9E;&#x8A00;&#x5728;&#x4EE3;&#x78BC;&#x683C;&#x5F0F;&#x4E0A;&#x91C7;&#x53D6;&#x4E86;&#x5F88;&#x5F37;&#x786C;&#x7684;&#x614B;&#x5EA6;&#x3002;gofmt&#x5DE5;&#x5177;&#x6703;&#x5C07;&#x4F60;&#x7684;&#x4EE3;&#x78BC;&#x683C;&#x5F0F;&#x5316;&#x7232;&#x6A19;&#x6E96;&#x683C;&#x5F0F;&#xFF0C;&#x4F75;&#x4E14;go&#x5DE5;&#x5177;&#x4E2D;&#x7684;fmt&#x5B50;&#x547D;&#x4EE4;&#x6703;&#x81EA;&#x52D5;&#x5C0D;&#x7279;&#x5B9A;package&#x4E0B;&#x7684;&#x6240;&#x6709;.go&#x6E90;&#x6587;&#x4EF6;&#x61C9;&#x7528;gofmt&#x3002;&#x5982;&#x679C;&#x4E0D;&#x6307;&#x5B9A;package&#xFF0C;&#x5247;&#x9ED8;&#x8A8D;&#x5C0D;&#x7576;&#x524D;&#x76EE;&#x9332;&#x4E0B;&#x7684;&#x6E90;&#x6587;&#x4EF6;&#x9032;&#x884C;&#x683C;&#x5F0F;&#x5316;&#x3002;&#x672C;&#x66F8;&#x4E2D;&#x7684;&#x6240;&#x6709;&#x4EE3;&#x78BC;&#x5DF2;&#x7D93;&#x662F;&#x57F7;&#x884C;&#x904E;gofmt&#x5F8C;&#x7684;&#x6A19;&#x6E96;&#x683C;&#x5F0F;&#x4EE3;&#x78BC;&#x3002;&#x4F60;&#x61C9;&#x8A72;&#x5728;&#x81EA;&#x5DF1;&#x7684;&#x4EE3;&#x78BC;&#x4E0A;&#x4E5F;&#x57F7;&#x884C;&#x9019;&#x7A2E;&#x683C;&#x5F0F;&#x5316;&#x3002;&#x898F;&#x5B9A;&#x4E00;&#x7A2E;&#x6A19;&#x6E96;&#x7684;&#x4EE3;&#x78BC;&#x683C;&#x5F0F;&#x53EF;&#x4EE5;&#x898F;&#x907F;&#x6389;&#x7121;&#x76E1;&#x7684;&#x7121;&#x610F;&#x7FA9;&#x7684;&#x6495;&#x903C;&#x3002;&#x7576;&#x7136;&#x4E86;&#xFF0C;&#x4E5F;&#x53EF;&#x4EE5;&#x907F;&#x514D;&#x7531;&#x65BC;&#x4EE3;&#x78BC;&#x683C;&#x5F0F;&#x5C0E;&#x81F4;&#x7684;&#x908F;&#x8F2F;&#x4E0A;&#x7684;&#x6B67;&#x7FA9;&#x3002;</p>
Hello, &#x4E16;&#x754C;
</code></pre><p>&#x672C;&#x66F8;&#x4E2D;&#x6211;&#x5011;&#x6240;&#x6709;&#x7684;&#x4F8B;&#x5B50;&#x90FD;&#x505A;&#x4E86;&#x4E00;&#x500B;&#x7279;&#x6B8A;&#x6A19;&#x8A18;&#xFF0C;&#x4F60;&#x53EF;&#x4EE5;&#x901A;&#x904E;&#x9019;&#x4E9B;&#x6A19;&#x8A18;&#x5728; <a href="http://gopl.io" target="_blank">http://gopl.io</a> &#x5728;&#x7DDA;&#x7DB2;&#x7AD9;&#x4E0A;&#x627E;&#x5230;&#x9019;&#x4E9B;&#x6A23;&#x4F8B;&#x4EE3;&#x78BC;&#xFF0C;&#x6BD4;&#x5982;&#x9019;&#x500B;</p>
<pre><code>gopl.io/ch1/helloworld
</code></pre><p>&#x5982;&#x679C;&#x4F60;&#x57F7;&#x884C; <code>go get gopl.io/ch1/helloworld</code> &#x547D;&#x4EE4;&#xFF0C;go&#x547D;&#x4EE4;&#x80FD;&#x5920;&#x81EA;&#x5DF1;&#x5F9E;&#x7DB2;&#x4E0A;&#x7A6B;&#x53D6;&#x5230;&#x9019;&#x4E9B;&#x4EE3;&#x78BC;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;&#x9700;&#x8981;&#x5148;&#x5B89;&#x88DD;Git&#x6216;Hg&#x4E4B;&#x985E;&#x7684;&#x7248;&#x672C;&#x7BA1;&#x7406;&#x5DE5;&#x5177;&#xFF0C;&#x4F75;&#x5C07;&#x5C0D;&#x61C9;&#x7684;&#x547D;&#x4EE4;&#x6DFB;&#x52A0;&#x5230;PATH&#x74B0;&#x5883;&#x8B8A;&#x91CF;&#x4E2D;&#xFF09;&#xFF0C;&#x4F75;&#x4E14;&#x5C07;&#x9019;&#x4E9B;&#x4EE3;&#x78BC;&#x653E;&#x5230;&#x5C0D;&#x61C9;&#x7684;&#x76EE;&#x9332;&#x4E2D;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;&#x5E8F;&#x8A00;&#x5DF2;&#x7D93;&#x63D0;&#x53CA;&#xFF0C;&#x9700;&#x8981;&#x5148;&#x8A2D;&#x7F6E;&#x597D;GOPATH&#x74B0;&#x5883;&#x8B8A;&#x91CF;&#xFF0C;&#x4E0B;&#x8F09;&#x7684;&#x4EE3;&#x78BC;&#x6703;&#x653E;&#x5728; $GOPATH/src/gopl.io/ch1/helloworld &#x76EE;&#x9332;&#xFF09;&#x3002;&#x66F4;&#x8A73;&#x7D30;&#x7684;&#x4ECB;&#x7D39;&#x5728;2.6&#x548C;10.7&#x7AE0;&#x7BC0;&#x4E2D;&#x3002;</p>
<p>&#x6211;&#x5011;&#x4F86;&#x8A0E;&#x8AD6;&#x4E00;&#x4E0B;&#x7A0B;&#x5E8F;&#x672C;&#x8EAB;&#x3002;Go&#x8A9E;&#x8A00;&#x7684;&#x4EE3;&#x78BC;&#x662F;&#x901A;&#x904E;package&#x4F86;&#x7D44;&#x7E54;&#x7684;&#xFF0C;package&#x7684;&#x6982;&#x5FF5;&#x548C;&#x4F60;&#x77E5;&#x9053;&#x7684;&#x5176;&#x5B83;&#x8A9E;&#x8A00;&#x91CC;&#x7684;libraries&#x6216;&#x8005;modules&#x6982;&#x5FF5;&#x6BD4;&#x8F03;&#x985E;&#x4F3C;&#x3002;&#x4E00;&#x500B;package&#x6703;&#x5305;&#x542B;&#x4E00;&#x500B;&#x6216;&#x591A;&#x500B;.go&#x7D50;&#x675F;&#x7684;&#x6E90;&#x4EE3;&#x78BC;&#x6587;&#x4EF6;&#x3002;&#x6BCF;&#x4E00;&#x500B;&#x6E90;&#x6587;&#x4EF6;&#x90FD;&#x662F;&#x4EE5;&#x4E00;&#x500B;package xxx&#x7684;&#x8072;&#x660E;&#x8A9E;&#x53E5;&#x958B;&#x982D;&#x7684;&#xFF0C;&#x6BD4;&#x5982;&#x6211;&#x5011;&#x7684;&#x4F8B;&#x5B50;&#x91CC;&#x5C31;&#x662F;package main&#x3002;&#x9019;&#x884C;&#x8072;&#x660E;&#x8A9E;&#x53E5;&#x8868;&#x793A;&#x8A72;&#x6587;&#x4EF6;&#x662F;&#x5C6C;&#x65BC;&#x54EA;&#x4E00;&#x500B;package&#xFF0C;&#x7DCA;&#x8DDF;&#x7740;&#x662F;&#x4E00;&#x7E6B;&#x5217;import&#x7684;package&#x540D;&#xFF0C;&#x8868;&#x793A;&#x9019;&#x500B;&#x6587;&#x4EF6;&#x4E2D;&#x5F15;&#x5165;&#x7684;package&#x3002;&#x518D;&#x4E4B;&#x5F8C;&#x662F;&#x672C;&#x6587;&#x4EF6;&#x672C;&#x8EAB;&#x7684;&#x4EE3;&#x78BC;&#x3002;</p>
<p>Go&#x7684;&#x6A19;&#x6E96;&#x5EAB;&#x5DF2;&#x7D93;&#x63D0;&#x4F9B;&#x4E86;100&#x591A;&#x500B;package&#xFF0C;&#x7528;&#x4F86;&#x5B8C;&#x6210;&#x4E00;&#x9580;&#x7A0B;&#x5E8F;&#x8A9E;&#x8A00;&#x7684;&#x4E00;&#x4E9B;&#x5E38;&#x898B;&#x7684;&#x57FA;&#x672C;&#x4EFB;&#x52D9;&#xFF0C;&#x6BD4;&#x5982;&#x8F38;&#x5165;&#x3001;&#x8F38;&#x9F63;&#x3001;&#x6392;&#x5E8F;&#x6216;&#x8005;&#x5B57;&#x7B26;&#x4E32;/&#x6587;&#x672C;&#x8655;&#x7406;&#x3002;&#x6BD4;&#x5982;fmt&#x9019;&#x500B;package&#xFF0C;&#x5C31;&#x5305;&#x62EC;&#x63A5;&#x6536;&#x8F38;&#x5165;&#x3001;&#x683C;&#x5F0F;&#x5316;&#x8F38;&#x9F63;&#x7684;&#x5404;&#x7A2E;&#x51FD;&#x6578;&#x3002;Println&#x662F;&#x5176;&#x4E2D;&#x7684;&#x4E00;&#x500B;&#x5E38;&#x7528;&#x7684;&#x51FD;&#x6578;&#xFF0C;&#x53EF;&#x4EE5;&#x7528;&#x9019;&#x500B;&#x51FD;&#x6578;&#x4F86;&#x6253;&#x5370;&#x4E00;&#x500B;&#x6216;&#x591A;&#x500B;&#x503C;&#xFF0C;&#x8A72;&#x51FD;&#x6578;&#x6703;&#x5C07;&#x9019;&#x4E9B;&#x53C3;&#x6578;&#x7528;&#x7A7A;&#x683C;&#x9694;&#x958B;&#x9032;&#x884C;&#x8F38;&#x9F63;&#xFF0C;&#x4F75;&#x5728;&#x8F38;&#x9F63;&#x5B8C;&#x7562;&#x4E4B;&#x5F8C;&#x5728;&#x884C;&#x672B;&#x52A0;&#x4E0A;&#x4E00;&#x500B;&#x63DB;&#x884C;&#x7B26;&#x3002;</p>
<p>package main&#x662F;&#x4E00;&#x500B;&#x6BD4;&#x8F03;&#x7279;&#x6B8A;&#x7684;package&#x3002;&#x9019;&#x500B;package&#x91CC;&#x6703;&#x5B9A;&#x7FA9;&#x4E00;&#x500B;&#x7368;&#x7ACB;&#x7684;&#x7A0B;&#x5E8F;&#xFF0C;&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#x662F;&#x53EF;&#x4EE5;&#x904B;&#x884C;&#x7684;&#xFF0C;&#x800C;&#x4E0D;&#x662F;&#x50CF;&#x5176;&#x5B83;package&#x4E00;&#x6A23;&#x5C0D;&#x61C9;&#x4E00;&#x500B;library&#x3002;&#x5728;main&#x9019;&#x500B;package&#x91CC;&#xFF0C;main&#x51FD;&#x6578;&#x4E5F;&#x662F;&#x4E00;&#x500B;&#x7279;&#x6B8A;&#x7684;&#x51FD;&#x6578;&#xFF0C;&#x9019;&#x662F;&#x6211;&#x5011;&#x6574;&#x500B;&#x7A0B;&#x5E8F;&#x7684;&#x5165;&#x53E3;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;&#x5176;&#x5BE6;C&#x7E6B;&#x8A9E;&#x8A00;&#x5DEE;&#x4E0D;&#x591A;&#x90FD;&#x662F;&#x9019;&#x6A23;&#xFF09;&#x3002;main&#x51FD;&#x6578;&#x6240;&#x505A;&#x7684;&#x4E8B;&#x60C5;&#x5C31;&#x662F;&#x6211;&#x5011;&#x7A0B;&#x5E8F;&#x505A;&#x7684;&#x4E8B;&#x60C5;&#x3002;&#x7576;&#x7136;&#x4E86;&#xFF0C;main&#x51FD;&#x6578;&#x4E00;&#x822C;&#x662F;&#x901A;&#x904E;&#x662F;&#x8ABF;&#x7528;&#x5176;&#x5B83;packge&#x91CC;&#x7684;&#x51FD;&#x6578;&#x4F86;&#x5B8C;&#x6210;&#x81EA;&#x5DF1;&#x7684;&#x5DE5;&#x4F5C;&#xFF0C;&#x6BD4;&#x5982;fmt.Println&#x3002;</p>
<p>&#x6211;&#x5011;&#x5FC5;&#x9B1A;&#x544A;&#x8A34;&#x7DE8;&#x8B6F;&#x5668;&#x5982;&#x4F55;&#x8981;&#x6B63;&#x78BA;&#x5730;&#x57F7;&#x884C;&#x9019;&#x500B;&#x6E90;&#x6587;&#x4EF6;&#xFF0C;&#x9700;&#x8981;&#x7528;&#x5230;&#x54EA;&#x4E9B;package&#xFF0C;&#x9019;&#x5C31;&#x662F;import&#x5728;&#x9019;&#x500B;&#x6587;&#x4EF6;&#x91CC;&#x626E;&#x6F14;&#x7684;&#x89D2;&#x8272;&#x3002;&#x4E0A;&#x8FF0;&#x7684;hello world&#x4F8B;&#x5B50;&#x96BB;&#x7528;&#x5230;&#x4E86;&#x4E00;&#x500B;&#x5176;&#x5B83;&#x7684;package&#xFF0C;&#x5C31;&#x662F;fmt&#x3002;&#x4E00;&#x822C;&#x60C5;&#x6CC1;&#x4E0B;&#xFF0C;&#x9700;&#x8981;import&#x7684;package&#x53EF;&#x80FD;&#x4E0D;&#x96BB;&#x4E00;&#x500B;&#x3002;</p>
<p>&#x9019;&#x4E5F;&#x6B63;&#x662F;&#x56E0;&#x7232;go&#x8A9E;&#x8A00;&#x5FC5;&#x9B1A;&#x5F15;&#x5165;&#x6240;&#x6709;&#x8981;&#x7528;&#x5230;&#x7684;package&#x7684;&#x539F;&#x5247;&#xFF0C;&#x5047;&#x5982;&#x4F60;&#x6C92;&#x6709;&#x5728;&#x4EE3;&#x78BC;&#x91CC;import&#x9700;&#x8981;&#x7528;&#x5230;&#x7684;package&#xFF0C;&#x7A0B;&#x5E8F;&#x5C07;&#x7121;&#x6CD5;&#x7DE8;&#x8B6F;&#x901A;&#x904E;&#xFF0C;&#x540C;&#x6642;&#x7576;&#x4F60;import&#x4E86;&#x6C92;&#x6709;&#x7528;&#x5230;&#x7684;package&#xFF0C;&#x4E5F;&#x6703;&#x7121;&#x6CD5;&#x7DE8;&#x8B6F;&#x901A;&#x904E;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;Go&#x8A9E;&#x8A00;&#x7DE8;&#x8B6F;&#x904E;&#x7A0B;&#x6C92;&#x6709;&#x8B66;&#x544A;&#x4FE1;&#x606F;&#xFF0C;&#x722D;&#x8B70;&#x7279;&#x6027;&#x4E4B;&#x4E00;&#xFF09;&#x3002;</p>
<p>import&#x8072;&#x660E;&#x5FC5;&#x9B1A;&#x8DDF;&#x5728;&#x6587;&#x4EF6;&#x7684;package&#x8072;&#x660E;&#x4E4B;&#x5F8C;&#x3002;&#x5728;import&#x8A9E;&#x53E5;&#x4E4B;&#x5F8C;&#xFF0C;&#x5247;&#x662F;&#x5404;&#x7A2E;&#x65B9;&#x6CD5;&#x3001;&#x8B8A;&#x91CF;&#x3001;&#x5E38;&#x91CF;&#x3001;&#x985E;&#x578B;&#x7684;&#x8072;&#x660E;&#x8A9E;&#x53E5;(&#x5206;&#x522B;&#x7528;&#x95DC;&#x9375;&#x5B57;func, var, const, type&#x4F86;&#x9032;&#x884C;&#x5B9A;&#x7FA9;)&#x3002;&#x9019;&#x4E9B;&#x5167;&#x5BB9;&#x7684;&#x8072;&#x660E;&#x9806;&#x5E8F;&#x4F75;&#x6C92;&#x6709;&#x4EC0;&#x9EBD;&#x898F;&#x5B9A;&#xFF0C;&#x53EF;&#x4EE5;&#x96A8;&#x4FBF;&#x8ABF;&#x6574;&#x9806;&#x5E8F;(&#x8B6F;&#x8A3B;&#xFF1A;&#x6700;&#x597D;&#x9084;&#x662F;&#x5B9A;&#x4E00;&#x4E0B;&#x898F;&#x8303;)&#x3002;&#x6211;&#x5011;&#x4F8B;&#x5B50;&#x91CC;&#x7684;&#x7A0B;&#x5E8F;&#x6BD4;&#x8F03;&#x7C21;&#x55AE;&#xFF0C;&#x96BB;&#x5305;&#x542B;&#x4E86;&#x4E00;&#x500B;&#x51FD;&#x6578;&#x3002;&#x4F75;&#x4E14;&#x5728;&#x8A72;&#x51FD;&#x6578;&#x91CC;&#x4E5F;&#x96BB;&#x8ABF;&#x7528;&#x4E86;&#x4E00;&#x500B;&#x5176;&#x5B83;&#x51FD;&#x6578;&#x3002;&#x7232;&#x4E86;&#x7BC0;&#x7701;&#x7A7A;&#x9593;&#xFF0C;&#x6709;&#x4E9B;&#x6642;&#x5019;&#x7684;&#x4F8B;&#x5B50;&#x6211;&#x5011;&#x6703;&#x7701;&#x7565;package&#x548C;import&#x8072;&#x660E;&#xFF0C;&#x4F46;&#x662F;&#x8B80;&#x8005;&#x9700;&#x8981;&#x8A3B;&#x610F;&#x9019;&#x4E9B;&#x8072;&#x660E;&#x662F;&#x4E00;&#x5B9A;&#x8981;&#x5305;&#x542B;&#x5728;&#x6E90;&#x6587;&#x4EF6;&#x91CC;&#x7684;&#x3002;</p>
<p>&#x4E00;&#x500B;&#x51FD;&#x6578;&#x7684;&#x8072;&#x660E;&#x5305;&#x542B;func&#x9019;&#x500B;&#x95DC;&#x9375;&#x5B57;&#x3001;&#x51FD;&#x6578;&#x540D;&#x3001;&#x53C3;&#x6578;&#x5217;&#x8868;&#x3001;&#x8FD4;&#x8FF4;&#x7D50;&#x679C;&#x5217;&#x8868;&#xFF08;&#x6211;&#x5011;&#x4F8B;&#x5B50;&#x91CC;&#x7684;main&#x51FD;&#x6578;&#x53C3;&#x6578;&#x5217;&#x8868;&#x548C;&#x8FD4;&#x8FF4;&#x503C;&#x90FD;&#x662F;&#x7A7A;&#x7684;&#xFF09;&#x4EE5;&#x53CA;&#x5305;&#x542B;&#x5728;&#x5927;&#x62EC;&#x865F;&#x91CC;&#x7684;&#x51FD;&#x6578;&#x9AD4;&#x3002;&#x95DC;&#x65BC;&#x51FD;&#x6578;&#x7684;&#x66F4;&#x8A73;&#x7D30;&#x63CF;&#x8FF0;&#x5728;&#x7B2C;&#x4E94;&#x7AE0;&#x3002;</p>
<p>Go&#x8A9E;&#x8A00;&#x662F;&#x4E00;&#x9580;&#x4E0D;&#x9700;&#x8981;&#x5206;&#x865F;&#x4F5C;&#x7232;&#x8A9E;&#x53E5;&#x6216;&#x8005;&#x8072;&#x660E;&#x7D50;&#x675F;&#x7684;&#x8A9E;&#x8A00;&#xFF0C;&#x9664;&#x975E;&#x8981;&#x5728;&#x4E00;&#x884C;&#x4E2D;&#x5C07;&#x591A;&#x500B;&#x8A9E;&#x53E5;&#x3001;&#x8072;&#x660E;&#x9694;&#x958B;&#x3002;&#x7136;&#x800C;&#x5728;&#x7DE8;&#x8B6F;&#x6642;&#xFF0C;&#x7DE8;&#x8B6F;&#x5668;&#x6703;&#x4E3B;&#x52D5;&#x5728;&#x4E00;&#x4E9B;&#x7279;&#x5B9A;&#x7684;&#x7B26;&#x865F;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;&#x6BD4;&#x5982;&#x884C;&#x672B;&#x662F;&#xFF0C;&#x4E00;&#x500B;&#x6A19;&#x8B58;&#x7B26;&#x3001;&#x4E00;&#x500B;&#x6574;&#x6578;&#x3001;&#x6D6E;&#x9EDE;&#x6578;&#x3001;&#x865B;&#x6578;&#x3001;&#x5B57;&#x7B26;&#x6216;&#x5B57;&#x7B26;&#x4E32;&#x6587;&#x5B57;&#x3001;&#x95DC;&#x9375;&#x5B57;break&#x3001;continue&#x3001;fallthrough&#x6216;return&#x4E2D;&#x7684;&#x4E00;&#x500B;&#x3001;&#x904B;&#x7B97;&#x7B26;&#x548C;&#x5206;&#x9694;&#x7B26;++&#x3001;--&#x3001;)&#x3001;]&#x6216;}&#x4E2D;&#x7684;&#x4E00;&#x500B;&#xFF09; &#x5F8C;&#x6DFB;&#x52A0;&#x5206;&#x865F;&#xFF0C;&#x6240;&#x4EE5;&#x5728;&#x54EA;&#x91CC;&#x52A0;&#x5206;&#x865F;&#x5408;&#x9069;&#x662F;&#x53D6;&#x6C7A;&#x65BC;Go&#x8A9E;&#x8A00;&#x4EE3;&#x78BC;&#x7684;&#x3002;&#x4F8B;&#x5982;&#xFF1A;&#x5728;Go&#x8A9E;&#x8A00;&#x4E2D;&#x7684;&#x51FD;&#x6578;&#x8072;&#x660E;&#x548C; { &#x5927;&#x62EC;&#x865F;&#x5FC5;&#x9B1A;&#x5728;&#x540C;&#x4E00;&#x884C;&#xFF0C;&#x800C;&#x5728;x + y&#x9019;&#x6A23;&#x7684;&#x8868;&#x9054;&#x5F0F;&#x4E2D;&#xFF0C;&#x5728;+&#x865F;&#x5F8C;&#x63DB;&#x884C;&#x53EF;&#x4EE5;&#xFF0C;&#x4F46;&#x662F;&#x5728;+&#x865F;&#x524D;&#x63DB;&#x884C;&#x5247;&#x6703;&#x6709;&#x554F;&#x984C;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;&#x4EE5;+&#x7D50;&#x5C3E;&#x7684;&#x8A71;&#x4E0D;&#x6703;&#x88AB;&#x63D2;&#x5165;&#x5206;&#x865F;&#x5206;&#x9694;&#x7B26;&#xFF0C;&#x4F46;&#x662F;&#x4EE5;x&#x7D50;&#x5C3E;&#x7684;&#x8A71;&#x5247;&#x6703;&#x88AB;&#x5206;&#x865F;&#x5206;&#x9694;&#x7B26;&#xFF0C;&#x5F9E;&#x800C;&#x5C0E;&#x81F4;&#x7DE8;&#x8B6F;&#x932F;&#x8AA4;&#xFF09;&#x3002;</p>
<p>Go&#x8A9E;&#x8A00;&#x5728;&#x4EE3;&#x78BC;&#x683C;&#x5F0F;&#x4E0A;&#x91C7;&#x53D6;&#x4E86;&#x5F88;&#x5F37;&#x786C;&#x7684;&#x614B;&#x5EA6;&#x3002;gofmt&#x5DE5;&#x5177;&#x6703;&#x5C07;&#x4F60;&#x7684;&#x4EE3;&#x78BC;&#x683C;&#x5F0F;&#x5316;&#x7232;&#x6A19;&#x6E96;&#x683C;&#x5F0F;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;&#x9019;&#x500B;&#x683C;&#x5F0F;&#x5316;&#x5DE5;&#x5177;&#x6C92;&#x6709;&#x4EFB;&#x4F55;&#x53EF;&#x4EE5;&#x8ABF;&#x6574;&#x4EE3;&#x78BC;&#x683C;&#x5F0F;&#x7684;&#x53C3;&#x6578;&#xFF0C;Go&#x8A9E;&#x8A00;&#x5C31;&#x662F;&#x9019;&#x9EBD;&#x4EFB;&#x6027;&#xFF09;&#xFF0C;&#x4F75;&#x4E14;go&#x5DE5;&#x5177;&#x4E2D;&#x7684;fmt&#x5B50;&#x547D;&#x4EE4;&#x6703;&#x81EA;&#x52D5;&#x5C0D;&#x7279;&#x5B9A;package&#x4E0B;&#x7684;&#x6240;&#x6709;.go&#x6E90;&#x6587;&#x4EF6;&#x61C9;&#x7528;gofmt&#x5DE5;&#x5177;&#x683C;&#x5F0F;&#x5316;&#x3002;&#x5982;&#x679C;&#x4E0D;&#x6307;&#x5B9A;package&#xFF0C;&#x5247;&#x9ED8;&#x8A8D;&#x5C0D;&#x7576;&#x524D;&#x76EE;&#x9332;&#x4E0B;&#x7684;&#x6E90;&#x6587;&#x4EF6;&#x9032;&#x884C;&#x683C;&#x5F0F;&#x5316;&#x3002;&#x672C;&#x66F8;&#x4E2D;&#x7684;&#x6240;&#x6709;&#x4EE3;&#x78BC;&#x5DF2;&#x7D93;&#x662F;&#x57F7;&#x884C;&#x904E;gofmt&#x5F8C;&#x7684;&#x6A19;&#x6E96;&#x683C;&#x5F0F;&#x4EE3;&#x78BC;&#x3002;&#x4F60;&#x61C9;&#x8A72;&#x5728;&#x81EA;&#x5DF1;&#x7684;&#x4EE3;&#x78BC;&#x4E0A;&#x4E5F;&#x57F7;&#x884C;&#x9019;&#x7A2E;&#x683C;&#x5F0F;&#x5316;&#x3002;&#x898F;&#x5B9A;&#x4E00;&#x7A2E;&#x6A19;&#x6E96;&#x7684;&#x4EE3;&#x78BC;&#x683C;&#x5F0F;&#x53EF;&#x4EE5;&#x898F;&#x907F;&#x6389;&#x7121;&#x76E1;&#x7684;&#x7121;&#x610F;&#x7FA9;&#x7684;&#x6495;&#x903C;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;&#x4E5F;&#x5C0E;&#x81F4;&#x4E86;Go&#x8A9E;&#x8A00;&#x7684;TIOBE&#x6392;&#x540D;&#x8F03;&#x4F4E;&#xFF0C;&#x56E0;&#x7232;&#x7F3A;&#x5C11;&#x6495;&#x903C;&#x7684;&#x8A71;&#x984C;&#xFF09;&#x3002;&#x7576;&#x7136;&#x4E86;&#xFF0C;&#x9019;&#x53EF;&#x4EE5;&#x907F;&#x514D;&#x7531;&#x65BC;&#x4EE3;&#x78BC;&#x683C;&#x5F0F;&#x5C0E;&#x81F4;&#x7684;&#x908F;&#x8F2F;&#x4E0A;&#x7684;&#x6B67;&#x7FA9;&#x3002;</p>
<p>&#x5F88;&#x591A;&#x6587;&#x672C;&#x7DE8;&#x8F2F;&#x5668;&#x90FD;&#x53EF;&#x4EE5;&#x8A2D;&#x7F6E;&#x7232;&#x4FDD;&#x5B58;&#x6587;&#x4EF6;&#x6642;&#x81EA;&#x52D5;&#x57F7;&#x884C;gofmt&#xFF0C;&#x6240;&#x4EE5;&#x4F60;&#x7684;&#x6E90;&#x4EE3;&#x78BC;&#x61C9;&#x8A72;&#x7E3D;&#x662F;&#x6703;&#x88AB;&#x683C;&#x5F0F;&#x5316;&#x3002;&#x9019;&#x91CC;&#x9084;&#x6709;&#x4E00;&#x500B;&#x76F8;&#x95DC;&#x7684;&#x5DE5;&#x5177;&#xFF0C;goimports&#xFF0C;&#x6703;&#x81EA;&#x52D5;&#x5730;&#x6DFB;&#x52A0;&#x4F60;&#x4EE3;&#x78BC;&#x91CC;&#x9700;&#x8981;&#x7528;&#x5230;&#x7684;import&#x8072;&#x660E;&#x4EE5;&#x53CA;&#x9700;&#x8981;&#x79FB;&#x9664;&#x7684;import&#x8072;&#x660E;&#x3002;&#x9019;&#x500B;&#x5DE5;&#x5177;&#x4F75;&#x6C92;&#x6709;&#x5305;&#x542B;&#x5728;&#x6A19;&#x6E96;&#x7684;&#x5206;&#x767C;&#x5305;&#x4E2D;&#xFF0C;&#x7136;&#x800C;&#x4F60;&#x53EF;&#x4EE5;&#x81EA;&#x884C;&#x5B89;&#x88DD;&#xFF1A;</p>
<pre><code>$ go get golang.org/x/tools/cmd/goimports
</code></pre><p>&#x5C0D;&#x65BC;&#x5927;&#x591A;&#x6578;&#x7528;&#x6236;&#x4F86;&#x8AAC;&#xFF0C;&#x4E0B;&#x8F09;&#x3001;build package&#x3001;&#x904B;&#x884C;&#x6E2C;&#x8A66;&#x7528;&#x4F8B;&#x3001;&#x986F;&#x793A;go&#x7684;&#x6587;&#x6A94;&#x7B49;&#x7B49;&#x5E38;&#x7528;&#x529F;&#x80FD;&#x90FD;&#x662F;&#x53EF;&#x4EE5;&#x7528;go&#x7684;&#x5DE5;&#x5177;&#x4F86;&#x5BE6;&#x73FE;&#x7684;&#x3002;&#x9019;&#x4E9B;&#x5DE5;&#x5177;&#x7684;&#x8A73;&#x7D30;&#x4ECB;&#x7D39;&#x6211;&#x5011;&#x6703;&#x5728;10.7&#x7BC0;&#x4E2D;&#x63D0;&#x5230;&#x3002;</p>
</code></pre><p>&#x5C0D;&#x65BC;&#x5927;&#x591A;&#x6578;&#x7528;&#x6236;&#x4F86;&#x8AAC;&#xFF0C;&#x4E0B;&#x8F09;&#x3001;build package&#x3001;&#x904B;&#x884C;&#x6E2C;&#x8A66;&#x7528;&#x4F8B;&#x3001;&#x986F;&#x793A;Go&#x8A9E;&#x8A00;&#x7684;&#x6587;&#x6A94;&#x7B49;&#x7B49;&#x5E38;&#x7528;&#x529F;&#x80FD;&#x90FD;&#x662F;&#x53EF;&#x4EE5;&#x7528;go&#x7684;&#x5DE5;&#x5177;&#x4F86;&#x5BE6;&#x73FE;&#x7684;&#x3002;&#x9019;&#x4E9B;&#x5DE5;&#x5177;&#x7684;&#x8A73;&#x7D30;&#x4ECB;&#x7D39;&#x6211;&#x5011;&#x6703;&#x5728;10.7&#x7BC0;&#x4E2D;&#x63D0;&#x5230;&#x3002;</p>
</section>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="1.2" data-chapter-title="命令行參數" data-filepath="ch1/ch1-02.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="1.2" data-chapter-title="命令行參數" data-filepath="ch1/ch1-02.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>
@@ -2025,49 +2025,51 @@
<h2 id="12-&#x547D;&#x4EE4;&#x884C;&#x53C3;&#x6578;">1.2. &#x547D;&#x4EE4;&#x884C;&#x53C3;&#x6578;</h2>
<p>&#x5927;&#x591A;&#x6578;&#x7684;&#x7A0B;&#x5E8F;&#x90FD;&#x662F;&#x8655;&#x7406;&#x8F38;&#x5165;&#xFF0C;&#x7523;&#x751F;&#x8F38;&#x9F63;&#xFF1B;&#x9019;&#x4E5F;&#x6B63;&#x662F;&#x201C;&#x8A08;&#x7B97;&#x201D;&#x7684;&#x5B9A;&#x7FA9;&#x3002;&#x4F46;&#x662F;&#x4E00;&#x500B;&#x7A0B;&#x5E8F;&#x8981;&#x5982;&#x4F55;&#x7A6B;&#x53D6;&#x8F38;&#x5165;&#x5462;&#xFF1F;&#x4E00;&#x4E9B;&#x7A0B;&#x5E8F;&#x6703;&#x751F;&#x6210;&#x81EA;&#x5DF1;&#x7684;&#x6578;&#x64DA;&#xFF0C;&#x4F46;&#x901A;&#x5E38;&#x60C5;&#x6CC1;&#x4E0B;&#xFF0C;&#x8F38;&#x5165;&#x90FD;&#x4F86;&#x81EA;&#x65BC;&#x7A0B;&#x5E8F;&#x5916;&#x90E8;&#xFF1A;&#x6BD4;&#x5982;&#x6587;&#x4EF6;&#x3001;&#x7DB2;&#x7D61;&#x9023;&#x63A5;&#x3001;&#x5176;&#x5B83;&#x7A0B;&#x5E8F;&#x7684;&#x8F38;&#x9F63;&#x3001;&#x7528;&#x6236;&#x7684;&#x9375;&#x76E4;&#x3001;&#x547D;&#x4EE4;&#x884C;&#x7684;&#x53C3;&#x6578;&#x6216;&#x5176;&#x5B83;&#x985E;&#x4F3C;&#x8F38;&#x5165;&#x6E90;&#x3002;&#x4E0B;&#x9762;&#x5E7E;&#x500B;&#x4F8B;&#x5B50;&#x6703;&#x8A0E;&#x8AD6;&#x5176;&#x4E2D;&#x7684;&#x4E00;&#x4E9B;&#x8F38;&#x5165;&#x985E;&#x578B;&#xFF0C;&#x9996;&#x5148;&#x662F;&#x547D;&#x4EE4;&#x884C;&#x53C3;&#x6578;&#x3002;</p>
<p>os&#x9019;&#x500B;package&#x63D0;&#x4F9B;&#x4E86;&#x64CD;&#x4F5C;&#x7E6B;&#x7D71;&#x7121;&#x95DC;(&#x8DE8;&#x5E73;&#x98B1;)&#x7684;&#xFF0C;&#x8207;&#x7E6B;&#x7D71;&#x4EA4;&#x4E92;&#x7684;&#x4E00;&#x4E9B;&#x51FD;&#x6578;&#x548C;&#x76F8;&#x95DC;&#x7684;&#x8B8A;&#x91CF;&#xFF0C;&#x904B;&#x884C;&#x6642;&#x7A0B;&#x5E8F;&#x7684;&#x547D;&#x4EE4;&#x884C;&#x53C3;&#x6578;&#x53EF;&#x4EE5;&#x7528;&#x4E00;&#x500B;&#x53EB;os&#x5305;&#x4E2D;&#x7684;Args&#x9019;&#x500B;&#x8B8A;&#x91CF;&#x4F86;&#x7A6B;&#x53D6;&#xFF1B;&#x5728;&#x5916;&#x90E8;&#x9700;&#x8981;&#x4F7F;&#x7528;&#x8A72;&#x8B8A;&#x91CF;&#x6642;&#xFF0C;&#x9700;&#x8981;&#x7528;os.Args&#x4F86;&#x8A2A;&#x554F;&#x3002;</p>
<p>os.Args&#x9019;&#x500B;&#x8B8A;&#x91CF;&#x662F;&#x4E00;&#x500B;&#x5B57;&#x7B26;&#x4E32;(string)&#x7684;slice&#xFF0C;slice&#x5728;go&#x8A9E;&#x8A00;&#x91CC;&#x662F;&#x4E00;&#x500B;&#x57FA;&#x790E;&#x7684;&#x6578;&#x64DA;&#x7D50;&#x69CB;&#xFF0C;&#x4E4B;&#x5F8C;&#x6211;&#x5011;&#x5F88;&#x5FEB;&#x6703;&#x63D0;&#x5230;&#x3002;&#x73FE;&#x5728;&#x53EF;&#x4EE5;&#x5148;&#x628A;slice&#x7576;&#x4E00;&#x500B;&#x7C21;&#x55AE;&#x7684;&#x5143;&#x7D20;&#x5E8F;&#x5217;&#xFF0C;&#x53EF;&#x4EE5;&#x7528;&#x985E;&#x4F3C;s[i]&#x7684;&#x4E0B;&#x6A19;&#x8A2A;&#x554F;&#x5F62;&#x5F0F;&#x7A6B;&#x53D6;&#x5176;&#x5167;&#x5BB9;&#xFF0C;&#x4F75;&#x4E14;&#x53EF;&#x4EE5;&#x7528;&#x5F62;&#x5982;s[m:n]&#x7684;&#x5F62;&#x5F0F;&#x4F86;&#x7A6B;&#x53D6;&#x5230;&#x4E00;&#x500B;slice&#x7684;&#x5B50;&#x96C6;(&#x8B6F;&#x8A3B;&#xFF1A;&#x548C;python&#x91CC;&#x7684;&#x5DEE;&#x4E0D;&#x591A;)&#x3002;&#x5176;&#x9577;&#x5EA6;&#x53EF;&#x4EE5;&#x7528;len(s)&#x51FD;&#x6578;&#x4F86;&#x7A6B;&#x53D6;&#x3002;&#x548C;&#x5176;&#x5B83;&#x5927;&#x591A;&#x6578;&#x8A9E;&#x8A00;&#x5DEE;&#x4E0D;&#x591A;&#xFF0C;go&#x8A9E;&#x8A00;&#x91CC;&#x7684;&#x9019;&#x7A2E;&#x7D22;&#x5F15;&#x5F62;&#x5F0F;&#x4E5F;&#x91C7;&#x7528;&#x4E86;&#x958B;&#x5340;&#x9593;&#xFF0C;&#x5305;&#x62EC;m~n&#x7684;&#x7B2C;&#x4E00;&#x500B;&#x5143;&#x7D20;&#xFF0C;&#x4F46;&#x4E0D;&#x5305;&#x62EC;&#x6700;&#x5F8C;&#x90A3;&#x500B;&#x5143;&#x7D20;(&#x8B6F;&#x8A3B;&#xFF1A;&#x6BD4;&#x5982;a = [1, 2, 3, 4, 5], a[0: 3] =[1, 2, 3]&#xFF0C;&#x4E0D;&#x5305;&#x542B;&#x6700;&#x5F8C;&#x4E00;&#x500B;&#x5143;&#x7D20;)&#x3002;&#x9019;&#x6A23;&#x53EF;&#x4EE5;&#x7C21;&#x5316;&#x6211;&#x5011;&#x7684;&#x908F;&#x8F2F;&#x3002;&#x6BD4;&#x5982;s[m:n]&#x9019;&#x500B;slice&#xFF0C;0 &#x2264; m &#x2264; n &#x2264; len(s)&#xFF0C;&#x5305;&#x542B;n-m&#x500B;&#x5143;&#x7D20;&#x3002;</p>
<p>os.Args&#x7684;&#x7B2C;&#x4E00;&#x500B;&#x5143;&#x7D20;&#xFF0C;&#x537D;os.Args[0]&#x662F;&#x547D;&#x4EE4;&#x884C;&#x57F7;&#x884C;&#x6642;&#x7684;&#x547D;&#x4EE4;&#x672C;&#x8EAB;&#xFF1B;&#x5176;&#x5B83;&#x7684;&#x5143;&#x7D20;&#x5247;&#x662F;&#x57F7;&#x884C;&#x8A72;&#x547D;&#x4EE4;&#x6642;&#x50B3;&#x7D66;&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#x7684;&#x53C3;&#x6578;&#x3002;&#x524D;&#x9762;&#x63D0;&#x5230;&#x7684;&#x5207;&#x7247;&#x8868;&#x9054;&#x5F0F;&#xFF0C;s[m:n]&#x6703;&#x8FD4;&#x8FF4;&#x7B2C;m&#x5230;&#x7B2C;n-1&#x500B;&#x5143;&#x7D20;&#xFF0C;&#x6240;&#x4EE5;&#x4E0B;&#x4E00;&#x500B;&#x4F8B;&#x5B50;&#x91CC;&#x9700;&#x8981;&#x7528;&#x5230;&#x7684;os.Args[1:len(os.Args)]&#x537D;&#x662F;&#x9664;&#x4E86;&#x547D;&#x4EE4;&#x672C;&#x8EAB;&#x5916;&#x7684;&#x6240;&#x6709;&#x50B3;&#x5165;&#x53C3;&#x6578;&#x3002;&#x5982;&#x679C;&#x6211;&#x5011;&#x7701;&#x7565;s[m:n]&#x91CC;&#x7684;m&#x548C;n&#xFF0C;&#x90A3;&#x9EBD;&#x9ED8;&#x8A8D;&#x9019;&#x500B;&#x8868;&#x9054;&#x5F0F;&#x6703;&#x586B;&#x5165;0:len(s)&#xFF0C;&#x6240;&#x4EE5;&#x9019;&#x91CC;&#x6211;&#x5011;&#x9084;&#x53EF;&#x4EE5;&#x7701;&#x7565;&#x6389;n&#xFF0C;&#x5BEB;os.Args[1:]&#x3002;</p>
<p>&#x4E0B;&#x9762;&#x662F;&#x4E00;&#x500B;Unix&#x91CC;echo&#x547D;&#x4EE4;&#x7684;&#x5BE6;&#x73FE;&#xFF0C;&#x9019;&#x500B;&#x547D;&#x4EE4;&#x6703;&#x5728;&#x55AE;&#x884C;&#x5167;&#x6253;&#x5370;&#x9F63;&#x547D;&#x4EE4;&#x884C;&#x53C3;&#x6578;&#x3002;&#x9019;&#x500B;&#x7A0B;&#x5E8F;import&#x4E86;&#x5169;&#x500B;package&#xFF0C;&#x4F75;&#x4E14;&#x7528;&#x62EC;&#x865F;&#x628A;&#x9019;&#x5169;&#x500B;package&#x5305;&#x4E86;&#x8D77;&#x4F86;&#xFF0C;&#x9019;&#x662F;&#x5206;&#x522B;import&#x5404;&#x500B;package&#x8072;&#x660E;&#x7684;&#x7C21;&#x5316;&#x5BEB;&#x6CD5;&#x3002;&#x7576;&#x7136;&#x4E86;&#x4F60;&#x5206;&#x958B;&#x4F86;&#x5BEB;import&#x4E5F;&#x6C92;&#x6709;&#x4EC0;&#x9EBD;&#x554F;&#x984C;&#xFF0C;&#x96BB;&#x662F;&#x4E00;&#x822C;&#x7232;&#x4E86;&#x65B9;&#x4FBF;&#x6211;&#x5011;&#x90FD;&#x6703;&#x50CF;&#x4E0B;&#x9762;&#x9019;&#x6A23;&#x4F86;&#x5C0E;&#x5165;&#x591A;&#x500B;package&#x3002;&#x6211;&#x5011;&#x81EA;&#x5DF1;&#x5BEB;&#x7684;&#x5C0E;&#x5165;&#x9806;&#x5E8F;&#x4F75;&#x4E0D;&#x91CD;&#x8981;&#xFF0C;&#x56E0;&#x7232;gofmt&#x5DE5;&#x5177;&#x6703;&#x5E6B;&#x52A9;&#x6211;&#x5011;&#x6309;&#x7167;&#x5B57;&#x6BCD;&#x9806;&#x5E8F;&#x4F86;&#x6392;&#x5217;&#x597D;&#x9019;&#x4E9B;&#x5C0E;&#x5165;&#x5305;&#x540D;&#x3002;(&#x672C;&#x66F8;&#x4E2D;&#x5982;&#x679C;&#x4E00;&#x500B;&#x4F8B;&#x5B50;&#x6709;&#x591A;&#x7A2E;&#x7248;&#x672C;&#x6642;&#xFF0C;&#x6211;&#x5011;&#x6703;&#x7528;&#x7DE8;&#x865F;&#x6A19;&#x8A18;&#x9F63;&#x4F86;)</p>
<p>os&#x9019;&#x500B;package&#x63D0;&#x4F9B;&#x4E86;&#x64CD;&#x4F5C;&#x7E6B;&#x7D71;&#x7121;&#x95DC;&#xFF08;&#x8DE8;&#x5E73;&#x98B1;&#xFF09;&#x7684;&#xFF0C;&#x8207;&#x7E6B;&#x7D71;&#x4EA4;&#x4E92;&#x7684;&#x4E00;&#x4E9B;&#x51FD;&#x6578;&#x548C;&#x76F8;&#x95DC;&#x7684;&#x8B8A;&#x91CF;&#xFF0C;&#x904B;&#x884C;&#x6642;&#x7A0B;&#x5E8F;&#x7684;&#x547D;&#x4EE4;&#x884C;&#x53C3;&#x6578;&#x53EF;&#x4EE5;&#x901A;&#x904E;os&#x5305;&#x4E2D;&#x4E00;&#x500B;&#x53EB;Args&#x7684;&#x9019;&#x500B;&#x8B8A;&#x91CF;&#x4F86;&#x7A6B;&#x53D6;&#xFF1B;&#x7576;&#x5728;os&#x5305;&#x5916;&#x90E8;&#x4F7F;&#x7528;&#x8A72;&#x8B8A;&#x91CF;&#x6642;&#xFF0C;&#x9700;&#x8981;&#x7528;os.Args&#x4F86;&#x8A2A;&#x554F;&#x3002;</p>
<p>os.Args&#x9019;&#x500B;&#x8B8A;&#x91CF;&#x662F;&#x4E00;&#x500B;&#x5B57;&#x7B26;&#x4E32;&#xFF08;string&#xFF09;&#x7684;slice&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;slice&#x548C;Python&#x8A9E;&#x8A00;&#x4E2D;&#x7684;&#x5207;&#x7247;&#x985E;&#x4F3C;&#xFF0C;&#x662F;&#x4E00;&#x500B;&#x7C21;&#x7248;&#x7684;&#x52D5;&#x614B;&#x6578;&#x7D44;&#xFF09;&#xFF0C;slice&#x5728;Go&#x8A9E;&#x8A00;&#x91CC;&#x662F;&#x4E00;&#x500B;&#x57FA;&#x790E;&#x7684;&#x6578;&#x64DA;&#x7D50;&#x69CB;&#xFF0C;&#x4E4B;&#x5F8C;&#x6211;&#x5011;&#x5F88;&#x5FEB;&#x6703;&#x63D0;&#x5230;&#x3002;&#x73FE;&#x5728;&#x53EF;&#x4EE5;&#x5148;&#x628A;slice&#x7576;&#x4E00;&#x500B;&#x7C21;&#x55AE;&#x7684;&#x5143;&#x7D20;&#x5E8F;&#x5217;&#xFF0C;&#x53EF;&#x4EE5;&#x7528;&#x985E;&#x4F3C;s[i]&#x7684;&#x4E0B;&#x6A19;&#x8A2A;&#x554F;&#x5F62;&#x5F0F;&#x7A6B;&#x53D6;&#x5176;&#x5167;&#x5BB9;&#xFF0C;&#x4F75;&#x4E14;&#x53EF;&#x4EE5;&#x7528;&#x5F62;&#x5982;s[m:n]&#x7684;&#x5F62;&#x5F0F;&#x4F86;&#x7A6B;&#x53D6;&#x5230;&#x4E00;&#x500B;slice&#x7684;&#x5B50;&#x96C6;(&#x8B6F;&#x8A3B;&#xFF1A;&#x548C;python&#x91CC;&#x7684;&#x8A9E;&#x6CD5;&#x5DEE;&#x4E0D;&#x591A;)&#x3002;&#x5176;&#x9577;&#x5EA6;&#x53EF;&#x4EE5;&#x7528;len(s)&#x51FD;&#x6578;&#x4F86;&#x7A6B;&#x53D6;&#x3002;&#x548C;&#x5176;&#x5B83;&#x5927;&#x591A;&#x6578;&#x7DE8;&#x7A0B;&#x8A9E;&#x8A00;&#x985E;&#x4F3C;&#xFF0C;Go&#x8A9E;&#x8A00;&#x91CC;&#x7684;&#x9019;&#x7A2E;&#x7D22;&#x5F15;&#x5F62;&#x5F0F;&#x4E5F;&#x91C7;&#x7528;&#x4E86;&#x5DE6;&#x9589;&#x53F3;&#x958B;&#x5340;&#x9593;&#xFF0C;&#x5305;&#x62EC;m~n&#x7684;&#x7B2C;&#x4E00;&#x500B;&#x5143;&#x7D20;&#xFF0C;&#x4F46;&#x4E0D;&#x5305;&#x62EC;&#x6700;&#x5F8C;&#x90A3;&#x500B;&#x5143;&#x7D20;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;&#x6BD4;&#x5982;a = [1, 2, 3, 4, 5], a[0:3] = [1, 2, 3]&#xFF0C;&#x4E0D;&#x5305;&#x542B;&#x6700;&#x5F8C;&#x4E00;&#x500B;&#x5143;&#x7D20;&#xFF09;&#x3002;&#x9019;&#x6A23;&#x53EF;&#x4EE5;&#x7C21;&#x5316;&#x6211;&#x5011;&#x7684;&#x8655;&#x7406;&#x908F;&#x8F2F;&#x3002;&#x6BD4;&#x5982;s[m:n]&#x9019;&#x500B;slice&#xFF0C;0 &#x2264; m &#x2264; n &#x2264; len(s)&#xFF0C;&#x5305;&#x542B;n-m&#x500B;&#x5143;&#x7D20;&#x3002;</p>
<p>os.Args&#x7684;&#x7B2C;&#x4E00;&#x500B;&#x5143;&#x7D20;&#xFF0C;&#x537D;os.Args[0]&#x662F;&#x547D;&#x4EE4;&#x884C;&#x57F7;&#x884C;&#x6642;&#x7684;&#x547D;&#x4EE4;&#x672C;&#x8EAB;&#xFF1B;&#x5176;&#x5B83;&#x7684;&#x5143;&#x7D20;&#x5247;&#x662F;&#x57F7;&#x884C;&#x8A72;&#x547D;&#x4EE4;&#x6642;&#x50B3;&#x7D66;&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#x7684;&#x53C3;&#x6578;&#x3002;&#x524D;&#x9762;&#x63D0;&#x5230;&#x7684;&#x5207;&#x7247;&#x8868;&#x9054;&#x5F0F;&#xFF0C;s[m:n]&#x6703;&#x8FD4;&#x8FF4;&#x7B2C;m&#x5230;&#x7B2C;n-1&#x500B;&#x5143;&#x7D20;&#xFF0C;&#x6240;&#x4EE5;&#x4E0B;&#x4E00;&#x500B;&#x4F8B;&#x5B50;&#x91CC;&#x9700;&#x8981;&#x7528;&#x5230;&#x7684;os.Args[1:len(os.Args)]&#x537D;&#x662F;&#x9664;&#x4E86;&#x547D;&#x4EE4;&#x672C;&#x8EAB;&#x5916;&#x7684;&#x6240;&#x6709;&#x50B3;&#x5165;&#x53C3;&#x6578;&#x3002;&#x5982;&#x679C;&#x6211;&#x5011;&#x7701;&#x7565;s[m:n]&#x91CC;&#x7684;m&#x548C;n&#xFF0C;&#x90A3;&#x9EBD;&#x9ED8;&#x8A8D;&#x9019;&#x500B;&#x8868;&#x9054;&#x5F0F;&#x6703;&#x586B;&#x5165;0:len(s)&#xFF0C;&#x6240;&#x4EE5;&#x9019;&#x91CC;&#x6211;&#x5011;&#x9084;&#x53EF;&#x4EE5;&#x7701;&#x7565;&#x6389;n&#xFF0C;&#x5BEB;&#x6210;os.Args[1:]&#x3002;</p>
<p>&#x4E0B;&#x9762;&#x662F;&#x4E00;&#x500B;Unix&#x91CC;echo&#x547D;&#x4EE4;&#x7684;&#x5BE6;&#x73FE;&#xFF0C;&#x9019;&#x500B;&#x547D;&#x4EE4;&#x6703;&#x5728;&#x55AE;&#x884C;&#x5167;&#x6253;&#x5370;&#x9F63;&#x547D;&#x4EE4;&#x884C;&#x53C3;&#x6578;&#x3002;&#x9019;&#x500B;&#x7A0B;&#x5E8F;import&#x4E86;&#x5169;&#x500B;package&#xFF0C;&#x4F75;&#x4E14;&#x7528;&#x62EC;&#x865F;&#x628A;&#x9019;&#x5169;&#x500B;package&#x5305;&#x4E86;&#x8D77;&#x4F86;&#xFF0C;&#x9019;&#x662F;&#x5206;&#x522B;import&#x5404;&#x500B;package&#x8072;&#x660E;&#x7684;&#x7C21;&#x5316;&#x5BEB;&#x6CD5;&#x3002;&#x7576;&#x7136;&#x4E86;&#x4F60;&#x5206;&#x958B;&#x4F86;&#x5BEB;import&#x4E5F;&#x6C92;&#x6709;&#x4EC0;&#x9EBD;&#x554F;&#x984C;&#xFF0C;&#x96BB;&#x662F;&#x4E00;&#x822C;&#x7232;&#x4E86;&#x65B9;&#x4FBF;&#x6211;&#x5011;&#x90FD;&#x6703;&#x50CF;&#x4E0B;&#x9762;&#x9019;&#x6A23;&#x4F86;&#x5C0E;&#x5165;&#x591A;&#x500B;package&#x3002;&#x6211;&#x5011;&#x81EA;&#x5DF1;&#x5BEB;&#x7684;&#x5C0E;&#x5165;&#x9806;&#x5E8F;&#x4F75;&#x4E0D;&#x91CD;&#x8981;&#xFF0C;&#x56E0;&#x7232;gofmt&#x5DE5;&#x5177;&#x6703;&#x5E6B;&#x52A9;&#x6211;&#x5011;&#x6309;&#x7167;&#x5B57;&#x6BCD;&#x9806;&#x5E8F;&#x4F86;&#x6392;&#x5217;&#x597D;&#x9019;&#x4E9B;&#x5C0E;&#x5165;&#x5305;&#x540D;&#x3002;&#xFF08;&#x672C;&#x66F8;&#x4E2D;&#x5982;&#x679C;&#x4E00;&#x500B;&#x4F8B;&#x5B50;&#x6709;&#x591A;&#x7A2E;&#x7248;&#x672C;&#x6642;&#xFF0C;&#x6211;&#x5011;&#x6703;&#x7528;&#x7DE8;&#x865F;&#x6A19;&#x8A18;&#x9F63;&#x4F86;&#xFF09;</p>
<pre><code class="lang-go">gopl.io/ch1/echo1
<span class="hljs-comment">// Echo1 prints its command-line arguments.</span>
<span class="hljs-keyword">package</span> main
<span class="hljs-keyword">import</span> (
<span class="hljs-string">&quot;fmt&quot;</span>
<span class="hljs-string">&quot;os&quot;</span>
)
<span class="hljs-keyword">func</span> main() {
<span class="hljs-keyword">var</span> s, sep <span class="hljs-typename">string</span>
<span class="hljs-keyword">for</span> i := <span class="hljs-number">1</span>; i &lt; <span class="hljs-built_in">len</span>(os.Args); i++ {
s += sep + os.Args[i]
sep = <span class="hljs-string">&quot; &quot;</span>
}
fmt.Println(s)
<span class="hljs-keyword">var</span> s, sep <span class="hljs-typename">string</span>
<span class="hljs-keyword">for</span> i := <span class="hljs-number">1</span>; i &lt; <span class="hljs-built_in">len</span>(os.Args); i++ {
s += sep + os.Args[i]
sep = <span class="hljs-string">&quot; &quot;</span>
}
fmt.Println(s)
}
</code></pre>
<p>Go&#x91CC;&#x7684;&#x8A3B;&#x91CB;&#x662F;&#x4EE5;//&#x4F86;&#x8868;&#x793A;&#x3002;//&#x5F8C;&#x7684;&#x5167;&#x5BB9;&#x4E00;&#x76F4;&#x5230;&#x884C;&#x672B;&#x90FD;&#x662F;&#x9019;&#x689D;&#x8A3B;&#x91CB;&#x7684;&#x4E00;&#x90E8;&#x5206;&#xFF0C;&#x4F75;&#x4E14;&#x9019;&#x4E9B;&#x8A3B;&#x91CB;&#x6703;&#x88AB;&#x7DE8;&#x8B6F;&#x5668;&#x5FFD;&#x7565;&#x3002;</p>
<p>Go&#x8A9E;&#x8A00;&#x91CC;&#x7684;&#x8A3B;&#x91CB;&#x662F;&#x4EE5;//&#x4F86;&#x8868;&#x793A;&#x3002;//&#x4E4B;&#x5F8C;&#x7684;&#x5167;&#x5BB9;&#x4E00;&#x76F4;&#x5230;&#x884C;&#x672B;&#x90FD;&#x662F;&#x9019;&#x689D;&#x8A3B;&#x91CB;&#x7684;&#x4E00;&#x90E8;&#x5206;&#xFF0C;&#x4F75;&#x4E14;&#x9019;&#x4E9B;&#x8A3B;&#x91CB;&#x6703;&#x88AB;&#x7DE8;&#x8B6F;&#x5668;&#x5FFD;&#x7565;&#x3002;</p>
<p>&#x6309;&#x7167;&#x6163;&#x4F8B;&#xFF0C;&#x6211;&#x5011;&#x6703;&#x5728;&#x6BCF;&#x4E00;&#x500B;package&#x524D;&#x9762;&#x653E;&#x4E0A;&#x9019;&#x500B;package&#x7684;&#x8A73;&#x76E1;&#x7684;&#x8A3B;&#x91CB;&#x5C0D;&#x5176;&#x9032;&#x884C;&#x8AAC;&#x660E;&#xFF1B;&#x5C0D;&#x65BC;&#x4E00;&#x500B;main package&#x4F86;&#x8AAC;&#xFF0C;&#x4E00;&#x822C;&#x9019;&#x6BB5;&#x8A55;&#x8AD6;&#x6703;&#x5305;&#x542B;&#x5E7E;&#x53E5;&#x8A71;&#x4F86;&#x8AAC;&#x660E;&#x9019;&#x500B;&#x9805;&#x76EE;/&#x7A0B;&#x5E8F;&#x6574;&#x9AD4;&#x662F;&#x505A;&#x4EC0;&#x9EBD;&#x7528;&#x7684;&#x3002;</p>
<p>var&#x95DC;&#x9375;&#x5B57;&#x7528;&#x4F86;&#x505A;&#x8B8A;&#x91CF;&#x8072;&#x660E;&#x3002;&#x9019;&#x91CC;&#x8072;&#x660E;&#x4E86;s&#x548C;sep&#x5169;&#x500B;string&#x8B8A;&#x91CF;&#x3002;&#x8B8A;&#x91CF;&#x53EF;&#x4EE5;&#x5728;&#x8072;&#x660E;&#x671F;&#x9593;&#x76F4;&#x63A5;&#x9032;&#x884C;&#x521D;&#x59CB;&#x5316;&#x3002;&#x5982;&#x679C;&#x6C92;&#x6709;&#x986F;&#x5F0F;&#x5730;&#x521D;&#x59CB;&#x5316;&#x7684;&#x8A71;&#xFF0C;Go&#x6703;&#x96B1;&#x5F0F;&#x5730;&#x7D66;&#x9019;&#x4E9B;&#x672A;&#x521D;&#x59CB;&#x5316;&#x7684;&#x8B8A;&#x91CF;&#x8CE6;&#x4E88;&#x5C0D;&#x61C9;&#x5176;&#x985E;&#x578B;&#x7684;&#x96F6;&#x503C;&#xFF0C;&#x6BD4;&#x5982;&#x6578;&#x503C;&#x985E;&#x578B;&#x5C31;&#x662F;0&#xFF0C;&#x5B57;&#x7B26;&#x4E32;&#x985E;&#x578B;&#x5C31;&#x662F;&#x201C;&#x201D;&#x7A7A;&#x5B57;&#x7B26;&#x4E32;&#x3002;&#x5728;&#x9019;&#x500B;&#x4F8B;&#x5B50;&#x91CC;&#x7684;s&#x548C;sep&#x88AB;&#x96B1;&#x5F0F;&#x5730;&#x8CE6;&#x503C;&#x7232;&#x4E86;&#x7A7A;&#x5B57;&#x7B26;&#x4E32;&#x3002;&#x5728;&#x7B2C;2&#x7AE0;&#x4E2D;&#x6211;&#x5011;&#x6703;&#x66F4;&#x8A73;&#x7D30;&#x5730;&#x8B1B;&#x89E3;&#x8B8A;&#x91CF;&#x548C;&#x8072;&#x660E;&#x3002;</p>
<p>&#x5C0D;&#x65BC;&#x6578;&#x5B57;&#x985E;&#x578B;&#xFF0C;Go&#x8A9E;&#x8A00;&#x63D0;&#x4F9B;&#x4E86;&#x5E38;&#x898F;&#x7684;&#x6578;&#x503C;&#x8A08;&#x7B97;&#x548C;&#x908F;&#x8F2F;&#x904B;&#x7B97;&#x7B26;&#x3002;&#x800C;&#x5C0D;&#x65BC;string&#x985E;&#x578B;&#xFF0C;+&#x865F;&#x8868;&#x793A;&#x5B57;&#x7B26;&#x4E32;&#x7684;&#x9023;&#x63A5;(&#x8B6F;&#x8A3B;&#xFF1A;&#x548C;C++&#x6216;&#x8005;js&#x662F;&#x4E00;&#x6A23;&#x7684;)&#x3002;&#x6240;&#x4EE5;&#x4E0B;&#x9762;&#x9019;&#x500B;&#x8868;&#x9054;&#x5F0F;&#xFF1A;</p>
<p>var&#x95DC;&#x9375;&#x5B57;&#x7528;&#x4F86;&#x505A;&#x8B8A;&#x91CF;&#x8072;&#x660E;&#x3002;&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#x8072;&#x660E;&#x4E86;s&#x548C;sep&#x5169;&#x500B;string&#x8B8A;&#x91CF;&#x3002;&#x8B8A;&#x91CF;&#x53EF;&#x4EE5;&#x5728;&#x8072;&#x660E;&#x671F;&#x9593;&#x76F4;&#x63A5;&#x9032;&#x884C;&#x521D;&#x59CB;&#x5316;&#x3002;&#x5982;&#x679C;&#x6C92;&#x6709;&#x986F;&#x5F0F;&#x5730;&#x521D;&#x59CB;&#x5316;&#x7684;&#x8A71;&#xFF0C;Go&#x8A9E;&#x8A00;&#x6703;&#x96B1;&#x5F0F;&#x5730;&#x7D66;&#x9019;&#x4E9B;&#x672A;&#x521D;&#x59CB;&#x5316;&#x7684;&#x8B8A;&#x91CF;&#x8CE6;&#x4E88;&#x5C0D;&#x61C9;&#x5176;&#x985E;&#x578B;&#x7684;&#x96F6;&#x503C;&#xFF0C;&#x6BD4;&#x5982;&#x6578;&#x503C;&#x985E;&#x578B;&#x5C31;&#x662F;0&#xFF0C;&#x5B57;&#x7B26;&#x4E32;&#x985E;&#x578B;&#x5C31;&#x662F;&#x7A7A;&#x5B57;&#x7B26;&#x4E32;&#x201C;&#x201D;&#x3002;&#x5728;&#x9019;&#x500B;&#x4F8B;&#x5B50;&#x91CC;&#x7684;s&#x548C;sep&#x88AB;&#x96B1;&#x5F0F;&#x5730;&#x8CE6;&#x503C;&#x7232;&#x4E86;&#x7A7A;&#x5B57;&#x7B26;&#x4E32;&#x3002;&#x5728;&#x7B2C;2&#x7AE0;&#x4E2D;&#x6211;&#x5011;&#x6703;&#x66F4;&#x8A73;&#x7D30;&#x5730;&#x8B1B;&#x89E3;&#x8B8A;&#x91CF;&#x548C;&#x8072;&#x660E;&#x3002;</p>
<p>&#x5C0D;&#x65BC;&#x6578;&#x5B57;&#x985E;&#x578B;&#xFF0C;Go&#x8A9E;&#x8A00;&#x63D0;&#x4F9B;&#x4E86;&#x5E38;&#x898F;&#x7684;&#x6578;&#x503C;&#x8A08;&#x7B97;&#x548C;&#x908F;&#x8F2F;&#x904B;&#x7B97;&#x7B26;&#x3002;&#x800C;&#x5C0D;&#x65BC;string&#x985E;&#x578B;&#xFF0C;+&#x865F;&#x8868;&#x793A;&#x5B57;&#x7B26;&#x4E32;&#x7684;&#x9023;&#x63A5;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;&#x548C;C++&#x6216;&#x8005;js&#x662F;&#x4E00;&#x6A23;&#x7684;&#xFF09;&#x3002;&#x6240;&#x4EE5;&#x4E0B;&#x9762;&#x9019;&#x500B;&#x8868;&#x9054;&#x5F0F;&#xFF1A;</p>
<pre><code class="lang-go">sep + os.Args[i]
</code></pre>
<p>&#x8868;&#x793A;&#x5C07;sep&#x5B57;&#x7B26;&#x4E32;&#x548C;os.Args[i]&#x5B57;&#x7B26;&#x4E32;&#x9032;&#x884C;&#x9023;&#x63A5;&#x3002;&#x6211;&#x5011;&#x5728;&#x7A0B;&#x5E8F;&#x91CC;&#x7528;&#x7684;&#x53E6;&#x5916;&#x4E00;&#x500B;&#x8868;&#x9054;&#x5F0F;&#xFF1A;</p>
<pre><code class="lang-go">s += sep + os.Args[i]
</code></pre>
<p>&#x6703;&#x5C07;sep&#x8207;os.Args[i]&#x9023;&#x63A5;&#xFF0C;&#x7136;&#x5F8C;&#x518D;&#x5C07;&#x5F97;&#x5230;&#x7684;&#x7D50;&#x679C;&#x8207;s&#x9032;&#x884C;&#x9023;&#x63A5;&#xFF0C;&#x9019;&#x7A2E;&#x65B9;&#x5F0F;&#x548C;&#x4E0B;&#x9762;&#x7684;&#x8868;&#x9054;&#x662F;&#x7B49;&#x50F9;&#x7684;&#xFF1A;</p>
<p>&#x6703;&#x5C07;sep&#x8207;os.Args[i]&#x9023;&#x63A5;&#xFF0C;&#x7136;&#x5F8C;&#x518D;&#x5C07;&#x5F97;&#x5230;&#x7684;&#x7D50;&#x679C;&#x8207;s&#x9032;&#x884C;&#x9023;&#x63A5;&#x4F75;&#x8CE6;&#x503C;&#x904B;&#x7D66;s&#xFF0C;&#x9019;&#x7A2E;&#x65B9;&#x5F0F;&#x548C;&#x4E0B;&#x9762;&#x7684;&#x8868;&#x9054;&#x662F;&#x7B49;&#x50F9;&#x7684;&#xFF1A;</p>
<pre><code class="lang-go">s = s + sep + os.Args[i]
</code></pre>
<p>&#x904B;&#x7B97;&#x7B26;+=&#x662F;&#x4E00;&#x500B;&#x8CE6;&#x503C;&#x904B;&#x7B97;&#x7B26;(assignment operator)&#xFF0C;&#x6BCF;&#x4E00;&#x7A2E;&#x6578;&#x503C;&#x548C;&#x908F;&#x8F2F;&#x904B;&#x7B97;&#x7B26;&#xFF0C;&#x4F8B;&#x5982;*&#x6216;&#x8005;+&#x90FD;&#x6709;&#x5176;&#x5C0D;&#x61C9;&#x7684;&#x8CE6;&#x503C;&#x904B;&#x7B97;&#x7B26;&#x3002;</p>
<p>echo&#x7A0B;&#x5E8F;&#x53EF;&#x4EE5;&#x6BCF;&#x5FAA;&#x74B0;&#x4E00;&#x6B21;&#x8F38;&#x9F63;&#x4E00;&#x500B;&#x53C3;&#x6578;&#xFF0C;&#x4E0D;&#x904E;&#x6211;&#x5011;&#x9019;&#x91CC;&#x7684;&#x7248;&#x672C;&#x662F;&#x4E0D;&#x65B7;&#x5730;&#x5C07;&#x5176;&#x7D50;&#x679C;&#x9023;&#x63A5;&#x5230;&#x4E00;&#x500B;&#x5B57;&#x7B26;&#x4E32;&#x7684;&#x672B;&#x5C3E;&#x3002;s&#x9019;&#x500B;&#x5B57;&#x7B26;&#x4E32;&#x5728;&#x8072;&#x660E;&#x7684;&#x6642;&#x5019;&#x662F;&#x4E00;&#x500B;&#x7A7A;&#x5B57;&#x7B26;&#x4E32;&#xFF0C;&#x800C;&#x4E4B;&#x5F8C;&#x5FAA;&#x74B0;&#x6BCF;&#x6B21;&#x90FD;&#x6703;&#x88AB;&#x5728;&#x672B;&#x5C3E;&#x6DFB;&#x52A0;&#x4E00;&#x6BB5;&#x5B57;&#x7B26;&#x4E32;&#xFF1B;&#x7B2C;&#x4E00;&#x6B21;&#x8FED;&#x4EE3;&#x4E4B;&#x5F8C;&#xFF0C;&#x4E00;&#x500B;&#x7A7A;&#x683C;&#x6703;&#x88AB;&#x63D2;&#x5165;&#x5230;&#x5B57;&#x7B26;&#x4E32;&#x672B;&#x5C3E;&#xFF0C;&#x6240;&#x4EE5;&#x6BCF;&#x63D2;&#x5165;&#x4E00;&#x500B;&#x65B0;&#x503C;&#xFF0C;&#x90FD;&#x6703;&#x548C;&#x524D;&#x4E00;&#x500B;&#x4E2D;&#x9593;&#x6709;&#x4E00;&#x500B;&#x7A7A;&#x683C;&#x9694;&#x958B;&#x3002;&#x9019;&#x662F;&#x4E00;&#x7A2E;&#x975E;&#x7DDA;&#x6027;&#x7684;&#x64CD;&#x4F5C;&#xFF0C;&#x7576;&#x6211;&#x5011;&#x7684;&#x53C3;&#x6578;&#x6578;&#x91CF;&#x8B8A;&#x5F97;&#x9F90;&#x5927;&#x7684;&#x6642;&#x5019;(&#x7576;&#x7136;&#x4E0D;&#x662F;&#x8AAC;&#x9019;&#x91CC;&#x7684;echo&#xFF0C;&#x4E00;&#x822C;echo&#x4E5F;&#x4E0D;&#x6703;&#x6709;&#x592A;&#x591A;&#x53C3;&#x6578;)&#x5176;&#x904B;&#x884C;&#x958B;&#x92B7;&#x4E5F;&#x6703;&#x8B8A;&#x5F97;&#x9F90;&#x5927;&#x3002;&#x4E0B;&#x9762;&#x6211;&#x5011;&#x6703;&#x4ECB;&#x7D39;&#x4E00;&#x7E6B;&#x5217;&#x7684;echo&#x6539;&#x9032;&#x7248;&#xFF0C;&#x4F86;&#x61C9;&#x5C0D;&#x9019;&#x91CC;&#x8AAC;&#x5230;&#x7684;&#x904B;&#x884C;&#x6548;&#x7387;&#x4F4E;&#x4E0B;&#x3002;</p>
<p>&#x5728;for&#x5FAA;&#x74B0;&#x4E2D;&#xFF0C;&#x6211;&#x5011;&#x7528;&#x5230;&#x4E86;i&#x4F86;&#x505A;&#x4E0B;&#x6A19;&#x7D22;&#x5F15;&#xFF0C;&#x53EF;&#x4EE5;&#x770B;&#x5230;&#x6211;&#x5011;&#x7528;&#x4E86;:=&#x7B26;&#x865F;&#x4F86;&#x7D66;i&#x9032;&#x884C;&#x521D;&#x59CB;&#x5316;&#x548C;&#x8CE6;&#x503C;&#xFF0C;&#x9019;&#x662F;var xxx=yyy&#x7684;&#x4E00;&#x7A2E;&#x7C21;&#x5BEB;&#x5F62;&#x5F0F;&#xFF0C;Go&#x6703;&#x6839;&#x64DA;&#x7B49;&#x865F;&#x53F3;&#x908A;&#x7684;&#x503C;&#x7684;&#x985E;&#x578B;&#x81EA;&#x52D5;&#x5224;&#x65B7;&#x5DE6;&#x908A;&#x7684;&#x503C;&#x985E;&#x578B;&#xFF0C;&#x4E0B;&#x4E00;&#x7AE0;&#x6703;&#x5C0D;&#x9019;&#x4E00;&#x9EDE;&#x9032;&#x884C;&#x8A73;&#x7D30;&#x8AAC;&#x660E;&#x3002;</p>
<p>&#x81EA;&#x589E;&#x8868;&#x9054;&#x5F0F;i++&#x6703;&#x7232;i&#x52A0;&#x4E0A;1&#xFF1B;&#x9019;&#x500B;i += 1&#x4EE5;&#x53CA;i = i + 1&#x90FD;&#x662F;&#x7B49;&#x50F9;&#x7684;&#x3002;&#x5C0D;&#x61C9;&#x7684;&#x9084;&#x6709;i--&#x662F;&#x7D66;i&#x6E1B;&#x53BB;1&#x3002;&#x9019;&#x4E9B;&#x5728;go&#x8A9E;&#x8A00;&#x91CC;&#x662F;&#x8A9E;&#x53E5;&#xFF0C;&#x800C;&#x4E0D;&#x50CF;C&#x7E6B;&#x7684;&#x5176;&#x5B83;&#x8A9E;&#x8A00;&#x91CC;&#x662F;&#x8868;&#x9054;&#x5F0F;&#x3002;&#x6240;&#x4EE5;&#x5728;Go&#x8A9E;&#x8A00;&#x91CC;j = i++&#x662F;&#x975E;&#x6CD5;&#x7684;&#xFF0C;&#x800C;&#x4E14;++&#x548C;--&#x90FD;&#x96BB;&#x80FD;&#x653E;&#x5728;&#x8B8A;&#x91CF;&#x540D;&#x5F8C;&#x9762;&#xFF0C;&#x56E0;&#x6B64;--i&#x4E5F;&#x662F;&#x975E;&#x6CD5;&#x7684;&#x3002;</p>
<p>echo&#x7A0B;&#x5E8F;&#x53EF;&#x4EE5;&#x6BCF;&#x5FAA;&#x74B0;&#x4E00;&#x6B21;&#x8F38;&#x9F63;&#x4E00;&#x500B;&#x53C3;&#x6578;&#xFF0C;&#x4E0D;&#x904E;&#x6211;&#x5011;&#x9019;&#x91CC;&#x7684;&#x7248;&#x672C;&#x662F;&#x4E0D;&#x65B7;&#x5730;&#x5C07;&#x5176;&#x7D50;&#x679C;&#x9023;&#x63A5;&#x5230;&#x4E00;&#x500B;&#x5B57;&#x7B26;&#x4E32;&#x7684;&#x672B;&#x5C3E;&#x3002;s&#x9019;&#x500B;&#x5B57;&#x7B26;&#x4E32;&#x5728;&#x8072;&#x660E;&#x7684;&#x6642;&#x5019;&#x662F;&#x4E00;&#x500B;&#x7A7A;&#x5B57;&#x7B26;&#x4E32;&#xFF0C;&#x800C;&#x4E4B;&#x5F8C;&#x5FAA;&#x74B0;&#x6BCF;&#x6B21;&#x90FD;&#x6703;&#x88AB;&#x5728;&#x672B;&#x5C3E;&#x6DFB;&#x52A0;&#x4E00;&#x6BB5;&#x5B57;&#x7B26;&#x4E32;&#xFF1B;&#x7B2C;&#x4E00;&#x6B21;&#x8FED;&#x4EE3;&#x4E4B;&#x5F8C;&#xFF0C;&#x4E00;&#x500B;&#x7A7A;&#x683C;&#x6703;&#x88AB;&#x63D2;&#x5165;&#x5230;&#x5B57;&#x7B26;&#x4E32;&#x672B;&#x5C3E;&#xFF0C;&#x6240;&#x4EE5;&#x6BCF;&#x63D2;&#x5165;&#x4E00;&#x500B;&#x65B0;&#x503C;&#xFF0C;&#x90FD;&#x6703;&#x548C;&#x524D;&#x4E00;&#x500B;&#x4E2D;&#x9593;&#x6709;&#x4E00;&#x500B;&#x7A7A;&#x683C;&#x9694;&#x958B;&#x3002;&#x9019;&#x662F;&#x4E00;&#x7A2E;&#x975E;&#x7DDA;&#x6027;&#x7684;&#x64CD;&#x4F5C;&#xFF0C;&#x7576;&#x6211;&#x5011;&#x7684;&#x53C3;&#x6578;&#x6578;&#x91CF;&#x8B8A;&#x5F97;&#x9F90;&#x5927;&#x7684;&#x6642;&#x5019;&#xFF08;&#x7576;&#x7136;&#x4E0D;&#x662F;&#x8AAC;&#x9019;&#x91CC;&#x7684;echo&#xFF0C;&#x4E00;&#x822C;echo&#x4E5F;&#x4E0D;&#x6703;&#x6709;&#x592A;&#x591A;&#x53C3;&#x6578;&#xFF09;&#x5176;&#x904B;&#x884C;&#x958B;&#x92B7;&#x4E5F;&#x6703;&#x8B8A;&#x5F97;&#x9F90;&#x5927;&#x3002;&#x4E0B;&#x9762;&#x6211;&#x5011;&#x6703;&#x4ECB;&#x7D39;&#x4E00;&#x7E6B;&#x5217;&#x7684;echo&#x6539;&#x9032;&#x7248;&#xFF0C;&#x4F86;&#x61C9;&#x5C0D;&#x9019;&#x91CC;&#x8AAC;&#x5230;&#x7684;&#x904B;&#x884C;&#x6548;&#x7387;&#x4F4E;&#x4E0B;&#x3002;</p>
<p>&#x5728;for&#x5FAA;&#x74B0;&#x4E2D;&#xFF0C;&#x6211;&#x5011;&#x7528;&#x5230;&#x4E86;i&#x4F86;&#x505A;&#x4E0B;&#x6A19;&#x7D22;&#x5F15;&#xFF0C;&#x53EF;&#x4EE5;&#x770B;&#x5230;&#x6211;&#x5011;&#x7528;&#x4E86;:=&#x7B26;&#x865F;&#x4F86;&#x7D66;i&#x9032;&#x884C;&#x521D;&#x59CB;&#x5316;&#x548C;&#x8CE6;&#x503C;&#xFF0C;&#x9019;&#x662F;var xxx=yyy&#x7684;&#x4E00;&#x7A2E;&#x7C21;&#x5BEB;&#x5F62;&#x5F0F;&#xFF0C;Go&#x8A9E;&#x8A00;&#x6703;&#x6839;&#x64DA;&#x7B49;&#x865F;&#x53F3;&#x908A;&#x7684;&#x503C;&#x7684;&#x985E;&#x578B;&#x81EA;&#x52D5;&#x5224;&#x65B7;&#x5DE6;&#x908A;&#x7684;&#x503C;&#x985E;&#x578B;&#xFF0C;&#x4E0B;&#x4E00;&#x7AE0;&#x6703;&#x5C0D;&#x9019;&#x4E00;&#x9EDE;&#x9032;&#x884C;&#x8A73;&#x7D30;&#x8AAC;&#x660E;&#x3002;</p>
<p>&#x81EA;&#x589E;&#x8868;&#x9054;&#x5F0F;i++&#x6703;&#x7232;i&#x52A0;&#x4E0A;1&#xFF1B;&#x9019;&#x548C;i += 1&#x4EE5;&#x53CA;i = i + 1&#x90FD;&#x662F;&#x7B49;&#x50F9;&#x7684;&#x3002;&#x5C0D;&#x61C9;&#x7684;&#x9084;&#x6709;i--&#x662F;&#x7D66;i&#x6E1B;&#x53BB;1&#x3002;&#x9019;&#x4E9B;&#x5728;Go&#x8A9E;&#x8A00;&#x91CC;&#x662F;&#x8A9E;&#x53E5;&#xFF0C;&#x800C;&#x4E0D;&#x50CF;C&#x7E6B;&#x7684;&#x5176;&#x5B83;&#x8A9E;&#x8A00;&#x91CC;&#x662F;&#x8868;&#x9054;&#x5F0F;&#x3002;&#x6240;&#x4EE5;&#x5728;Go&#x8A9E;&#x8A00;&#x91CC;j = i++&#x662F;&#x975E;&#x6CD5;&#x7684;&#xFF0C;&#x800C;&#x4E14;++&#x548C;--&#x90FD;&#x96BB;&#x80FD;&#x653E;&#x5728;&#x8B8A;&#x91CF;&#x540D;&#x5F8C;&#x9762;&#xFF0C;&#x56E0;&#x6B64;--i&#x4E5F;&#x662F;&#x975E;&#x6CD5;&#x7684;&#x3002;</p>
<p>&#x5728;Go&#x8A9E;&#x8A00;&#x91CC;&#x96BB;&#x6709;for&#x5FAA;&#x74B0;&#x4E00;&#x7A2E;&#x5FAA;&#x74B0;&#x3002;&#x7576;&#x7136;&#x4E86;&#x7232;&#x4E86;&#x6EFF;&#x8DB3;&#x9700;&#x6C42;&#xFF0C;Go&#x7684;for&#x5FAA;&#x74B0;&#x6709;&#x5F88;&#x591A;&#x7A2E;&#x5F62;&#x5F0F;&#xFF0C;&#x4E0B;&#x9762;&#x662F;&#x5176;&#x4E2D;&#x7684;&#x4E00;&#x7A2E;&#xFF1A;</p>
<pre><code class="lang-go"><span class="hljs-keyword">for</span> initialization; condition; post {
<span class="hljs-comment">// zero or more statements</span>
}
</code></pre>
<p>&#x9019;&#x91CC;&#x9700;&#x8981;&#x8A3B;&#x610F;&#xFF0C;for&#x5FAA;&#x74B0;&#x7684;&#x5169;&#x908A;&#x662F;&#x4E0D;&#x9700;&#x8981;&#x50CF;&#x5176;&#x5B83;&#x8A9E;&#x8A00;&#x4E00;&#x6A23;&#x5BEB;&#x62EC;&#x865F;&#x7684;&#x3002;&#x4F75;&#x4E14;&#x5DE6;&#x5927;&#x62EC;&#x865F;&#x9700;&#x8981;&#x548C;for&#x8A9E;&#x53E5;&#x5728;&#x540C;&#x4E00;&#x884C;&#x3002;</p>
<p>initialization&#x90E8;&#x5206;&#x662F;&#x53EF;&#x9078;&#x7684;&#xFF0C;&#x5982;&#x679C;&#x4F60;&#x5BEB;&#x4E86;&#x9019;&#x90E8;&#x5206;&#x7684;&#x8A71;&#xFF0C;&#x5728;for&#x5FAA;&#x74B0;&#x4E4B;&#x524D;&#x9019;&#x90E8;&#x5206;&#x7684;&#x908F;&#x8F2F;&#x6703;&#x88AB;&#x57F7;&#x884C;&#x3002;&#x9700;&#x8981;&#x8A3B;&#x610F;&#x7684;&#x662F;&#x9019;&#x90E8;&#x5206;&#x5FC5;&#x9B1A;&#x662F;&#x4E00;&#x500B;&#x7C21;&#x55AE;&#x7684;&#x8A9E;&#x53E5;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x8AAC;&#x662F;&#x4E00;&#x500B;&#x7C21;&#x77ED;&#x7684;&#x8B8A;&#x91CF;&#x8072;&#x660E;&#xFF0C;&#x4E00;&#x500B;&#x8CE6;&#x503C;&#x8A9E;&#x53E5;&#xFF0C;&#x6216;&#x662F;&#x4E00;&#x500B;&#x51FD;&#x6578;&#x8ABF;&#x7528;&#x3002;condition&#x90E8;&#x5206;&#x5FC5;&#x9B1A;&#x662F;&#x4E00;&#x500B;&#x7D50;&#x679C;&#x7232;boolean&#x503C;&#x7684;&#x8868;&#x9054;&#x5F0F;&#xFF0C;&#x5728;&#x6BCF;&#x6B21;&#x5FAA;&#x74B0;&#x4E4B;&#x524D;&#xFF0C;&#x8A9E;&#x8A00;&#x90FD;&#x6703;&#x6AA2;&#x67FB;&#x7576;&#x524D;&#x662F;&#x5426;&#x6EFF;&#x8DB3;&#x9019;&#x500B;&#x689D;&#x4EF6;&#xFF0C;&#x5982;&#x679C;&#x4E0D;&#x6EFF;&#x8DB3;&#x7684;&#x8A71;&#x4FBF;&#x6703;&#x7D50;&#x675F;&#x5FAA;&#x74B0;&#xFF1B;post&#x90E8;&#x5206;&#x7684;&#x8A9E;&#x53E5;&#x5247;&#x662F;&#x5728;&#x6BCF;&#x6B21;&#x5FAA;&#x74B0;&#x7D50;&#x675F;&#x4E4B;&#x5F8C;&#x88AB;&#x57F7;&#x884C;&#xFF0C;&#x4E4B;&#x5F8C;conditon&#x90E8;&#x5206;&#x6703;&#x5728;&#x4E0B;&#x4E00;&#x6B21;&#x57F7;&#x884C;&#x524D;&#x518D;&#x88AB;&#x57F7;&#x884C;&#xFF0C;&#x4F9D;&#x6B64;&#x5F80;&#x8907;&#x3002;&#x7576;condition&#x689D;&#x4EF6;&#x91CC;&#x7684;&#x5224;&#x65B7;&#x7D50;&#x679C;&#x8B8A;&#x7232;false&#x4E4B;&#x5F8C;&#xFF0C;&#x5FAA;&#x74B0;&#x537D;&#x7D50;&#x675F;&#x3002;</p>
<p>initialization&#x90E8;&#x5206;&#x662F;&#x53EF;&#x9078;&#x7684;&#xFF0C;&#x5982;&#x679C;&#x4F60;&#x5BEB;&#x4E86;&#x9019;&#x90E8;&#x5206;&#x7684;&#x8A71;&#xFF0C;&#x5728;for&#x5FAA;&#x74B0;&#x4E4B;&#x524D;&#x9019;&#x90E8;&#x5206;&#x7684;&#x908F;&#x8F2F;&#x6703;&#x88AB;&#x57F7;&#x884C;&#x3002;&#x9700;&#x8981;&#x8A3B;&#x610F;&#x7684;&#x662F;&#x9019;&#x90E8;&#x5206;&#x5FC5;&#x9B1A;&#x662F;&#x4E00;&#x500B;&#x7C21;&#x55AE;&#x7684;&#x8A9E;&#x53E5;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x8AAC;&#x662F;&#x4E00;&#x500B;&#x7C21;&#x77ED;&#x7684;&#x8B8A;&#x91CF;&#x8072;&#x660E;&#xFF0C;&#x4E00;&#x500B;&#x8CE6;&#x503C;&#x8A9E;&#x53E5;&#xFF0C;&#x6216;&#x662F;&#x4E00;&#x500B;&#x51FD;&#x6578;&#x8ABF;&#x7528;&#x3002;condition&#x90E8;&#x5206;&#x5FC5;&#x9B1A;&#x662F;&#x4E00;&#x500B;&#x7D50;&#x679C;&#x7232;boolean&#x503C;&#x7684;&#x8868;&#x9054;&#x5F0F;&#xFF0C;&#x5728;&#x6BCF;&#x6B21;&#x5FAA;&#x74B0;&#x4E4B;&#x524D;&#xFF0C;&#x8A9E;&#x8A00;&#x90FD;&#x6703;&#x6AA2;&#x67FB;&#x7576;&#x524D;&#x662F;&#x5426;&#x6EFF;&#x8DB3;&#x9019;&#x500B;&#x689D;&#x4EF6;&#xFF0C;&#x5982;&#x679C;&#x4E0D;&#x6EFF;&#x8DB3;&#x7684;&#x8A71;&#x4FBF;&#x6703;&#x7D50;&#x675F;&#x5FAA;&#x74B0;&#xFF1B;post&#x90E8;&#x5206;&#x7684;&#x8A9E;&#x53E5;&#x5247;&#x662F;&#x5728;&#x6BCF;&#x6B21;&#x5FAA;&#x74B0;&#x8FED;&#x4EE3;&#x7D50;&#x675F;&#x4E4B;&#x5F8C;&#x88AB;&#x57F7;&#x884C;&#xFF0C;&#x4E4B;&#x5F8C;conditon&#x90E8;&#x5206;&#x6703;&#x5728;&#x4E0B;&#x4E00;&#x6B21;&#x57F7;&#x884C;&#x524D;&#x518D;&#x88AB;&#x57F7;&#x884C;&#xFF0C;&#x4F9D;&#x6B64;&#x5F80;&#x8907;&#x3002;&#x7576;condition&#x689D;&#x4EF6;&#x91CC;&#x7684;&#x5224;&#x65B7;&#x7D50;&#x679C;&#x8B8A;&#x7232;false&#x4E4B;&#x5F8C;&#xFF0C;&#x5FAA;&#x74B0;&#x537D;&#x7D50;&#x675F;&#x3002;</p>
<p>&#x4E0A;&#x9762;&#x63D0;&#x5230;&#x662F;for&#x5FAA;&#x74B0;&#x91CC;&#x7684;&#x4E09;&#x500B;&#x90E8;&#x5206;&#x90FD;&#x662F;&#x53EF;&#x4EE5;&#x88AB;&#x7701;&#x7565;&#x7684;&#xFF0C;&#x5982;&#x679C;&#x4F60;&#x628A;initialization&#x548C;post&#x90E8;&#x5206;&#x90FD;&#x7701;&#x7565;&#x7684;&#x8A71;&#xFF0C;&#x90A3;&#x9EBD;&#x9023;&#x4E2D;&#x9593;&#x9694;&#x96E2;&#x4ED6;&#x5011;&#x7684;&#x5206;&#x865F;&#x4E5F;&#x662F;&#x53EF;&#x4EE5;&#x88AB;&#x7701;&#x7565;&#x7684;&#xFF0C;&#x6BD4;&#x5982;&#x4E0B;&#x9762;&#x9019;&#x7A2E;for&#x5FAA;&#x74B0;&#xFF0C;&#x5C31;&#x548C;&#x50B3;&#x7D71;&#x7684;while&#x5FAA;&#x74B0;&#x662F;&#x4E00;&#x6A23;&#x7684;&#xFF1A;</p>
<pre><code class="lang-go"><span class="hljs-comment">// a traditional &quot;while&quot; loop</span>
<span class="hljs-keyword">for</span> condition {
@@ -2080,8 +2082,8 @@
<span class="hljs-comment">// ...</span>
}
</code></pre>
<p>&#x5728;&#x7121;&#x9650;&#x5FAA;&#x74B0;&#x4E2D;&#xFF0C;&#x4F60;&#x9084;&#x662F;&#x53EF;&#x4EE5;&#x9760;break&#x6216;&#x8005;return&#x4F86;&#x7D42;&#x6B62;&#x6389;&#x5FAA;&#x74B0;&#x3002;</p>
<p>&#x5982;&#x679C;&#x4F60;&#x7684;&#x904D;&#x6B77;&#x5C0D;&#x8C61;&#x662F;string&#x6216;&#x8005;slice&#x91CC;&#x7684;&#x503C;&#x7684;&#x8A71;&#xFF0C;&#x9084;&#x6709;&#x53E6;&#x5916;&#x4E00;&#x7A2E;&#x5FAA;&#x74B0;&#x7684;&#x5BEB;&#x6CD5;&#xFF0C;&#x6211;&#x5011;&#x4F86;&#x770B;&#x770B;&#x53E6;&#x4E00;&#x500B;&#x7248;&#x672C;&#x7684;echo&#xFF1A;</p>
<p>&#x5728;&#x7121;&#x9650;&#x5FAA;&#x74B0;&#x4E2D;&#xFF0C;&#x4F60;&#x9084;&#x662F;&#x53EF;&#x4EE5;&#x9760;break&#x6216;&#x8005;return&#x8A9E;&#x53E5;&#x4F86;&#x7D42;&#x6B62;&#x6389;&#x5FAA;&#x74B0;&#x3002;</p>
<p>&#x5982;&#x679C;&#x4F60;&#x7684;&#x904D;&#x6B77;&#x5C0D;&#x8C61;&#x662F;string&#x6216;&#x8005;slice&#x985E;&#x578B;&#x503C;&#x7684;&#x8A71;&#xFF0C;&#x9084;&#x6709;&#x53E6;&#x5916;&#x4E00;&#x7A2E;&#x5FAA;&#x74B0;&#x7684;&#x5BEB;&#x6CD5;&#xFF0C;&#x6211;&#x5011;&#x4F86;&#x770B;&#x770B;&#x53E6;&#x4E00;&#x500B;&#x7248;&#x672C;&#x7684;echo&#xFF1A;</p>
<pre><code class="lang-go">gopl.io/ch1/echo2
<span class="hljs-comment">// Echo2 prints its command-line arguments.</span>
<span class="hljs-keyword">package</span> main
@@ -2099,18 +2101,17 @@
fmt.Println(s)
}
</code></pre>
<p>&#x6BCF;&#x4E00;&#x6B21;&#x5FAA;&#x74B0;&#x8FED;&#x4EE3;&#xFF0C;range&#x90FD;&#x6703;&#x8FD4;&#x8FF4;&#x4E00;&#x5C0D;&#x7D50;&#x679C;&#xFF1B;&#x7576;&#x524D;&#x8FED;&#x4EE3;&#x7684;&#x4E0B;&#x6A19;&#x4EE5;&#x53CA;&#x5728;&#x8A72;&#x4E0B;&#x6A19;&#x8655;&#x7684;&#x5143;&#x7D20;&#x7684;&#x503C;&#x3002;&#x5728;&#x9019;&#x500B;&#x4F8B;&#x5B50;&#x91CC;&#xFF0C;&#x6211;&#x5011;&#x4E0D;&#x9700;&#x8981;&#x9019;&#x500B;&#x4E0B;&#x6A19;&#xFF0C;&#x4F46;&#x662F;&#x56E0;&#x7232;range&#x7684;&#x8655;&#x7406;&#x8981;&#x6C42;&#x6211;&#x5011;&#x5FC5;&#x9B1A;&#x8981;&#x540C;&#x6642;&#x8655;&#x7406;&#x4E0B;&#x6A19;&#x548C;&#x503C;&#x3002;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x5728;&#x9019;&#x91CC;&#x8072;&#x660E;&#x4E00;&#x500B;&#x63A5;&#x6536;index&#x7684;&#x81E8;&#x6642;&#x8B8A;&#x91CF;&#x4F86;&#x89E3;&#x6C7A;&#x9019;&#x500B;&#x554F;&#x984C;&#xFF0C;&#x4F46;&#x662F;go&#x8A9E;&#x8A00;&#x53C8;&#x4E0D;&#x5141;&#x8A31;&#x96BB;&#x8072;&#x660E;&#x800C;&#x5728;&#x5F8C;&#x7E8C;&#x4EE3;&#x78BC;&#x91CC;&#x4E0D;&#x4F7F;&#x7528;&#x9019;&#x500B;&#x8B8A;&#x91CF;&#xFF0C;&#x5982;&#x679C;&#x4F60;&#x9019;&#x6A23;&#x505A;&#x4E86;&#x7DE8;&#x8B6F;&#x5668;&#x6703;&#x8FD4;&#x8FF4;&#x4E00;&#x500B;&#x7DE8;&#x8B6F;&#x932F;&#x8AA4;&#x3002;</p>
<p>&#x5728;Go&#x8A9E;&#x8A00;&#x4E2D;&#xFF0C;&#x61C9;&#x5C0D;&#x9019;&#x7A2E;&#x60C5;&#x6CC1;&#x7684;&#x89E3;&#x6C7A;&#x65B9;&#x6CD5;&#x662F;&#x7528;&#x7A7A;&#x767D;&#x6A19;&#x8B58;&#x7B26;&#xFF0C;&#x5C0D;&#xFF0C;&#x5C31;&#x662F;&#x4E0A;&#x9762;&#x90A3;&#x500B;&#x4E0B;&#x5283;&#x7DDA;<em>&#x3002;&#x7A7A;&#x767D;&#x6A19;&#x8B58;&#x7B26;&#x53EF;&#x4EE5;&#x5728;&#x4EFB;&#x4F55;&#x4F60;&#x63A5;&#x6536;&#x81EA;&#x5DF1;&#x4E0D;&#x9700;&#x8981;&#x8655;&#x7406;&#x7684;&#x503C;&#x6642;&#x4F7F;&#x7528;&#x3002;&#x5728;&#x9019;&#x91CC;&#xFF0C;&#x6211;&#x5011;&#x7528;&#x4ED6;&#x4F86;&#x5FFD;&#x7565;&#x6389;range&#x8FD4;&#x8FF4;&#x7684;&#x90A3;&#x500B;&#x6C92;&#x7528;&#x7684;&#x4E0B;&#x6A19;&#x503C;&#x3002;&#x5927;&#x591A;&#x6578;&#x7684;Go&#x7A0B;&#x5E8F;&#x54E1;&#x90FD;&#x6703;&#x50CF;&#x4E0A;&#x9762;&#x9019;&#x6A23;&#x4F86;&#x5BEB;&#x985E;&#x4F3C;&#x7684;os.Args&#x904D;&#x6B77;&#xFF0C;&#x53EF;&#x4EE5;&#x907F;&#x514D;&#x932F;&#x8AA4;&#x7684;&#x4E0B;&#x6A19;&#x5F15;&#x7528;&#x3002;(&#x9019;&#x91CC;&#x53EF;&#x80FD;&#x6709;&#x7FFB;&#x8B6F;&#x932F;&#xFF0C;&#x9644;&#x4E0A;&#x539F;&#x6587;)
Most Go programmers would likely use range and </em> to write the echo program as above, since the indexing over os.Args is implicit, not explicit, and thus easier to get right.</p>
<p>&#x6BCF;&#x4E00;&#x6B21;&#x5FAA;&#x74B0;&#x8FED;&#x4EE3;&#xFF0C;range&#x90FD;&#x6703;&#x8FD4;&#x8FF4;&#x4E00;&#x5C0D;&#x7D50;&#x679C;&#xFF1B;&#x7576;&#x524D;&#x8FED;&#x4EE3;&#x7684;&#x4E0B;&#x6A19;&#x4EE5;&#x53CA;&#x5728;&#x8A72;&#x4E0B;&#x6A19;&#x8655;&#x7684;&#x5143;&#x7D20;&#x7684;&#x503C;&#x3002;&#x5728;&#x9019;&#x500B;&#x4F8B;&#x5B50;&#x91CC;&#xFF0C;&#x6211;&#x5011;&#x4E0D;&#x9700;&#x8981;&#x9019;&#x500B;&#x4E0B;&#x6A19;&#xFF0C;&#x4F46;&#x662F;&#x56E0;&#x7232;range&#x7684;&#x8655;&#x7406;&#x8981;&#x6C42;&#x6211;&#x5011;&#x5FC5;&#x9B1A;&#x8981;&#x540C;&#x6642;&#x8655;&#x7406;&#x4E0B;&#x6A19;&#x548C;&#x503C;&#x3002;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x5728;&#x9019;&#x91CC;&#x8072;&#x660E;&#x4E00;&#x500B;&#x63A5;&#x6536;index&#x7684;&#x81E8;&#x6642;&#x8B8A;&#x91CF;&#x4F86;&#x89E3;&#x6C7A;&#x9019;&#x500B;&#x554F;&#x984C;&#xFF0C;&#x4F46;&#x662F;Go&#x8A9E;&#x8A00;&#x53C8;&#x4E0D;&#x5141;&#x8A31;&#x96BB;&#x8072;&#x660E;&#x800C;&#x5728;&#x5F8C;&#x7E8C;&#x4EE3;&#x78BC;&#x91CC;&#x4E0D;&#x4F7F;&#x7528;&#x9019;&#x500B;&#x8B8A;&#x91CF;&#xFF0C;&#x5982;&#x679C;&#x4F60;&#x9019;&#x6A23;&#x505A;&#x4E86;&#x7DE8;&#x8B6F;&#x5668;&#x6703;&#x8FD4;&#x8FF4;&#x4E00;&#x500B;&#x7DE8;&#x8B6F;&#x932F;&#x8AA4;&#x3002;</p>
<p>&#x5728;Go&#x8A9E;&#x8A00;&#x4E2D;&#xFF0C;&#x61C9;&#x5C0D;&#x9019;&#x7A2E;&#x60C5;&#x6CC1;&#x7684;&#x89E3;&#x6C7A;&#x65B9;&#x6CD5;&#x662F;&#x7528;&#x7A7A;&#x767D;&#x6A19;&#x8B58;&#x7B26;&#xFF0C;&#x5C0D;&#xFF0C;&#x5C31;&#x662F;&#x4E0A;&#x9762;&#x90A3;&#x500B;&#x4E0B;&#x5283;&#x7DDA;_&#x3002;&#x7A7A;&#x767D;&#x6A19;&#x8B58;&#x7B26;&#x53EF;&#x4EE5;&#x5728;&#x4EFB;&#x4F55;&#x4F60;&#x63A5;&#x6536;&#x81EA;&#x5DF1;&#x4E0D;&#x9700;&#x8981;&#x8655;&#x7406;&#x7684;&#x503C;&#x6642;&#x4F7F;&#x7528;&#x3002;&#x5728;&#x9019;&#x91CC;&#xFF0C;&#x6211;&#x5011;&#x7528;&#x5B83;&#x4F86;&#x5FFD;&#x7565;&#x6389;range&#x8FD4;&#x8FF4;&#x7684;&#x90A3;&#x500B;&#x6C92;&#x7528;&#x7684;&#x4E0B;&#x6A19;&#x503C;&#x3002;&#x5927;&#x591A;&#x6578;&#x7684;Go&#x7A0B;&#x5E8F;&#x54E1;&#x90FD;&#x6703;&#x50CF;&#x4E0A;&#x9762;&#x9019;&#x6A23;&#x4F86;&#x5BEB;&#x985E;&#x4F3C;&#x7684;os.Args&#x904D;&#x6B77;&#xFF0C;&#x7531;&#x65BC;&#x904D;&#x6B77;os.Args&#x7684;&#x4E0B;&#x6A19;&#x7D22;&#x5F15;&#x662F;&#x96B1;&#x5F0F;&#x81EA;&#x52D5;&#x751F;&#x6210;&#x7684;&#xFF0C;&#x53EF;&#x4EE5;&#x907F;&#x514D;&#x56E0;&#x986F;&#x5F0F;&#x66F4;&#x65B0;&#x7D22;&#x5F15;&#x5C0E;&#x81F4;&#x7684;&#x932F;&#x8AA4;&#x3002;</p>
<p>&#x4E0A;&#x9762;&#x9019;&#x500B;&#x7248;&#x672C;&#x5C07;s&#x548C;sep&#x7684;&#x8072;&#x660E;&#x548C;&#x521D;&#x59CB;&#x5316;&#x90FD;&#x653E;&#x5230;&#x4E86;&#x4E00;&#x8D77;&#xFF0C;&#x4F46;&#x662F;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x7B49;&#x50F9;&#x5730;&#x5C07;&#x8072;&#x660E;&#x548C;&#x8CE6;&#x503C;&#x5206;&#x958B;&#x4F86;&#x5BEB;&#xFF0C;&#x4E0B;&#x9762;&#x9019;&#x4E9B;&#x5BEB;&#x6CD5;&#x90FD;&#x662F;&#x7B49;&#x50F9;&#x7684;</p>
<pre><code class="lang-go">s := <span class="hljs-string">&quot;&quot;</span>
<span class="hljs-keyword">var</span> s <span class="hljs-typename">string</span>
<span class="hljs-keyword">var</span> s = <span class="hljs-string">&quot;&quot;</span>
<span class="hljs-keyword">var</span> s <span class="hljs-typename">string</span> = <span class="hljs-string">&quot;&quot;</span>
</code></pre>
<p>&#x90A3;&#x9EBD;&#x9019;&#x4E9B;&#x7B49;&#x50F9;&#x7684;&#x5F62;&#x5F0F;&#x61C9;&#x8A72;&#x600E;&#x9EBD;&#x505A;&#x9078;&#x64C7;&#x5462;&#xFF1F;&#x9019;&#x91CC;&#x63D0;&#x4F9B;&#x4E00;&#x4E9B;&#x5EFA;&#x8B70;&#xFF1A;&#x7B2C;&#x4E00;&#x7A2E;&#x5F62;&#x5F0F;&#xFF0C;&#x6700;&#x597D;&#x96BB;&#x7528;&#x5728;&#x4E00;&#x500B;&#x51FD;&#x6578;&#x5167;&#x90E8;&#xFF0C;&#x800C;package&#x7D1A;&#x522B;&#x7684;&#x8B8A;&#x91CF;&#xFF0C;&#x8ACB;&#x4E0D;&#x8981;&#x4F7F;&#x7528;&#x9019;&#x6A23;&#x7684;&#x8072;&#x660E;&#x65B9;&#x5F0F;&#x3002;&#x7B2C;&#x4E8C;&#x7A2E;&#x5F62;&#x5F0F;&#x4F9D;&#x8CF4;&#x65BC;string&#x985E;&#x578B;&#x7684;&#x5167;&#x90E8;&#x521D;&#x59CB;&#x5316;&#x6A5F;&#x88FD;&#xFF0C;&#x88AB;&#x521D;&#x59CB;&#x5316;&#x7232;&#x7A7A;&#x5B57;&#x7B26;&#x4E32;&#x3002;&#x7B2C;&#x4E09;&#x7A2E;&#x5F62;&#x5F0F;&#x4F7F;&#x7528;&#x5F97;&#x5F88;&#x5C11;&#xFF0C;&#x9664;&#x975E;&#x540C;&#x6642;&#x8072;&#x660E;&#x591A;&#x500B;&#x8B8A;&#x91CF;&#x3002;&#x7B2C;&#x56DB;&#x7A2E;&#x5F62;&#x5F0F;&#x6703;&#x986F;&#x5F0F;&#x5730;&#x6A19;&#x660E;&#x8B8A;&#x91CF;&#x7684;&#x985E;&#x578B;&#xFF0C;&#x5728;&#x591A;&#x8B8A;&#x91CF;&#x540C;&#x6642;&#x8072;&#x660E;&#x6642;&#x53EF;&#x4EE5;&#x7528;&#x5230;&#x3002;&#x5BE6;&#x8E10;&#x4E2D;&#x4F60;&#x61C9;&#x8A72;&#x96BB;&#x4F7F;&#x7528;&#x4E0A;&#x9762;&#x7684;&#x524D;&#x5169;&#x7A2E;&#x5F62;&#x5F0F;&#xFF0C;&#x986F;&#x5F0F;&#x5730;&#x6307;&#x5B9A;&#x8B8A;&#x91CF;&#x7684;&#x985E;&#x578B;&#xFF0C;&#x8B93;&#x7DE8;&#x8B6F;&#x5668;&#x81EA;&#x5DF1;&#x53BB;&#x521D;&#x59CB;&#x5316;&#x5176;&#x503C;&#xFF0C;&#x6216;&#x8005;&#x76F4;&#x63A5;&#x7528;&#x96B1;&#x5F0F;&#x521D;&#x59CB;&#x5316;&#xFF0C;&#x8868;&#x660E;&#x521D;&#x59CB;&#x503C;&#x600E;&#x9EBD;&#x6A23;&#x4F75;&#x4E0D;&#x91CD;&#x8981;&#x3002;</p>
<p>&#x50CF;&#x4E0A;&#x9762;&#x63D0;&#x5230;&#x7684;&#xFF0C;&#x6BCF;&#x6B21;&#x5FAA;&#x74B0;&#x4E2D;&#x5B57;&#x7B26;&#x4E32;s&#x90FD;&#x6703;&#x5F97;&#x5230;&#x4E00;&#x500B;&#x65B0;&#x5167;&#x5BB9;&#x3002;+=&#x8A9E;&#x53E5;&#x6703;&#x5206;&#x914D;&#x4E00;&#x500B;&#x65B0;&#x7684;&#x5B57;&#x7B26;&#x4E32;&#xFF0C;&#x4F75;&#x5C07;&#x8001;&#x5B57;&#x7B26;&#x4E32;&#x9023;&#x63A5;&#x8D77;&#x4F86;&#x7684;&#x503C;&#x8CE6;&#x4E88;&#x7D66;&#x5B83;&#x3002;&#x800C;&#x76EE;&#x6A19;&#x5B57;&#x7B26;&#x4E32;&#x7684;&#x8001;&#x5B57;&#x9762;&#x503C;&#x5728;&#x5F97;&#x5230;&#x65B0;&#x503C;&#x4EE5;&#x5F8C;&#x5C31;&#x5931;&#x53BB;&#x4E86;&#x7528;&#x8655;&#xFF0C;&#x9019;&#x4E9B;&#x81E8;&#x6642;&#x503C;&#x6703;&#x88AB;go&#x7684;&#x5783;&#x573E;&#x6536;&#x96C6;&#x5668;&#x69A6;&#x6389;&#x3002;</p>
<p>&#x5982;&#x679C;&#x4E0D;&#x65B7;&#x9023;&#x63A5;&#x7684;&#x6578;&#x64DA;&#x91CF;&#x5F88;&#x5927;&#xFF0C;&#x90A3;&#x9EBD;&#x4E0A;&#x9762;&#x9019;&#x7A2E;&#x64CD;&#x4F5C;&#x5C31;&#x662F;&#x6210;&#x672C;&#x975E;&#x5E38;&#x9AD8;&#x7684;&#x64CD;&#x4F5C;&#x3002;&#x66F4;&#x7C21;&#x55AE;&#x4F75;&#x4E14;&#x6709;&#x6548;&#x7684;&#x4E00;&#x7A2E;&#x65B9;&#x5F0F;&#x662F;&#x4F7F;&#x7528;&#x5B57;&#x7B26;&#x4E32;&#x7684;Join&#x51FD;&#x6578;&#xFF0C;&#x50CF;&#x4E0B;&#x9762;&#x9019;&#x6A23;&#xFF1A;</p>
<p>&#x90A3;&#x9EBD;&#x9019;&#x4E9B;&#x7B49;&#x50F9;&#x7684;&#x5F62;&#x5F0F;&#x61C9;&#x8A72;&#x600E;&#x9EBD;&#x505A;&#x9078;&#x64C7;&#x5462;&#xFF1F;&#x9019;&#x91CC;&#x63D0;&#x4F9B;&#x4E00;&#x4E9B;&#x5EFA;&#x8B70;&#xFF1A;&#x7B2C;&#x4E00;&#x7A2E;&#x5F62;&#x5F0F;&#xFF0C;&#x96BB;&#x80FD;&#x7528;&#x5728;&#x4E00;&#x500B;&#x51FD;&#x6578;&#x5167;&#x90E8;&#xFF0C;&#x800C;package&#x7D1A;&#x522B;&#x7684;&#x8B8A;&#x91CF;&#xFF0C;&#x7981;&#x6B62;&#x7528;&#x9019;&#x6A23;&#x7684;&#x8072;&#x660E;&#x65B9;&#x5F0F;&#x3002;&#x7B2C;&#x4E8C;&#x7A2E;&#x5F62;&#x5F0F;&#x4F9D;&#x8CF4;&#x65BC;string&#x985E;&#x578B;&#x7684;&#x5167;&#x90E8;&#x521D;&#x59CB;&#x5316;&#x6A5F;&#x88FD;&#xFF0C;&#x88AB;&#x521D;&#x59CB;&#x5316;&#x7232;&#x7A7A;&#x5B57;&#x7B26;&#x4E32;&#x3002;&#x7B2C;&#x4E09;&#x7A2E;&#x5F62;&#x5F0F;&#x4F7F;&#x7528;&#x5F97;&#x5F88;&#x5C11;&#xFF0C;&#x9664;&#x975E;&#x540C;&#x6642;&#x8072;&#x660E;&#x591A;&#x500B;&#x8B8A;&#x91CF;&#x3002;&#x7B2C;&#x56DB;&#x7A2E;&#x5F62;&#x5F0F;&#x6703;&#x986F;&#x5F0F;&#x5730;&#x6A19;&#x660E;&#x8B8A;&#x91CF;&#x7684;&#x985E;&#x578B;&#xFF0C;&#x5728;&#x591A;&#x8B8A;&#x91CF;&#x540C;&#x6642;&#x8072;&#x660E;&#x6642;&#x53EF;&#x4EE5;&#x7528;&#x5230;&#x3002;&#x5BE6;&#x8E10;&#x4E2D;&#x4F60;&#x61C9;&#x8A72;&#x96BB;&#x4F7F;&#x7528;&#x4E0A;&#x9762;&#x7684;&#x524D;&#x5169;&#x7A2E;&#x5F62;&#x5F0F;&#xFF0C;&#x986F;&#x5F0F;&#x5730;&#x6307;&#x5B9A;&#x8B8A;&#x91CF;&#x7684;&#x985E;&#x578B;&#xFF0C;&#x8B93;&#x7DE8;&#x8B6F;&#x5668;&#x81EA;&#x5DF1;&#x53BB;&#x521D;&#x59CB;&#x5316;&#x5176;&#x503C;&#xFF0C;&#x6216;&#x8005;&#x76F4;&#x63A5;&#x7528;&#x96B1;&#x5F0F;&#x521D;&#x59CB;&#x5316;&#xFF0C;&#x8868;&#x660E;&#x521D;&#x59CB;&#x503C;&#x600E;&#x9EBD;&#x6A23;&#x4F75;&#x4E0D;&#x91CD;&#x8981;&#x3002;</p>
<p>&#x50CF;&#x4E0A;&#x9762;&#x63D0;&#x5230;&#x7684;&#xFF0C;&#x6BCF;&#x6B21;&#x5FAA;&#x74B0;&#x8FED;&#x4EE3;&#x4E2D;&#x5B57;&#x7B26;&#x4E32;s&#x90FD;&#x6703;&#x5F97;&#x5230;&#x4E00;&#x500B;&#x65B0;&#x5167;&#x5BB9;&#x3002;+=&#x8A9E;&#x53E5;&#x6703;&#x5206;&#x914D;&#x4E00;&#x500B;&#x65B0;&#x7684;&#x5B57;&#x7B26;&#x4E32;&#xFF0C;&#x4F75;&#x5C07;&#x8001;&#x5B57;&#x7B26;&#x4E32;&#x9023;&#x63A5;&#x8D77;&#x4F86;&#x7684;&#x503C;&#x8CE6;&#x4E88;&#x7D66;&#x5B83;&#x3002;&#x800C;&#x76EE;&#x6A19;&#x5B57;&#x7B26;&#x4E32;&#x7684;&#x8001;&#x5B57;&#x9762;&#x503C;&#x5728;&#x5F97;&#x5230;&#x65B0;&#x503C;&#x4EE5;&#x5F8C;&#x5C31;&#x5931;&#x53BB;&#x4E86;&#x7528;&#x8655;&#xFF0C;&#x9019;&#x4E9B;&#x81E8;&#x6642;&#x503C;&#x6703;&#x88AB;Go&#x8A9E;&#x8A00;&#x7684;&#x5783;&#x573E;&#x6536;&#x96C6;&#x5668;&#x69A6;&#x6389;&#x3002;</p>
<p>&#x5982;&#x679C;&#x4E0D;&#x65B7;&#x9023;&#x63A5;&#x7684;&#x6578;&#x64DA;&#x91CF;&#x5F88;&#x5927;&#xFF0C;&#x90A3;&#x9EBD;&#x4E0A;&#x9762;&#x9019;&#x7A2E;&#x64CD;&#x4F5C;&#x5C31;&#x662F;&#x6210;&#x672C;&#x975E;&#x5E38;&#x9AD8;&#x7684;&#x64CD;&#x4F5C;&#x3002;&#x66F4;&#x7C21;&#x55AE;&#x4F75;&#x4E14;&#x6709;&#x6548;&#x7684;&#x4E00;&#x7A2E;&#x65B9;&#x5F0F;&#x662F;&#x4F7F;&#x7528;strings&#x5305;&#x63D0;&#x4F9B;&#x7684;Join&#x51FD;&#x6578;&#xFF0C;&#x50CF;&#x4E0B;&#x9762;&#x9019;&#x6A23;&#xFF1A;</p>
<pre><code class="lang-go">gopl.io/ch1/echo3
<span class="hljs-keyword">func</span> main() {
fmt.Println(strings.Join(os.Args[<span class="hljs-number">1</span>:], <span class="hljs-string">&quot; &quot;</span>))
@@ -2119,12 +2120,11 @@ Most Go programmers would likely use range and </em> to write the echo program a
<p>&#x6700;&#x5F8C;&#xFF0C;&#x5982;&#x679C;&#x6211;&#x5011;&#x5C0D;&#x8F38;&#x9F63;&#x7684;&#x683C;&#x5F0F;&#x4E5F;&#x4E0D;&#x662F;&#x5F88;&#x95DC;&#x5FC3;&#xFF0C;&#x96BB;&#x662F;&#x60F3;&#x7C21;&#x55AE;&#x5730;&#x8F38;&#x9F63;&#x503C;&#x5F97;&#x7684;&#x8A71;&#xFF0C;&#x9084;&#x53EF;&#x4EE5;&#x50CF;&#x4E0B;&#x9762;&#x9019;&#x9EBD;&#x5BEB;&#xFF0C;Println&#x51FD;&#x6578;&#x6703;&#x7232;&#x6211;&#x5011;&#x81EA;&#x52D5;&#x683C;&#x5F0F;&#x5316;&#x8F38;&#x9F63;&#x3002;</p>
<pre><code class="lang-go">fmt.Println(os.Args[<span class="hljs-number">1</span>:])
</code></pre>
<p>&#x9019;&#x500B;&#x8F38;&#x9F63;&#x7D50;&#x679C;&#x548C;&#x524D;&#x9762;&#x7684;string.Join&#x5F97;&#x5230;&#x7684;&#x7D50;&#x679C;&#x5F88;&#x76F8;&#x4F3C;&#xFF0C;&#x96BB;&#x662F;&#x88AB;&#x81EA;&#x52D5;&#x5730;&#x653E;&#x5230;&#x4E86;&#x4E00;&#x500B;&#x62EC;&#x865F;&#x91CC;&#xFF0C;&#x5C0D;slice&#x8ABF;&#x7528;Println&#x51FD;&#x6578;&#x90FD;&#x6703;&#x88AB;&#x6253;&#x5370;&#x6210;&#x9019;&#x6A23;&#x5F62;&#x5F0F;&#x7684;&#x7D50;&#x679C;&#x3002;</p>
<p>&#x4E0B;&#x9762;&#x662F;&#x5E7E;&#x9053;&#x7DF4;&#x7FD2;&#x984C;&#xFF1A;</p>
<pre><code>Exercise 1.1:&#x8129;&#x6539;echo&#x7A0B;&#x5E8F;&#xFF0C;&#x4F7F;&#x5176;&#x80FD;&#x5920;&#x6253;&#x5370;os.Args[0]&#x3002;
Exercise 1.2:&#x8129;&#x6539;echo&#x7A0B;&#x5E8F;&#xFF0C;&#x4F7F;&#x5176;&#x6253;&#x5370;value&#x548C;index&#xFF0C;&#x6BCF;&#x500B;value&#x548C;index&#x986F;&#x793A;&#x4E00;&#x884C;&#x3002;
Exercise 1.3:&#x4E0A;&#x624B;&#x5BE6;&#x8E10;&#x524D;&#x9762;&#x63D0;&#x5230;&#x7684;strings.Join&#x548C;&#x76F4;&#x63A5;Println&#xFF0C;&#x4F75;&#x89C0;&#x5BDF;&#x8F38;&#x9F63;&#x7D50;&#x679C;&#x7684;&#x5340;&#x522B;&#x3002;
</code></pre>
<p>&#x9019;&#x500B;&#x8F38;&#x9F63;&#x7D50;&#x679C;&#x548C;&#x524D;&#x9762;&#x7684;string.Join&#x5F97;&#x5230;&#x7684;&#x7D50;&#x679C;&#x5F88;&#x76F8;&#x4F3C;&#xFF0C;&#x96BB;&#x662F;&#x88AB;&#x81EA;&#x52D5;&#x5730;&#x653E;&#x5230;&#x4E86;&#x4E00;&#x500B;&#x65B9;&#x62EC;&#x865F;&#x91CC;&#xFF0C;&#x5C0D;slice&#x8ABF;&#x7528;Println&#x51FD;&#x6578;&#x90FD;&#x6703;&#x88AB;&#x6253;&#x5370;&#x6210;&#x9019;&#x6A23;&#x5F62;&#x5F0F;&#x7684;&#x7D50;&#x679C;&#x3002;</p>
<p><strong>&#x7DF4;&#x7FD2; 1.1&#xFF1A;</strong> &#x8129;&#x6539;echo&#x7A0B;&#x5E8F;&#xFF0C;&#x4F7F;&#x5176;&#x80FD;&#x5920;&#x6253;&#x5370;os.Args[0]&#x3002;</p>
<p><strong>&#x7DF4;&#x7FD2; 1.2&#xFF1A;</strong> &#x8129;&#x6539;echo&#x7A0B;&#x5E8F;&#xFF0C;&#x4F7F;&#x5176;&#x6253;&#x5370;value&#x548C;index&#xFF0C;&#x6BCF;&#x500B;value&#x548C;index&#x986F;&#x793A;&#x4E00;&#x884C;&#x3002;</p>
<p><strong>&#x7DF4;&#x7FD2; 1.3&#xFF1A;</strong> &#x4E0A;&#x624B;&#x5BE6;&#x8E10;&#x524D;&#x9762;&#x63D0;&#x5230;&#x7684;strings.Join&#x548C;&#x76F4;&#x63A5;Println&#xFF0C;&#x4F75;&#x89C0;&#x5BDF;&#x8F38;&#x9F63;&#x7D50;&#x679C;&#x7684;&#x5340;&#x522B;&#x3002;</p>
</section>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="1.3" data-chapter-title="査找重複的行" data-filepath="ch1/ch1-03.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="1.3" data-chapter-title="査找重複的行" data-filepath="ch1/ch1-03.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>
@@ -2024,8 +2024,8 @@
<section class="normal" id="section-">
<h2 id="13-&#x67FB;&#x627E;&#x91CD;&#x8907;&#x7684;&#x884C;">1.3. &#x67FB;&#x627E;&#x91CD;&#x8907;&#x7684;&#x884C;</h2>
<p>&#x6587;&#x4EF6;&#x62F7;&#x8C9D;&#x3001;&#x6587;&#x4EF6;&#x6253;&#x5370;&#x3001;&#x6587;&#x4EF6;&#x8490;&#x7D22;&#x3001;&#x6587;&#x4EF6;&#x6392;&#x5E8F;&#x3001;&#x6587;&#x4EF6;&#x7D71;&#x8A08;&#x985E;&#x7684;&#x7A0B;&#x5E8F;&#x4E00;&#x822C;&#x90FD;&#x6703;&#x6709;&#x6BD4;&#x8F03;&#x76F8;&#x4F3C;&#x7684;&#x7A0B;&#x5E8F;&#x7D50;&#x69CB;&#xFF1A;&#x8655;&#x7406;&#x8F38;&#x5165;&#x7684;&#x4E00;&#x500B;&#x5FAA;&#x74B0;&#xFF0C;&#x5728;&#x6BCF;&#x4E00;&#x500B;&#x8F38;&#x5165;&#x5143;&#x7D20;&#x4E0A;&#x57F7;&#x884C;&#x8A08;&#x7B97;&#x8655;&#x7406;&#xFF0C;&#x5728;&#x8655;&#x7406;&#x7684;&#x540C;&#x6642;&#x6216;&#x8005;&#x8655;&#x7406;&#x5B8C;&#x6210;&#x4E4B;&#x5F8C;&#x9032;&#x884C;&#x7D50;&#x679C;&#x8F38;&#x9F63;&#x3002;&#x6211;&#x5011;&#x6703;&#x5C55;&#x793A;&#x4E00;&#x500B;&#x53EB;dup&#x7A0B;&#x5E8F;&#x7684;&#x4E09;&#x500B;&#x7248;&#x672C;&#xFF1B;&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#x7684;&#x9748;&#x611F;&#x4F86;&#x81EA;&#x65BC;linux&#x7684;uniq&#x547D;&#x4EE4;&#xFF0C;&#x6211;&#x5011;&#x7684;&#x7A0B;&#x5E8F;&#x5C07;&#x6703;&#x627E;&#x5230;&#x76F8;&#x9130;&#x7684;&#x91CD;&#x8907;&#x7684;&#x884C;&#x3002;&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#x63D0;&#x4F9B;&#x7684;&#x6A21;&#x5F0F;&#x53EF;&#x4EE5;&#x5F88;&#x65B9;&#x4FBF;&#x5730;&#x88AB;&#x8129;&#x6539;&#x4F86;&#x5B8C;&#x6210;&#x4E0D;&#x540C;&#x7684;&#x9700;&#x6C42;&#x3002;</p>
<p>&#x7B2C;&#x4E00;&#x500B;&#x7248;&#x672C;&#x7684;dup&#x6703;&#x8F38;&#x9F63;&#x6A19;&#x6E96;&#x8F38;&#x5165;&#x6D41;&#x4E2D;&#x7684;&#x9F63;&#x73FE;&#x591A;&#x6B21;&#x7684;&#x884C;&#xFF0C;&#x5728;&#x884C;&#x5167;&#x5BB9;&#x524D;&#x6703;&#x6709;&#x5176;&#x9F63;&#x73FE;&#x6B21;&#x6578;&#x7684;&#x8A08;&#x6578;&#x3002;&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#x5C07;&#x5F15;&#x5165;if&#x8868;&#x9054;&#x5F0F;&#xFF0C;map&#x5167;&#x7F6E;&#x6578;&#x64DA;&#x7D50;&#x679C;&#x548C;bufio&#x7684;package&#x3002;</p>
<p>&#x6587;&#x4EF6;&#x62F7;&#x8C9D;&#x3001;&#x6587;&#x4EF6;&#x6253;&#x5370;&#x3001;&#x6587;&#x4EF6;&#x8490;&#x7D22;&#x3001;&#x6587;&#x4EF6;&#x6392;&#x5E8F;&#x3001;&#x6587;&#x4EF6;&#x7D71;&#x8A08;&#x985E;&#x7684;&#x7A0B;&#x5E8F;&#x4E00;&#x822C;&#x90FD;&#x6703;&#x6709;&#x6BD4;&#x8F03;&#x76F8;&#x4F3C;&#x7684;&#x7A0B;&#x5E8F;&#x7D50;&#x69CB;&#xFF1A;&#x4E00;&#x500B;&#x8655;&#x7406;&#x8F38;&#x5165;&#x7684;&#x5FAA;&#x74B0;&#xFF0C;&#x5728;&#x6BCF;&#x4E00;&#x500B;&#x8F38;&#x5165;&#x5143;&#x7D20;&#x4E0A;&#x57F7;&#x884C;&#x8A08;&#x7B97;&#x8655;&#x7406;&#xFF0C;&#x5728;&#x8655;&#x7406;&#x7684;&#x540C;&#x6642;&#x6216;&#x8005;&#x8655;&#x7406;&#x5B8C;&#x6210;&#x4E4B;&#x5F8C;&#x9032;&#x884C;&#x7D50;&#x679C;&#x8F38;&#x9F63;&#x3002;&#x6211;&#x5011;&#x6703;&#x5C55;&#x793A;&#x4E00;&#x500B;&#x53EB;dup&#x7A0B;&#x5E8F;&#x7684;&#x4E09;&#x500B;&#x7248;&#x672C;&#xFF1B;&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#x7684;&#x9748;&#x611F;&#x4F86;&#x81EA;&#x65BC;linux&#x7684;uniq&#x547D;&#x4EE4;&#xFF0C;&#x6211;&#x5011;&#x7684;&#x7A0B;&#x5E8F;&#x5C07;&#x6703;&#x627E;&#x5230;&#x76F8;&#x9130;&#x7684;&#x91CD;&#x8907;&#x7684;&#x884C;&#x3002;&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#x63D0;&#x4F9B;&#x7684;&#x6A21;&#x5F0F;&#x53EF;&#x4EE5;&#x5F88;&#x65B9;&#x4FBF;&#x5730;&#x88AB;&#x8129;&#x6539;&#x4F86;&#x5B8C;&#x6210;&#x4E0D;&#x540C;&#x7684;&#x9700;&#x6C42;&#x3002;</p>
<p>&#x7B2C;&#x4E00;&#x500B;&#x7248;&#x672C;&#x7684;dup&#x6703;&#x8F38;&#x9F63;&#x6A19;&#x6E96;&#x8F38;&#x5165;&#x6D41;&#x4E2D;&#x7684;&#x9F63;&#x73FE;&#x591A;&#x6B21;&#x7684;&#x884C;&#xFF0C;&#x5728;&#x884C;&#x5167;&#x5BB9;&#x524D;&#x6703;&#x6709;&#x5176;&#x9F63;&#x73FE;&#x6B21;&#x6578;&#x7684;&#x8A08;&#x6578;&#x3002;&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#x5C07;&#x5F15;&#x5165;if&#x8868;&#x9054;&#x5F0F;&#xFF0C;map&#x5167;&#x7F6E;&#x6578;&#x64DA;&#x7D50;&#x69CB;&#x548C;bufio&#x7684;package&#x3002;</p>
<pre><code class="lang-go">gopl.io/ch1/dup1
<span class="hljs-comment">// Dup1 prints the text of each line that appears more than</span>
<span class="hljs-comment">// once in the standard input, preceded by its count.</span>
@@ -2051,31 +2051,31 @@
}
}
</code></pre>
<p>&#x548C;&#x6211;&#x5011;&#x524D;&#x9762;&#x63D0;&#x5230;&#x7684;for&#x5FAA;&#x74B0;&#x4E00;&#x6A23;&#xFF0C;&#x5728;if&#x689D;&#x4EF6;&#x7684;&#x5169;&#x908A;&#xFF0C;&#x6211;&#x5011;&#x4E5F;&#x4E0D;&#x9700;&#x8981;&#x52A0;&#x62EC;&#x865F;&#xFF0C;&#x4F46;&#x662F;if&#x8868;&#x9054;&#x5F0F;&#x5F8C;&#x7684;&#x908F;&#x8F2F;&#x9AD4;&#x7684;&#x82B1;&#x62EC;&#x865F;&#x662F;&#x4E0D;&#x80FD;&#x7701;&#x7565;&#x7684;&#x3002;&#x5982;&#x679C;&#x9700;&#x8981;&#x7684;&#x8A71;&#xFF0C;&#x50CF;&#x5176;&#x5B83;&#x8A9E;&#x8A00;&#x4E00;&#x6A23;&#xFF0C;&#x9019;&#x500B;&#x8868;&#x9054;&#x5F0F;&#x4E5F;&#x53EF;&#x4EE5;&#x6709;else&#x90E8;&#x5206;&#xFF0C;&#x9019;&#x90E8;&#x5206;&#x908F;&#x8F2F;&#x6703;&#x5728;if&#x4E2D;&#x7684;&#x689D;&#x4EF6;&#x7D50;&#x679C;&#x7232;false&#x6642;&#x88AB;&#x57F7;&#x884C;&#x3002;</p>
<p>map&#x662F;go&#x8A9E;&#x8A00;&#x5167;&#x7F6E;&#x7684;key/value&#x6578;&#x64DA;&#x7D50;&#x69CB;&#xFF0C;&#x9019;&#x500B;&#x6578;&#x64DA;&#x7D50;&#x69CB;&#x80FD;&#x5920;&#x63D0;&#x4F9B;&#x5E38;&#x6578;&#x6642;&#x9593;&#x7684;&#x5B58;&#x5132;&#x3001;&#x7A6B;&#x53D6;&#x3001;&#x6E2C;&#x8A66;&#x64CD;&#x4F5C;&#x3002;key&#x53EF;&#x4EE5;&#x662F;&#x4EFB;&#x610F;&#x6578;&#x64DA;&#x985E;&#x578B;&#xFF0C;&#x96BB;&#x8981;&#x8A72;&#x985E;&#x578B;&#x80FD;&#x5920;&#x7528;==&#x4F86;&#x9032;&#x884C;&#x6BD4;&#x8F03;&#xFF0C;string&#x662F;&#x6700;&#x5E38;&#x7528;&#x7684;key&#x985E;&#x578B;&#x3002;&#x800C;value&#x985E;&#x578B;&#x7684;&#x8303;&#x570D;&#x5C31;&#x66F4;&#x5927;&#x4E86;&#xFF0C;&#x57FA;&#x672C;&#x4E0A;&#x4EC0;&#x9EBD;&#x985E;&#x578B;&#x90FD;&#x662F;&#x53EF;&#x4EE5;&#x7684;&#x3002;&#x9019;&#x500B;&#x4F8B;&#x5B50;&#x4E2D;&#x7684;key&#x90FD;&#x662F;string&#x985E;&#x578B;&#xFF0C;value&#x7528;&#x7684;&#x662F;int&#x985E;&#x578B;&#x3002;&#x6211;&#x5011;&#x7528;&#x5167;&#x7F6E;make&#x51FD;&#x6578;&#x4F86;&#x5275;&#x5EFA;&#x4E00;&#x500B;&#x7A7A;&#x7684;map&#xFF0C;&#x7576;&#x7136;&#x4E86;&#xFF0C;make&#x65B9;&#x6CD5;&#x9084;&#x53EF;&#x4EE5;&#x6709;&#x522B;&#x7684;&#x7528;&#x8655;&#x3002;&#x5728;4.3&#x7AE0;&#x4E2D;&#x6211;&#x5011;&#x9084;&#x6703;&#x5C0D;map&#x9032;&#x884C;&#x66F4;&#x6DF1;&#x5EA6;&#x7684;&#x8A0E;&#x8AD6;&#x3002;</p>
<p>&#x548C;&#x6211;&#x5011;&#x524D;&#x9762;&#x63D0;&#x5230;&#x7684;for&#x5FAA;&#x74B0;&#x4E00;&#x6A23;&#xFF0C;&#x5728;if&#x689D;&#x4EF6;&#x7684;&#x5169;&#x908A;&#xFF0C;&#x6211;&#x5011;&#x4E5F;&#x4E0D;&#x9700;&#x8981;&#x52A0;&#x62EC;&#x865F;&#xFF0C;&#x4F46;&#x662F;if&#x8868;&#x9054;&#x5F0F;&#x5F8C;&#x7684;&#x908F;&#x8F2F;&#x9AD4;&#x7684;&#x82B1;&#x62EC;&#x865F;&#x662F;&#x4E0D;&#x80FD;&#x7701;&#x7565;&#x7684;&#x3002;&#x5982;&#x679C;&#x9700;&#x8981;&#x7684;&#x8A71;&#xFF0C;&#x50CF;&#x5176;&#x5B83;&#x7DE8;&#x7A0B;&#x8A9E;&#x8A00;&#x4E00;&#x6A23;&#xFF0C;&#x9019;&#x500B;if&#x8868;&#x9054;&#x5F0F;&#x4E5F;&#x53EF;&#x4EE5;&#x6709;else&#x90E8;&#x5206;&#xFF0C;&#x9019;&#x90E8;&#x5206;&#x908F;&#x8F2F;&#x6703;&#x5728;if&#x4E2D;&#x7684;&#x689D;&#x4EF6;&#x7D50;&#x679C;&#x7232;false&#x6642;&#x88AB;&#x57F7;&#x884C;&#x3002;</p>
<p>map&#x662F;Go&#x8A9E;&#x8A00;&#x5167;&#x7F6E;&#x7684;key/value&#x578B;&#x6578;&#x64DA;&#x7D50;&#x69CB;&#xFF0C;&#x9019;&#x500B;&#x6578;&#x64DA;&#x7D50;&#x69CB;&#x80FD;&#x5920;&#x63D0;&#x4F9B;&#x5E38;&#x6578;&#x6642;&#x9593;&#x7684;&#x5B58;&#x5132;&#x3001;&#x7A6B;&#x53D6;&#x3001;&#x6E2C;&#x8A66;&#x64CD;&#x4F5C;&#x3002;key&#x53EF;&#x4EE5;&#x662F;&#x4EFB;&#x610F;&#x6578;&#x64DA;&#x985E;&#x578B;&#xFF0C;&#x96BB;&#x8981;&#x8A72;&#x985E;&#x578B;&#x80FD;&#x5920;&#x7528;==&#x904B;&#x7B97;&#x7B26;&#x4F86;&#x9032;&#x884C;&#x6BD4;&#x8F03;&#xFF0C;string&#x662F;&#x6700;&#x5E38;&#x7528;&#x7684;key&#x985E;&#x578B;&#x3002;&#x800C;value&#x985E;&#x578B;&#x7684;&#x8303;&#x570D;&#x5C31;&#x66F4;&#x5927;&#x4E86;&#xFF0C;&#x57FA;&#x672C;&#x4E0A;&#x4EC0;&#x9EBD;&#x985E;&#x578B;&#x90FD;&#x662F;&#x53EF;&#x4EE5;&#x7684;&#x3002;&#x9019;&#x500B;&#x4F8B;&#x5B50;&#x4E2D;&#x7684;key&#x90FD;&#x662F;string&#x985E;&#x578B;&#xFF0C;value&#x7528;&#x7684;&#x662F;int&#x985E;&#x578B;&#x3002;&#x6211;&#x5011;&#x7528;&#x5167;&#x7F6E;make&#x51FD;&#x6578;&#x4F86;&#x5275;&#x5EFA;&#x4E00;&#x500B;&#x7A7A;&#x7684;map&#xFF0C;&#x7576;&#x7136;&#x4E86;&#xFF0C;make&#x65B9;&#x6CD5;&#x9084;&#x53EF;&#x4EE5;&#x6709;&#x522B;&#x7684;&#x7528;&#x8655;&#x3002;&#x5728;4.3&#x7AE0;&#x4E2D;&#x6211;&#x5011;&#x9084;&#x6703;&#x5C0D;map&#x9032;&#x884C;&#x66F4;&#x6DF1;&#x5165;&#x7684;&#x8A0E;&#x8AD6;&#x3002;</p>
<p>dup&#x7A0B;&#x5E8F;&#x6BCF;&#x6B21;&#x8B80;&#x53D6;&#x8F38;&#x5165;&#x7684;&#x4E00;&#x884C;&#xFF0C;&#x9019;&#x4E00;&#x884C;&#x7684;&#x5167;&#x5BB9;&#x6703;&#x88AB;&#x7576;&#x505A;&#x4E00;&#x500B;map&#x7684;key&#xFF0C;&#x800C;&#x5176;value&#x503C;&#x6703;&#x88AB;+1&#x3002;counts[input.Text()]++&#x9019;&#x500B;&#x8A9E;&#x53E5;&#x548C;&#x4E0B;&#x9762;&#x7684;&#x5169;&#x53E5;&#x662F;&#x7B49;&#x50F9;&#x7684;&#xFF1A;</p>
<pre><code class="lang-go">line := input.Text()
counts[line] = counts[line] + <span class="hljs-number">1</span>
</code></pre>
<p>&#x7576;&#x7136;&#x4E86;&#xFF0C;&#x5728;&#x9019;&#x500B;&#x4F8B;&#x5B50;&#x91CC;&#x6211;&#x5011;&#x4F75;&#x4E0D;&#x7528;&#x64D4;&#x5FC3;map&#x5728;&#x6C92;&#x6709;&#x7576;&#x524D;&#x7684;key&#x6642;&#x5C31;&#x5C0D;&#x5176;&#x9032;&#x884C;++&#x64CD;&#x4F5C;&#x6703;&#x6709;&#x4EC0;&#x9EBD;&#x554F;&#x984C;&#xFF0C;&#x56E0;&#x7232;go&#x8A9E;&#x8A00;&#x5728;&#x78B0;&#x5230;&#x9019;&#x7A2E;&#x60C5;&#x6CC1;&#x6642;&#xFF0C;&#x6703;&#x81EA;&#x52D5;&#x5C07;&#x5176;&#x521D;&#x59CB;&#x5316;&#x7232;0&#xFF0C;&#x7136;&#x5F8C;&#x518D;&#x9032;&#x884C;&#x64CD;&#x4F5C;&#x3002;</p>
<p>&#x5728;&#x9019;&#x91CC;&#x6211;&#x5011;&#x53C8;&#x7528;&#x4E86;&#x4E00;&#x500B;range&#x7684;&#x5FAA;&#x74B0;&#x4F86;&#x6253;&#x5370;&#x7D50;&#x679C;&#xFF0C;&#x9019;&#x6B21;range&#x662F;&#x88AB;&#x7528;&#x5728;map&#x9019;&#x500B;&#x6578;&#x64DA;&#x7D50;&#x679C;&#x4E0A;&#x3002;&#x9019;&#x4E00;&#x6B21;&#x7684;&#x60C5;&#x6CC1;&#x548C;&#x4E0A;&#x6B21;&#x6BD4;&#x8F03;&#x985E;&#x578B;&#xFF0C;range&#x6703;&#x8FD4;&#x8FF4;&#x5169;&#x500B;&#x503C;&#xFF0C;&#x4E00;&#x500B;key&#x548C;&#x5728;map&#x5C0D;&#x61C9;&#x9019;&#x500B;key&#x7684;value&#x3002;&#x5C0D;map&#x9032;&#x884C;range&#x5FAA;&#x74B0;&#x6642;&#xFF0C;&#x5176;&#x9806;&#x5E8F;&#x662F;&#x4E0D;&#x78BA;&#x5B9A;&#x7684;&#xFF0C;&#x5F9E;&#x5BE6;&#x8E10;&#x4F86;&#x770B;&#xFF0C;&#x5F88;&#x53EF;&#x80FD;&#x6BCF;&#x6B21;&#x904B;&#x884C;&#x90FD;&#x6703;&#x6709;&#x4E0D;&#x4E00;&#x6A23;&#x7684;&#x7D50;&#x679C;(&#x8B6F;&#x8A3B;&#xFF1A;&#x9019;&#x662F;go&#x7684;&#x8A2D;&#x8A08;&#x8005;&#x6709;&#x610F;&#x7232;&#x4E4B;&#x7684;&#xFF0C;&#x56E0;&#x7232;&#x5176;&#x5E95;&#x5C64;&#x5BE6;&#x73FE;&#x4E0D;&#x4FDD;&#x8B49;&#x63D2;&#x5165;&#x9806;&#x5E8F;&#x548C;&#x904D;&#x6B77;&#x9806;&#x5E8F;&#x4E00;&#x81F4;&#xFF0C;&#x800C;&#x5E0C;&#x671B;&#x7A0B;&#x5E8F;&#x54E1;&#x4E0D;&#x8981;&#x4F9D;&#x8CF4;&#x904D;&#x6B77;&#x6642;&#x7684;&#x9806;&#x5E8F;&#xFF0C;&#x6240;&#x4EE5;&#x69A6;&#x8106;&#x76F4;&#x63A5;&#x5728;&#x904D;&#x6B77;&#x7684;&#x6642;&#x5019;&#x505A;&#x4E86;&#x96A8;&#x6A5F;&#x5316;&#x8655;&#x7406;&#xFF0C;&#x9189;&#x4E86;)&#xFF0C;&#x4F86;&#x907F;&#x514D;&#x7A0B;&#x5E8F;&#x54E1;&#x5728;&#x696D;&#x52D9;&#x4E2D;&#x4F9D;&#x8CF4;&#x904D;&#x6B77;&#x6642;&#x7684;&#x9806;&#x5E8F;&#x3002;</p>
<p>&#x7576;&#x7136;&#x4E86;&#xFF0C;&#x5728;&#x9019;&#x500B;&#x4F8B;&#x5B50;&#x91CC;&#x6211;&#x5011;&#x4F75;&#x4E0D;&#x7528;&#x64D4;&#x5FC3;map&#x5728;&#x6C92;&#x6709;&#x7576;&#x524D;&#x7684;key&#x6642;&#x5C31;&#x5C0D;&#x5176;&#x9032;&#x884C;++&#x64CD;&#x4F5C;&#x6703;&#x6709;&#x4EC0;&#x9EBD;&#x554F;&#x984C;&#xFF0C;&#x56E0;&#x7232;Go&#x8A9E;&#x8A00;&#x5728;&#x78B0;&#x5230;&#x9019;&#x7A2E;&#x60C5;&#x6CC1;&#x6642;&#xFF0C;&#x6703;&#x81EA;&#x52D5;&#x5C07;&#x5176;&#x521D;&#x59CB;&#x5316;&#x7232;0&#xFF0C;&#x7136;&#x5F8C;&#x518D;&#x9032;&#x884C;&#x64CD;&#x4F5C;&#x3002;</p>
<p>&#x5728;&#x9019;&#x91CC;&#x6211;&#x5011;&#x53C8;&#x7528;&#x4E86;&#x4E00;&#x500B;range&#x7684;&#x5FAA;&#x74B0;&#x4F86;&#x6253;&#x5370;&#x7D50;&#x679C;&#xFF0C;&#x9019;&#x6B21;range&#x662F;&#x88AB;&#x7528;&#x5728;map&#x9019;&#x500B;&#x6578;&#x64DA;&#x7D50;&#x69CB;&#x4E4B;&#x4E0A;&#x3002;&#x9019;&#x4E00;&#x6B21;&#x7684;&#x60C5;&#x6CC1;&#x548C;&#x4E0A;&#x6B21;&#x6BD4;&#x8F03;&#x985E;&#x4F3C;&#xFF0C;range&#x6703;&#x8FD4;&#x8FF4;&#x5169;&#x500B;&#x503C;&#xFF0C;&#x4E00;&#x500B;key&#x548C;&#x5728;map&#x5C0D;&#x61C9;&#x9019;&#x500B;key&#x7684;value&#x3002;&#x5C0D;map&#x9032;&#x884C;range&#x5FAA;&#x74B0;&#x6642;&#xFF0C;&#x5176;&#x8FED;&#x4EE3;&#x9806;&#x5E8F;&#x662F;&#x4E0D;&#x78BA;&#x5B9A;&#x7684;&#xFF0C;&#x5F9E;&#x5BE6;&#x8E10;&#x4F86;&#x770B;&#xFF0C;&#x5F88;&#x53EF;&#x80FD;&#x6BCF;&#x6B21;&#x904B;&#x884C;&#x90FD;&#x6703;&#x6709;&#x4E0D;&#x4E00;&#x6A23;&#x7684;&#x7D50;&#x679C;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;&#x9019;&#x662F;Go&#x8A9E;&#x8A00;&#x7684;&#x8A2D;&#x8A08;&#x8005;&#x6709;&#x610F;&#x7232;&#x4E4B;&#x7684;&#xFF0C;&#x56E0;&#x7232;&#x5176;&#x5E95;&#x5C64;&#x5BE6;&#x73FE;&#x4E0D;&#x4FDD;&#x8B49;&#x63D2;&#x5165;&#x9806;&#x5E8F;&#x548C;&#x904D;&#x6B77;&#x9806;&#x5E8F;&#x4E00;&#x81F4;&#xFF0C;&#x4E5F;&#x5E0C;&#x671B;&#x7A0B;&#x5E8F;&#x54E1;&#x4E0D;&#x8981;&#x4F9D;&#x8CF4;&#x904D;&#x6B77;&#x6642;&#x7684;&#x9806;&#x5E8F;&#xFF0C;&#x6240;&#x4EE5;&#x69A6;&#x8106;&#x76F4;&#x63A5;&#x5728;&#x904D;&#x6B77;&#x7684;&#x6642;&#x5019;&#x505A;&#x4E86;&#x96A8;&#x6A5F;&#x5316;&#x8655;&#x7406;&#xFF0C;&#x9189;&#x4E86;&#x3002;&#x88DC;&#x5145;&#xFF1A;&#x597D;&#x50CF;&#x8AAC;&#x96A8;&#x6A5F;&#x5E8F;&#x53EF;&#x4EE5;&#x9632;&#x6B62;&#x67D0;&#x7A2E;&#x985E;&#x578B;&#x7684;&#x653B;&#x64CA;&#xFF0C;&#x96D6;&#x7136;&#x4E0D;&#x592A;&#x660E;&#x767D;&#xFF0C;&#x4F46;&#x662F;&#x611F;&#x89BA;&#x9084;&#x883B;&#x53B2;&#x5BB3;&#x7684;&#xFF09;&#xFF0C;&#x4F86;&#x907F;&#x514D;&#x7A0B;&#x5E8F;&#x54E1;&#x5728;&#x696D;&#x52D9;&#x4E2D;&#x4F9D;&#x8CF4;&#x904D;&#x6B77;&#x6642;&#x7684;&#x9806;&#x5E8F;&#x3002;</p>
<p>&#x7136;&#x5F8C;&#x8F2A;&#x5230;&#x6211;&#x5011;&#x4F8B;&#x5B50;&#x4E2D;&#x7684;bufio&#x9019;&#x500B;package&#x4E86;&#xFF0C;&#x9019;&#x500B;package&#x4E3B;&#x8981;&#x7684;&#x76EE;&#x7684;&#x662F;&#x5E6B;&#x52A9;&#x6211;&#x5011;&#x66F4;&#x65B9;&#x4FBF;&#x6709;&#x6548;&#x5730;&#x8655;&#x7406;&#x7A0B;&#x5E8F;&#x7684;&#x8F38;&#x5165;&#x548C;&#x8F38;&#x9F63;&#x3002;&#x800C;&#x9019;&#x500B;&#x5305;&#x6700;&#x6709;&#x7528;&#x7684;&#x4E00;&#x500B;&#x7279;&#x6027;&#x5C31;&#x662F;&#x5176;&#x4E2D;&#x7684;&#x4E00;&#x500B;Scanner&#x985E;&#x578B;&#xFF0C;&#x7528;&#x5B83;&#x53EF;&#x4EE5;&#x7C21;&#x55AE;&#x5730;&#x63A5;&#x6536;&#x8F38;&#x5165;&#xFF0C;&#x6216;&#x8005;&#x628A;&#x8F38;&#x5165;&#x6253;&#x6563;&#x6210;&#x884C;&#x6216;&#x8005;&#x55AE;&#x8A5E;&#xFF1B;&#x9019;&#x500B;&#x985E;&#x578B;&#x901A;&#x5E38;&#x662F;&#x8655;&#x7406;&#x884C;&#x5F62;&#x5F0F;&#x7684;&#x8F38;&#x5165;&#x6700;&#x7C21;&#x55AE;&#x7684;&#x65B9;&#x6CD5;&#x4E86;&#x3002;</p>
<p>&#x672C;&#x7A0B;&#x5E8F;&#x4E2D;&#x7528;&#x4E86;&#x4E00;&#x500B;&#x77ED;&#x8B8A;&#x91CF;&#x8072;&#x660E;&#xFF0C;&#x4F86;&#x5275;&#x5EFA;&#x4E00;&#x500B;buffio.Scanner&#x5C0D;&#x8C61;&#xFF1A;</p>
<pre><code>input := bufio.NewScanner(os.Stdin)
</code></pre><p>scanner&#x5C0D;&#x8C61;&#x53EF;&#x4EE5;&#x5F9E;&#x7A0B;&#x5E8F;&#x7684;&#x6A19;&#x6E96;&#x8F38;&#x5165;&#x4E2D;&#x8B80;&#x53D6;&#x5167;&#x5BB9;&#x3002;&#x5C0D;input.Scanner&#x7684;&#x6BCF;&#x4E00;&#x6B21;&#x8ABF;&#x7528;&#x90FD;&#x6703;&#x8ABF;&#x5165;&#x4E00;&#x500B;&#x65B0;&#x884C;&#xFF0C;&#x4F75;&#x4E14;&#x6703;&#x81EA;&#x52D5;&#x5C07;&#x5176;&#x884C;&#x672B;&#x7684;&#x63DB;&#x884C;&#x7B26;&#x53BB;&#x6389;&#xFF1B;&#x5176;&#x7D50;&#x679C;&#x53EF;&#x4EE5;&#x7528;input.Text()&#x5F97;&#x5230;&#x3002;Scan&#x65B9;&#x6CD5;&#x5728;&#x8B80;&#x5230;&#x4E86;&#x65B0;&#x884C;&#x7684;&#x6642;&#x5019;&#x6703;&#x8FD4;&#x8FF4;true&#xFF0C;&#x800C;&#x5728;&#x6C92;&#x6709;&#x65B0;&#x884C;&#x88AB;&#x8B80;&#x5165;&#x6642;&#xFF0C;&#x6703;&#x8FD4;&#x8FF4;false&#x3002;</p>
<p>&#x4F8B;&#x5B50;&#x4E2D;&#x9084;&#x6709;&#x4E00;&#x500B;fmt.Printf&#xFF0C;&#x9019;&#x500B;&#x51FD;&#x6578;&#x548C;C&#x7E6B;&#x7684;&#x5176;&#x5B83;&#x8A9E;&#x8A00;&#x91CC;&#x7684;&#x90A3;&#x500B;printf&#x51FD;&#x6578;&#x5DEE;&#x4E0D;&#x591A;&#xFF0C;&#x90FD;&#x662F;&#x683C;&#x5F0F;&#x5316;&#x8F38;&#x9F63;&#x7684;&#x65B9;&#x6CD5;&#x3002;fmt.Printf&#x7684;&#x7B2C;&#x4E00;&#x500B;&#x53C3;&#x6578;&#x537D;&#x662F;&#x8F38;&#x9F63;&#x5167;&#x5BB9;&#x7684;&#x683C;&#x5F0F;&#x898F;&#x7D04;&#xFF0C;&#x6BCF;&#x4E00;&#x500B;&#x53C3;&#x6578;&#x5982;&#x679C;&#x683C;&#x5F0F;&#x5316;&#x662F;&#x53D6;&#x6C7A;&#x65BC;&#x5728;&#x683C;&#x5F0F;&#x5316;&#x5B57;&#x7B26;&#x4E32;&#x91CC;&#x9F63;&#x73FE;&#x7684;&#x201C;&#x8F49;&#x63DB;&#x5B57;&#x7B26;&#x201D;&#xFF0C;&#x9019;&#x500B;&#x5B57;&#x7B26;&#x4E32;&#x662F;&#x8DDF;&#x7740;%&#x865F;&#x5F8C;&#x7684;&#x4E00;&#x500B;&#x5B57;&#x6BCD;&#x3002;&#x6BD4;&#x5982;%d&#x8868;&#x793A;&#x4EE5;&#x4E00;&#x500B;&#x6574;&#x6578;&#x7684;&#x5F62;&#x5F0F;&#x4F86;&#x6253;&#x5370;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#xFF0C;&#x800C;%s&#xFF0C;&#x5247;&#x8868;&#x793A;&#x4EE5;string&#x5F62;&#x5F0F;&#x4F86;&#x6253;&#x5370;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#x3002;</p>
<p>Printf&#x6709;&#x4E00;&#x5927;&#x5806;&#x9019;&#x7A2E;&#x8F49;&#x63DB;&#xFF0C;Go&#x7A0B;&#x5E8F;&#x54E1;&#x628A;&#x9019;&#x4E9B;&#x53EB;&#x505A;verb(&#x52D5;&#x8A5E;)&#x3002;&#x4E0B;&#x9762;&#x7684;&#x8868;&#x683C;&#x5217;&#x9F63;&#x4E86;&#x5E38;&#x7528;&#x7684;&#x52D5;&#x8A5E;&#xFF0C;&#x7576;&#x7136;&#x4E86;&#x4E0D;&#x662F;&#x5168;&#x90E8;&#xFF0C;&#x4F46;&#x57FA;&#x672C;&#x4E5F;&#x5920;&#x7528;&#x4E86;&#x3002;</p>
<p>&#x4F8B;&#x5B50;&#x4E2D;&#x9084;&#x6709;&#x4E00;&#x500B;fmt.Printf&#xFF0C;&#x9019;&#x500B;&#x51FD;&#x6578;&#x548C;C&#x7E6B;&#x7684;&#x5176;&#x5B83;&#x8A9E;&#x8A00;&#x91CC;&#x7684;&#x90A3;&#x500B;printf&#x51FD;&#x6578;&#x5DEE;&#x4E0D;&#x591A;&#xFF0C;&#x90FD;&#x662F;&#x683C;&#x5F0F;&#x5316;&#x8F38;&#x9F63;&#x7684;&#x65B9;&#x6CD5;&#x3002;fmt.Printf&#x7684;&#x7B2C;&#x4E00;&#x500B;&#x53C3;&#x6578;&#x537D;&#x662F;&#x8F38;&#x9F63;&#x5167;&#x5BB9;&#x7684;&#x683C;&#x5F0F;&#x898F;&#x7D04;&#xFF0C;&#x6BCF;&#x4E00;&#x500B;&#x53C3;&#x6578;&#x5982;&#x4F55;&#x683C;&#x5F0F;&#x5316;&#x662F;&#x53D6;&#x6C7A;&#x65BC;&#x5728;&#x683C;&#x5F0F;&#x5316;&#x5B57;&#x7B26;&#x4E32;&#x91CC;&#x9F63;&#x73FE;&#x7684;&#x201C;&#x8F49;&#x63DB;&#x5B57;&#x7B26;&#x201D;&#xFF0C;&#x9019;&#x500B;&#x5B57;&#x7B26;&#x4E32;&#x662F;&#x8DDF;&#x7740;%&#x865F;&#x5F8C;&#x7684;&#x4E00;&#x500B;&#x5B57;&#x6BCD;&#x3002;&#x6BD4;&#x5982;%d&#x8868;&#x793A;&#x4EE5;&#x4E00;&#x500B;&#x6574;&#x6578;&#x7684;&#x5F62;&#x5F0F;&#x4F86;&#x6253;&#x5370;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#xFF0C;&#x800C;%s&#xFF0C;&#x5247;&#x8868;&#x793A;&#x4EE5;string&#x5F62;&#x5F0F;&#x4F86;&#x6253;&#x5370;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#x3002;</p>
<p>Printf&#x6709;&#x4E00;&#x5927;&#x5806;&#x9019;&#x7A2E;&#x8F49;&#x63DB;&#xFF0C;Go&#x8A9E;&#x8A00;&#x7A0B;&#x5E8F;&#x54E1;&#x628A;&#x9019;&#x4E9B;&#x53EB;&#x505A;verb&#xFF08;&#x52D5;&#x8A5E;&#xFF09;&#x3002;&#x4E0B;&#x9762;&#x7684;&#x8868;&#x683C;&#x5217;&#x9F63;&#x4E86;&#x5E38;&#x7528;&#x7684;&#x52D5;&#x8A5E;&#xFF0C;&#x7576;&#x7136;&#x4E86;&#x4E0D;&#x662F;&#x5168;&#x90E8;&#xFF0C;&#x4F46;&#x57FA;&#x672C;&#x4E5F;&#x5920;&#x7528;&#x4E86;&#x3002;</p>
<pre><code>%d int&#x8B8A;&#x91CF;
%x, %o, %b &#x5206;&#x522B;&#x7232;16&#x9032;&#x88FD;&#xFF0C;8&#x9032;&#x88FD;&#xFF0C;2&#x9032;&#x88FD;&#x5F62;&#x5F0F;&#x7684;int
%f, %g, %e &#x6D6E;&#x9EDE;&#x6578;&#xFF1A; 3.141593 3.141592653589793 3.141593e+00
%t &#x5E03;&#x723E;&#x8B8A;&#x91CF;&#xFF1A;true &#x6216; false
%c rune (Unicode code point)&#xFF0C;go&#x8A9E;&#x8A00;&#x91CC;&#x7279;&#x6709;&#x7684;Unicode&#x5B57;&#x7B26;&#x985E;&#x578B;
%c rune (Unicode&#x78BC;&#x9EDE;)&#xFF0C;Go&#x8A9E;&#x8A00;&#x91CC;&#x7279;&#x6709;&#x7684;Unicode&#x5B57;&#x7B26;&#x985E;&#x578B;
%s string
%q quoted string &quot;abc&quot; or rune &apos;c&apos;
%q &#x5E36;&#x96D9;&#x5F15;&#x865F;&#x7684;&#x5B57;&#x7B26;&#x4E32; &quot;abc&quot; &#x6216; &#x5E36;&#x55AE;&#x5F15;&#x865F;&#x7684; rune &apos;c&apos;
%v &#x6703;&#x5C07;&#x4EFB;&#x610F;&#x8B8A;&#x91CF;&#x4EE5;&#x6613;&#x8B80;&#x7684;&#x5F62;&#x5F0F;&#x6253;&#x5370;&#x9F63;&#x4F86;
%T &#x6253;&#x5370;&#x8B8A;&#x91CF;&#x7684;&#x985E;&#x578B;
%% &#x5B57;&#x7B26;&#x578B;&#x767E;&#x5206;&#x6BD4;&#x6A19;&#x8A8C;(&#x4E0D;&#x78BA;&#x5B9A;) literal percent sign (no operand)
</code></pre><p>dup1&#x4E2D;&#x7684;&#x7A0B;&#x5E8F;&#x9084;&#x5305;&#x542B;&#x4E86;&#x4E00;&#x500B;\t&#x548C;\n&#x7684;&#x683C;&#x5F0F;&#x5316;&#x5B57;&#x7B26;&#x4E32;&#x3002;&#x5728;&#x5B57;&#x7B26;&#x4E32;&#x4E2D;&#x6703;&#x4EE5;&#x9019;&#x4E9B;&#x7279;&#x6B8A;&#x7684;&#x8F49;&#x7FA9;&#x5B57;&#x7B26;&#x4F86;&#x8868;&#x793A;&#x4E0D;&#x53EF;&#x898B;&#x5B57;&#x7B26;&#x3002;Printf&#x9ED8;&#x8A8D;&#x4E0D;&#x6703;&#x5728;&#x8F38;&#x9F63;&#x5167;&#x5BB9;&#x5F8C;&#x52A0;&#x4E0A;&#x63DB;&#x884C;&#x7B26;&#x3002;&#x6309;&#x7167;&#x6163;&#x4F8B;&#xFF0C;&#x7528;&#x4F86;&#x683C;&#x5F0F;&#x5316;&#x7684;&#x51FD;&#x6578;&#x90FD;&#x6703;&#x5728;&#x672B;&#x5C3E;&#x4EE5;f&#x5B57;&#x6BCD;&#x7D50;&#x5C3E;&#xFF0C;&#x6BD4;&#x5982;log.Printf&#xFF0C;fmt.Errorf&#xFF0C;&#x540C;&#x6642;&#x9084;&#x6709;&#x4E00;&#x7E6B;&#x5217;&#x5C0D;&#x61C9;&#x4EE5;ln&#x7D50;&#x5C3E;&#x7684;&#x51FD;&#x6578;&#xFF0C;&#x9019;&#x4E9B;&#x51FD;&#x6578;&#x9ED8;&#x8A8D;&#x4EE5;%v&#x4F86;&#x683C;&#x5F0F;&#x5316;&#x4ED6;&#x5011;&#x7684;&#x53C3;&#x6578;&#xFF0C;&#x4F75;&#x4E14;&#x6703;&#x5728;&#x8F38;&#x9F63;&#x7D50;&#x675F;&#x5F8C;&#x5728;&#x6700;&#x5F8C;&#x81EA;&#x52D5;&#x52A0;&#x4E0A;&#x4E00;&#x500B;&#x63DB;&#x884C;&#x7B26;&#x3002;</p>
%% &#x5B57;&#x7B26;&#x578B;&#x767E;&#x5206;&#x6BD4;&#x6A19;&#x8A8C;&#xFF08;%&#x7B26;&#x865F;&#x672C;&#x8EAB;&#xFF0C;&#x6C92;&#x6709;&#x5176;&#x4ED6;&#x64CD;&#x4F5C;&#xFF09;
</code></pre><p>dup1&#x4E2D;&#x7684;&#x7A0B;&#x5E8F;&#x9084;&#x5305;&#x542B;&#x4E86;&#x4E00;&#x500B;\t&#x548C;\n&#x7684;&#x683C;&#x5F0F;&#x5316;&#x5B57;&#x7B26;&#x4E32;&#x3002;&#x5728;&#x5B57;&#x7B26;&#x4E32;&#x4E2D;&#x6703;&#x4EE5;&#x9019;&#x4E9B;&#x7279;&#x6B8A;&#x7684;&#x8F49;&#x7FA9;&#x5B57;&#x7B26;&#x4F86;&#x8868;&#x793A;&#x4E0D;&#x53EF;&#x898B;&#x5B57;&#x7B26;&#x3002;Printf&#x9ED8;&#x8A8D;&#x4E0D;&#x6703;&#x5728;&#x8F38;&#x9F63;&#x5167;&#x5BB9;&#x5F8C;&#x52A0;&#x4E0A;&#x63DB;&#x884C;&#x7B26;&#x3002;&#x6309;&#x7167;&#x6163;&#x4F8B;&#xFF0C;&#x7528;&#x4F86;&#x683C;&#x5F0F;&#x5316;&#x7684;&#x51FD;&#x6578;&#x90FD;&#x6703;&#x5728;&#x672B;&#x5C3E;&#x4EE5;f&#x5B57;&#x6BCD;&#x7D50;&#x5C3E;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;f&#x5F8C;&#x7DB4;&#x5C0D;&#x61C9;format&#x6216;fmt&#x7E2E;&#x5BEB;&#xFF09;&#xFF0C;&#x6BD4;&#x5982;log.Printf&#xFF0C;fmt.Errorf&#xFF0C;&#x540C;&#x6642;&#x9084;&#x6709;&#x4E00;&#x7E6B;&#x5217;&#x5C0D;&#x61C9;&#x4EE5;ln&#x7D50;&#x5C3E;&#x7684;&#x51FD;&#x6578;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;ln&#x5F8C;&#x7DB4;&#x5C0D;&#x61C9;line&#x7E2E;&#x5BEB;&#xFF09;&#xFF0C;&#x9019;&#x4E9B;&#x51FD;&#x6578;&#x9ED8;&#x8A8D;&#x4EE5;%v&#x4F86;&#x683C;&#x5F0F;&#x5316;&#x4ED6;&#x5011;&#x7684;&#x53C3;&#x6578;&#xFF0C;&#x4F75;&#x4E14;&#x6703;&#x5728;&#x8F38;&#x9F63;&#x7D50;&#x675F;&#x5F8C;&#x5728;&#x6700;&#x5F8C;&#x81EA;&#x52D5;&#x52A0;&#x4E0A;&#x4E00;&#x500B;&#x63DB;&#x884C;&#x7B26;&#x3002;</p>
<p>&#x8A31;&#x591A;&#x7A0B;&#x5E8F;&#x5F9E;&#x6A19;&#x6E96;&#x8F38;&#x5165;&#x4E2D;&#x8B80;&#x53D6;&#x6578;&#x64DA;&#xFF0C;&#x50CF;&#x4E0A;&#x9762;&#x7684;&#x4F8B;&#x5B50;&#x90A3;&#x6A23;&#x3002;&#x9664;&#x6B64;&#x4E4B;&#x5916;&#xFF0C;&#x9084;&#x53EF;&#x80FD;&#x5F9E;&#x4E00;&#x7E6B;&#x5217;&#x7684;&#x6587;&#x4EF6;&#x4E2D;&#x8B80;&#x53D6;&#x3002;&#x4E0B;&#x4E00;&#x500B;dup&#x7A0B;&#x5E8F;&#x5C31;&#x662F;&#x5F9E;&#x6A19;&#x6E96;&#x8F38;&#x5165;&#x4E2D;&#x8B80;&#x5230;&#x4E00;&#x4E9B;&#x6587;&#x4EF6;&#x540D;&#xFF0C;&#x7528;os.Open&#x51FD;&#x6578;&#x4F86;&#x6253;&#x958B;&#x6BCF;&#x4E00;&#x500B;&#x6587;&#x4EF6;&#x7A6B;&#x53D6;&#x5167;&#x5BB9;&#x7684;&#x3002;</p>
<pre><code class="lang-go">gopl.io/ch1/dup2
<span class="hljs-comment">// Dup2 prints the count and text of lines that appear more than once</span>
@@ -2120,12 +2120,12 @@ counts[line] = counts[line] + <span class="hljs-number">1</span>
}
</code></pre>
<p>os.Open&#x51FD;&#x6578;&#x6703;&#x8FD4;&#x8FF4;&#x5169;&#x500B;&#x503C;&#x3002;&#x7B2C;&#x4E00;&#x500B;&#x503C;&#x662F;&#x4E00;&#x500B;&#x6253;&#x958B;&#x7684;&#x6587;&#x4EF6;&#x985E;&#x578B;(*os.File)&#xFF0C;&#x9019;&#x500B;&#x5C0D;&#x8C61;&#x5728;&#x4E0B;&#x9762;&#x7684;&#x7A0B;&#x5E8F;&#x4E2D;&#x88AB;Scanner&#x8B80;&#x53D6;&#x3002;</p>
<p>os.Open&#x8FD4;&#x8FF4;&#x7684;&#x7B2C;&#x4E8C;&#x500B;&#x503C;&#x662F;&#x4E00;&#x500B;go&#x5167;&#x7F6E;&#x7684;error&#x985E;&#x578B;&#x3002;&#x5982;&#x679C;&#x9019;&#x500B;error&#x548C;&#x5167;&#x7F6E;&#x503C;&#x7684;nil(&#x8B6F;&#x8A3B;&#xFF1A;&#x76F8;&#x7576;&#x65BC;&#x5176;&#x5B83;&#x8A9E;&#x8A00;&#x91CC;&#x7684;NULL)&#x76F8;&#x7B49;&#x7684;&#x8A71;&#xFF0C;&#x8AAC;&#x660E;&#x6587;&#x4EF6;&#x88AB;&#x6210;&#x529F;&#x7684;&#x6253;&#x958B;&#x4E86;&#x3002;&#x4E4B;&#x5F8C;&#x6587;&#x4EF6;&#x88AB;&#x8B80;&#x53D6;&#xFF0C;&#x4E00;&#x76F4;&#x5230;&#x6587;&#x4EF6;&#x7684;&#x6700;&#x5F8C;&#xFF0C;Close&#x51FD;&#x6578;&#x95DC;&#x9589;&#x8A72;&#x6587;&#x4EF6;&#xFF0C;&#x4F75;&#x91CB;&#x653E;&#x76F8;&#x61C9;&#x7684;&#x5360;&#x7528;&#x4E00;&#x5207;&#x8CC7;&#x6E90;&#x3002;&#x53E6;&#x4E00;&#x65B9;&#x9762;&#xFF0C;&#x5982;&#x679C;err&#x7684;&#x503C;&#x4E0D;&#x662F;nil&#x7684;&#x8A71;&#xFF0C;&#x90A3;&#x8AAC;&#x660E;&#x5728;&#x6253;&#x958B;&#x6587;&#x4EF6;&#x7684;&#x6642;&#x5019;&#x9F63;&#x4E86;&#x67D0;&#x7A2E;&#x932F;&#x8AA4;&#x3002;&#x9019;&#x7A2E;&#x60C5;&#x6CC1;&#x4E0B;&#xFF0C;error&#x985E;&#x578B;&#x7684;&#x503C;&#x6703;&#x63CF;&#x8FF0;&#x5177;&#x9AD4;&#x7684;&#x554F;&#x984C;&#x3002;&#x6211;&#x5011;&#x4F8B;&#x5B50;&#x91CC;&#x7684;&#x7C21;&#x55AE;&#x932F;&#x8AA4;&#x8655;&#x7406;&#x6703;&#x5728;&#x6A19;&#x6E96;&#x932F;&#x8AA4;&#x6D41;&#x4E2D;&#x7528;Fprintf&#x548C;%v&#x4F86;&#x683C;&#x5F0F;&#x5316;&#x8A72;&#x932F;&#x8AA4;&#x5B57;&#x7B26;&#x4E32;&#x3002;&#x7136;&#x5F8C;&#x7E7C;&#x7E8C;&#x8655;&#x7406;&#x4E0B;&#x4E00;&#x500B;&#x6587;&#x4EF6;&#xFF1B;continue&#x8A9E;&#x53E5;&#x6703;&#x76F4;&#x63A5;&#x8DF3;&#x904E;&#x4E4B;&#x5F8C;&#x7684;&#x8A9E;&#x53E5;&#xFF0C;&#x76F4;&#x63A5;&#x958B;&#x59CB;&#x57F7;&#x884C;&#x4E0B;&#x4E00;&#x6B21;&#x5FAA;&#x74B0;&#x3002;</p>
<p>&#x6211;&#x5011;&#x5728;&#x672C;&#x66F8;&#x4E2D;&#x65E9;&#x671F;&#x7684;&#x4F8B;&#x5B50;&#x4E2D;&#x505A;&#x4E86;&#x6BD4;&#x8F03;&#x8A73;&#x76E1;&#x7684;&#x932F;&#x8AA4;&#x8655;&#x7406;&#xFF0C;&#x7576;&#x7136;&#x4E86;&#xFF0C;&#x5728;&#x5BE6;&#x969B;&#x7DE8;&#x78BC;&#x904E;&#x7A0B;&#x4E2D;&#xFF0C;&#x50CF;os.Open&#x9019;&#x985E;&#x7684;&#x51FD;&#x6578;&#x662F;&#x4E00;&#x5B9A;&#x8981;&#x6AA2;&#x67FB;&#x5176;&#x8FD4;&#x8FF4;&#x7684;error&#x503C;&#x7684;&#xFF1B;&#x7232;&#x4E86;&#x6E1B;&#x5C11;&#x4F8B;&#x5B50;&#x7A0B;&#x5E8F;&#x7684;&#x4EE3;&#x78BC;&#x91CF;&#xFF0C;&#x6211;&#x5011;&#x59D1;&#x4E14;&#x7C21;&#x5316;&#x6389;&#x9019;&#x4E9B;&#x4E0D;&#x592A;&#x53EF;&#x80FD;&#x8FD4;&#x8FF4;&#x932F;&#x8AA4;&#x7684;&#x908F;&#x8F2F;&#x3002;&#x5F8C;&#x9762;&#x7684;&#x4F8B;&#x5B50;&#x91CC;&#x6211;&#x5011;&#x6703;&#x8DF3;&#x904E;&#x932F;&#x8AA4;&#x6AA2;&#x67FB;&#x3002;&#x5728;5.4&#x7BC0;&#x4E2D;&#x6211;&#x5011;&#x6703;&#x5C0D;&#x932F;&#x8AA4;&#x8655;&#x7406;&#x505A;&#x66F4;&#x8A73;&#x7D30;&#x7684;&#x95E1;&#x8FF0;&#x3002;</p>
<p>&#x8B80;&#x8005;&#x53EF;&#x4EE5;&#x518D;&#x89C0;&#x5BDF;&#x4E00;&#x4E0B;&#x4E0A;&#x9762;&#x7684;&#x4F8B;&#x5B50;&#xFF0C;&#x6211;&#x5011;&#x7684;countLines&#x51FD;&#x6578;&#x662F;&#x5728;&#x5176;&#x8072;&#x660E;&#x4E4B;&#x524D;&#x5C31;&#x88AB;&#x8ABF;&#x7528;&#x4E86;&#x3002;&#x5728;Go&#x8A9E;&#x8A00;&#x91CC;&#xFF0C;&#x51FD;&#x6578;&#x548C;&#x5305;&#x7D1A;&#x522B;&#x7684;&#x8B8A;&#x91CF;&#x53EF;&#x4EE5;&#x4EE5;&#x4EFB;&#x610F;&#x7684;&#x9806;&#x5E8F;&#x88AB;&#x8072;&#x660E;&#xFF0C;&#x4F75;&#x4E0D;&#x5F71;&#x97FF;&#x5176;&#x88AB;&#x8ABF;&#x7528;&#x3002;(&#x8B6F;&#x8A3B;&#xFF1A;&#x6700;&#x597D;&#x9084;&#x662F;&#x9075;&#x5FAA;&#x4E00;&#x5B9A;&#x7684;&#x898F;&#x8303;)</p>
<p>&#x518D;&#x4F86;&#x8B1B;&#x8B1B;map&#x9019;&#x500B;&#x6578;&#x64DA;&#x7D50;&#x69CB;&#xFF0C;map&#x662F;&#x7528;make&#x51FD;&#x6578;&#x5275;&#x5EFA;&#x7684;&#x6578;&#x64DA;&#x7D50;&#x69CB;&#x7684;&#x4E00;&#x500B;&#x5F15;&#x7528;&#x3002;&#x7576;&#x4E00;&#x500B;map&#x88AB;&#x4F5C;&#x7232;&#x53C3;&#x6578;&#x50B3;&#x905E;&#x7D66;&#x4E00;&#x500B;&#x51FD;&#x6578;&#x6642;&#xFF0C;&#x51FD;&#x6578;&#x63A5;&#x6536;&#x5230;&#x7684;&#x662F;&#x4E00;&#x4EFD;&#x5F15;&#x7528;&#x7684;&#x62F7;&#x8C9D;&#xFF0C;&#x96D6;&#x7136;&#x672C;&#x8EAB;&#x4F75;&#x4E0D;&#x662F;&#x4E00;&#x500B;&#x6771;&#x897F;&#xFF0C;&#x4F46;&#x56E0;&#x7232;&#x4ED6;&#x5011;&#x6307;&#x5411;&#x7684;&#x662F;&#x540C;&#x4E00;&#x584A;&#x6578;&#x64DA;&#x5C0D;&#x8C61;(&#x8B6F;&#x8A3B;&#xFF1A;&#x985E;&#x4F3C;&#x65BC;C&#x8279;&#x91CC;&#x7684;&#x5F15;&#x7528;&#x50B3;&#x905E;)&#xFF0C;&#x6240;&#x4EE5;&#x4F60;&#x5728;&#x51FD;&#x6578;&#x91CC;&#x5C0D;map&#x91CC;&#x7684;&#x503C;&#x9032;&#x884C;&#x8129;&#x6539;&#x6642;&#xFF0C;&#x539F;&#x59CB;&#x7684;map&#x5167;&#x7684;&#x503C;&#x4E5F;&#x6703;&#x6539;&#x8B8A;&#x3002;&#x5728;&#x6211;&#x5011;&#x7684;&#x4F8B;&#x5B50;&#x4E2D;&#xFF0C;&#x6211;&#x5011;&#x5728;countLines&#x51FD;&#x6578;&#x4E2D;&#x63D2;&#x5165;&#x5230;counts&#x9019;&#x500B;map&#x91CC;&#x7684;&#x503C;&#xFF0C;&#x5728;&#x4E3B;&#x51FD;&#x6578;&#x4E2D;&#x4E5F;&#x662F;&#x770B;&#x5F97;&#x5230;&#x7684;&#x3002;</p>
<p>&#x4E0A;&#x9762;&#x9019;&#x500B;&#x7248;&#x672C;&#x7684;dup&#x662F;&#x4EE5;&#x6D41;&#x7684;&#x5F62;&#x5F0F;&#x4F86;&#x8655;&#x7406;&#x8F38;&#x5165;&#xFF0C;&#x4F75;&#x5C07;&#x5176;&#x6253;&#x6563;&#x7232;&#x884C;&#x3002;&#x7406;&#x8AD6;&#x4E0A;&#x9019;&#x4E9B;&#x7A0B;&#x5E8F;&#x4E5F;&#x662F;&#x53EF;&#x4EE5;&#x4EE5;&#x4E8C;&#x9032;&#x88FD;&#x5F62;&#x5F0F;&#x4F86;&#x8655;&#x7406;&#x8F38;&#x5165;&#x7684;&#x3002;&#x6211;&#x5011;&#x4E5F;&#x53EF;&#x4EE5;&#x4E00;&#x6B21;&#x6027;&#x7684;&#x628A;&#x6574;&#x500B;&#x8F38;&#x5165;&#x5167;&#x5BB9;&#x5168;&#x90E8;&#x8B80;&#x5230;&#x5167;&#x5B58;&#x4E2D;&#xFF0C;&#x7136;&#x5F8C;&#x518D;&#x628A;&#x5176;&#x5206;&#x5272;&#x7232;&#x591A;&#x884C;&#xFF0C;&#x7136;&#x5F8C;&#x518D;&#x53BB;&#x8655;&#x7406;&#x9019;&#x4E9B;&#x884C;&#x5167;&#x7684;&#x6578;&#x64DA;&#x3002;&#x4E0B;&#x9762;&#x7684;dup3&#x9019;&#x500B;&#x4F8B;&#x5B50;&#x5C31;&#x662F;&#x4EE5;&#x9019;&#x7A2E;&#x5F62;&#x5F0F;&#x4F86;&#x9032;&#x884C;&#x64CD;&#x4F5C;&#x7684;&#x3002;&#x9019;&#x500B;&#x4F8B;&#x5B50;&#x5F15;&#x5165;&#x4E86;&#x4E00;&#x500B;&#x65B0;&#x51FD;&#x6578;ReadFile(&#x5F9E;io/ioutil&#x9019;&#x500B;&#x5305;)&#xFF0C;&#x9019;&#x500B;&#x51FD;&#x6578;&#x6703;&#x628A;&#x4E00;&#x500B;&#x6307;&#x5B9A;&#x540D;&#x5B57;&#x7684;&#x6587;&#x4EF6;&#x5167;&#x5BB9;&#x4E00;&#x6B21;&#x6027;&#x8ABF;&#x5165;&#xFF0C;&#x4E4B;&#x5F8C;&#x6211;&#x5011;&#x7528;strings.Split&#x51FD;&#x6578;&#x628A;&#x6587;&#x4EF6;&#x5206;&#x5272;&#x7232;&#x591A;&#x500B;&#x5B50;&#x5B57;&#x7B26;&#x4E32;&#xFF0C;&#x4F75;&#x5B58;&#x5132;&#x5230;slice&#x7D50;&#x69CB;&#x4E2D;&#x3002;(Split&#x51FD;&#x6578;&#x662F;strings.Join&#x7684;&#x9006;&#x51FD;&#x6578;&#xFF0C;Join&#x51FD;&#x6578;&#x4E4B;&#x524D;&#x63D0;&#x5230;&#x904E;)</p>
<p>&#x6211;&#x5011;&#x7C21;&#x5316;&#x4E86;dup3&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#x3002;&#x9996;&#x5148;&#xFF0C;&#x4ED6;&#x96BB;&#x8B80;&#x53D6;&#x547D;&#x540D;&#x7684;&#x6587;&#x4EF6;&#xFF0C;&#x800C;&#x4E0D;&#x53BB;&#x8B80;&#x6A19;&#x6E96;&#x8F38;&#x5165;&#xFF0C;&#x56E0;&#x7232;ReadFile&#x51FD;&#x6578;&#x9700;&#x8981;&#x4E00;&#x500B;&#x6587;&#x4EF6;&#x540D;&#x53C3;&#x6578;&#x3002;&#x5176;&#x6B21;&#xFF0C;&#x6211;&#x5011;&#x5C07;&#x884C;&#x8A08;&#x6578;&#x908F;&#x8F2F;&#x79FB;&#x8FF4;&#x5230;&#x4E86;main&#x51FD;&#x6578;&#xFF0C;&#x56E0;&#x7232;&#x73FE;&#x5728;&#x9019;&#x500B;&#x908F;&#x8F2F;&#x96BB;&#x6709;&#x4E00;&#x500B;&#x5730;&#x65B9;&#x9700;&#x8981;&#x7528;&#x5230;&#x3002;</p>
<p>os.Open&#x8FD4;&#x8FF4;&#x7684;&#x7B2C;&#x4E8C;&#x500B;&#x503C;&#x662F;&#x4E00;&#x500B;Go&#x8A9E;&#x8A00;&#x5167;&#x7F6E;&#x7684;error&#x985E;&#x578B;&#x3002;&#x5982;&#x679C;&#x9019;&#x500B;error&#x548C;&#x5167;&#x7F6E;&#x503C;&#x7684;nil&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;&#x76F8;&#x7576;&#x65BC;&#x5176;&#x5B83;&#x8A9E;&#x8A00;&#x91CC;&#x7684;NULL&#xFF09;&#x76F8;&#x7B49;&#x7684;&#x8A71;&#xFF0C;&#x8AAC;&#x660E;&#x6587;&#x4EF6;&#x88AB;&#x6210;&#x529F;&#x7684;&#x6253;&#x958B;&#x4E86;&#x3002;&#x4E4B;&#x5F8C;&#x6587;&#x4EF6;&#x88AB;&#x8B80;&#x53D6;&#xFF0C;&#x4E00;&#x76F4;&#x5230;&#x6587;&#x4EF6;&#x7684;&#x6700;&#x5F8C;&#xFF0C;&#x6587;&#x4EF6;&#x7684;Close&#x65B9;&#x6CD5;&#x95DC;&#x9589;&#x8A72;&#x6587;&#x4EF6;&#xFF0C;&#x4F75;&#x91CB;&#x653E;&#x76F8;&#x61C9;&#x7684;&#x5360;&#x7528;&#x4E00;&#x5207;&#x8CC7;&#x6E90;&#x3002;&#x53E6;&#x4E00;&#x65B9;&#x9762;&#xFF0C;&#x5982;&#x679C;err&#x7684;&#x503C;&#x4E0D;&#x662F;nil&#x7684;&#x8A71;&#xFF0C;&#x90A3;&#x8AAC;&#x660E;&#x5728;&#x6253;&#x958B;&#x6587;&#x4EF6;&#x7684;&#x6642;&#x5019;&#x9F63;&#x4E86;&#x67D0;&#x7A2E;&#x932F;&#x8AA4;&#x3002;&#x9019;&#x7A2E;&#x60C5;&#x6CC1;&#x4E0B;&#xFF0C;error&#x985E;&#x578B;&#x7684;&#x503C;&#x6703;&#x63CF;&#x8FF0;&#x5177;&#x9AD4;&#x7684;&#x554F;&#x984C;&#x3002;&#x6211;&#x5011;&#x4F8B;&#x5B50;&#x91CC;&#x7684;&#x7C21;&#x55AE;&#x932F;&#x8AA4;&#x8655;&#x7406;&#x6703;&#x5728;&#x6A19;&#x6E96;&#x932F;&#x8AA4;&#x6D41;&#x4E2D;&#x7528;Fprintf&#x548C;%v&#x4F86;&#x683C;&#x5F0F;&#x5316;&#x8A72;&#x932F;&#x8AA4;&#x5B57;&#x7B26;&#x4E32;&#x3002;&#x7136;&#x5F8C;&#x7E7C;&#x7E8C;&#x8655;&#x7406;&#x4E0B;&#x4E00;&#x500B;&#x6587;&#x4EF6;&#xFF1B;continue&#x8A9E;&#x53E5;&#x6703;&#x76F4;&#x63A5;&#x8DF3;&#x904E;&#x4E4B;&#x5F8C;&#x7684;&#x8A9E;&#x53E5;&#xFF0C;&#x76F4;&#x63A5;&#x958B;&#x59CB;&#x57F7;&#x884C;&#x4E0B;&#x4E00;&#x500B;&#x5FAA;&#x74B0;&#x8FED;&#x4EE3;&#x3002;</p>
<p>&#x6211;&#x5011;&#x5728;&#x672C;&#x66F8;&#x4E2D;&#x65E9;&#x671F;&#x7684;&#x4F8B;&#x5B50;&#x4E2D;&#x505A;&#x4E86;&#x6BD4;&#x8F03;&#x8A73;&#x76E1;&#x7684;&#x932F;&#x8AA4;&#x8655;&#x7406;&#xFF0C;&#x7576;&#x7136;&#x4E86;&#xFF0C;&#x5728;&#x5BE6;&#x969B;&#x7DE8;&#x78BC;&#x904E;&#x7A0B;&#x4E2D;&#xFF0C;&#x50CF;os.Open&#x9019;&#x985E;&#x7684;&#x51FD;&#x6578;&#x662F;&#x4E00;&#x5B9A;&#x8981;&#x6AA2;&#x67FB;&#x5176;&#x8FD4;&#x8FF4;&#x7684;error&#x503C;&#x7684;&#xFF1B;&#x7232;&#x4E86;&#x6E1B;&#x5C11;&#x4F8B;&#x5B50;&#x7A0B;&#x5E8F;&#x7684;&#x4EE3;&#x78BC;&#x91CF;&#xFF0C;&#x6211;&#x5011;&#x59D1;&#x4E14;&#x7C21;&#x5316;&#x6389;&#x9019;&#x4E9B;&#x4E0D;&#x592A;&#x53EF;&#x80FD;&#x8FD4;&#x8FF4;&#x932F;&#x8AA4;&#x7684;&#x8655;&#x7406;&#x908F;&#x8F2F;&#x3002;&#x5F8C;&#x9762;&#x7684;&#x4F8B;&#x5B50;&#x91CC;&#x6211;&#x5011;&#x6703;&#x8DF3;&#x904E;&#x932F;&#x8AA4;&#x6AA2;&#x67FB;&#x3002;&#x5728;5.4&#x7BC0;&#x4E2D;&#x6211;&#x5011;&#x6703;&#x5C0D;&#x932F;&#x8AA4;&#x8655;&#x7406;&#x505A;&#x66F4;&#x8A73;&#x7D30;&#x7684;&#x95E1;&#x8FF0;&#x3002;</p>
<p>&#x8B80;&#x8005;&#x53EF;&#x4EE5;&#x518D;&#x89C0;&#x5BDF;&#x4E00;&#x4E0B;&#x4E0A;&#x9762;&#x7684;&#x4F8B;&#x5B50;&#xFF0C;&#x6211;&#x5011;&#x7684;countLines&#x51FD;&#x6578;&#x662F;&#x5728;&#x5176;&#x8072;&#x660E;&#x4E4B;&#x524D;&#x5C31;&#x88AB;&#x8ABF;&#x7528;&#x4E86;&#x3002;&#x5728;Go&#x8A9E;&#x8A00;&#x91CC;&#xFF0C;&#x51FD;&#x6578;&#x548C;&#x5305;&#x7D1A;&#x522B;&#x7684;&#x8B8A;&#x91CF;&#x53EF;&#x4EE5;&#x4EE5;&#x4EFB;&#x610F;&#x7684;&#x9806;&#x5E8F;&#x88AB;&#x8072;&#x660E;&#xFF0C;&#x4F75;&#x4E0D;&#x5F71;&#x97FF;&#x5176;&#x88AB;&#x8ABF;&#x7528;&#x3002;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;&#x6700;&#x597D;&#x9084;&#x662F;&#x9075;&#x5FAA;&#x4E00;&#x5B9A;&#x7684;&#x898F;&#x8303;&#xFF09;</p>
<p>&#x518D;&#x4F86;&#x8B1B;&#x8B1B;map&#x9019;&#x500B;&#x6578;&#x64DA;&#x7D50;&#x69CB;&#xFF0C;map&#x662F;&#x7528;make&#x51FD;&#x6578;&#x5275;&#x5EFA;&#x7684;&#x6578;&#x64DA;&#x7D50;&#x69CB;&#x7684;&#x4E00;&#x500B;&#x5F15;&#x7528;&#x3002;&#x7576;&#x4E00;&#x500B;map&#x88AB;&#x4F5C;&#x7232;&#x53C3;&#x6578;&#x50B3;&#x905E;&#x7D66;&#x4E00;&#x500B;&#x51FD;&#x6578;&#x6642;&#xFF0C;&#x51FD;&#x6578;&#x63A5;&#x6536;&#x5230;&#x7684;&#x662F;&#x4E00;&#x4EFD;&#x5F15;&#x7528;&#x7684;&#x62F7;&#x8C9D;&#xFF0C;&#x96D6;&#x7136;&#x672C;&#x8EAB;&#x4F75;&#x4E0D;&#x662F;&#x4E00;&#x500B;&#x6771;&#x897F;&#xFF0C;&#x4F46;&#x56E0;&#x7232;&#x4ED6;&#x5011;&#x6307;&#x5411;&#x7684;&#x662F;&#x540C;&#x4E00;&#x584A;&#x6578;&#x64DA;&#x5C0D;&#x8C61;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;&#x985E;&#x4F3C;&#x65BC;C++&#x91CC;&#x7684;&#x5F15;&#x7528;&#x50B3;&#x905E;&#xFF09;&#xFF0C;&#x6240;&#x4EE5;&#x4F60;&#x5728;&#x51FD;&#x6578;&#x91CC;&#x5C0D;map&#x91CC;&#x7684;&#x503C;&#x9032;&#x884C;&#x8129;&#x6539;&#x6642;&#xFF0C;&#x539F;&#x59CB;&#x7684;map&#x5167;&#x7684;&#x503C;&#x4E5F;&#x6703;&#x6539;&#x8B8A;&#x3002;&#x5728;&#x6211;&#x5011;&#x7684;&#x4F8B;&#x5B50;&#x4E2D;&#xFF0C;&#x6211;&#x5011;&#x5728;countLines&#x51FD;&#x6578;&#x4E2D;&#x63D2;&#x5165;&#x5230;counts&#x9019;&#x500B;map&#x91CC;&#x7684;&#x503C;&#xFF0C;&#x5728;&#x4E3B;&#x51FD;&#x6578;&#x4E2D;&#x4E5F;&#x662F;&#x770B;&#x5F97;&#x5230;&#x7684;&#x3002;</p>
<p>&#x4E0A;&#x9762;&#x9019;&#x500B;&#x7248;&#x672C;&#x7684;dup&#x662F;&#x4EE5;&#x6D41;&#x7684;&#x5F62;&#x5F0F;&#x4F86;&#x8655;&#x7406;&#x8F38;&#x5165;&#xFF0C;&#x4F75;&#x5C07;&#x5176;&#x6253;&#x6563;&#x7232;&#x884C;&#x3002;&#x7406;&#x8AD6;&#x4E0A;&#x9019;&#x4E9B;&#x7A0B;&#x5E8F;&#x4E5F;&#x662F;&#x53EF;&#x4EE5;&#x4EE5;&#x4E8C;&#x9032;&#x88FD;&#x5F62;&#x5F0F;&#x4F86;&#x8655;&#x7406;&#x8F38;&#x5165;&#x7684;&#x3002;&#x6211;&#x5011;&#x4E5F;&#x53EF;&#x4EE5;&#x4E00;&#x6B21;&#x6027;&#x7684;&#x628A;&#x6574;&#x500B;&#x8F38;&#x5165;&#x5167;&#x5BB9;&#x5168;&#x90E8;&#x8B80;&#x5230;&#x5167;&#x5B58;&#x4E2D;&#xFF0C;&#x7136;&#x5F8C;&#x518D;&#x628A;&#x5176;&#x5206;&#x5272;&#x7232;&#x591A;&#x884C;&#xFF0C;&#x7136;&#x5F8C;&#x518D;&#x53BB;&#x8655;&#x7406;&#x9019;&#x4E9B;&#x884C;&#x5167;&#x7684;&#x6578;&#x64DA;&#x3002;&#x4E0B;&#x9762;&#x7684;dup3&#x9019;&#x500B;&#x4F8B;&#x5B50;&#x5C31;&#x662F;&#x4EE5;&#x9019;&#x7A2E;&#x5F62;&#x5F0F;&#x4F86;&#x9032;&#x884C;&#x64CD;&#x4F5C;&#x7684;&#x3002;&#x9019;&#x500B;&#x4F8B;&#x5B50;&#x5F15;&#x5165;&#x4E86;&#x4E00;&#x500B;&#x65B0;&#x51FD;&#x6578;ReadFile&#xFF08;&#x5F9E;io/ioutil&#x5305;&#x63D0;&#x4F9B;&#xFF09;&#xFF0C;&#x9019;&#x500B;&#x51FD;&#x6578;&#x6703;&#x628A;&#x4E00;&#x500B;&#x6307;&#x5B9A;&#x540D;&#x5B57;&#x7684;&#x6587;&#x4EF6;&#x5167;&#x5BB9;&#x4E00;&#x6B21;&#x6027;&#x8ABF;&#x5165;&#xFF0C;&#x4E4B;&#x5F8C;&#x6211;&#x5011;&#x7528;strings.Split&#x51FD;&#x6578;&#x628A;&#x6587;&#x4EF6;&#x5206;&#x5272;&#x7232;&#x591A;&#x500B;&#x5B50;&#x5B57;&#x7B26;&#x4E32;&#xFF0C;&#x4F75;&#x5B58;&#x5132;&#x5230;slice&#x7D50;&#x69CB;&#x4E2D;&#x3002;&#xFF08;Split&#x51FD;&#x6578;&#x662F;strings.Join&#x7684;&#x9006;&#x51FD;&#x6578;&#xFF0C;Join&#x51FD;&#x6578;&#x4E4B;&#x524D;&#x63D0;&#x5230;&#x904E;&#xFF09;</p>
<p>&#x6211;&#x5011;&#x7C21;&#x5316;&#x4E86;dup3&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#x3002;&#x9996;&#x5148;&#xFF0C;&#x5B83;&#x96BB;&#x8B80;&#x53D6;&#x547D;&#x540D;&#x7684;&#x6587;&#x4EF6;&#xFF0C;&#x800C;&#x4E0D;&#x53BB;&#x8B80;&#x6A19;&#x6E96;&#x8F38;&#x5165;&#xFF0C;&#x56E0;&#x7232;ReadFile&#x51FD;&#x6578;&#x9700;&#x8981;&#x4E00;&#x500B;&#x6587;&#x4EF6;&#x540D;&#x53C3;&#x6578;&#x3002;&#x5176;&#x6B21;&#xFF0C;&#x6211;&#x5011;&#x5C07;&#x884C;&#x8A08;&#x6578;&#x908F;&#x8F2F;&#x79FB;&#x8FF4;&#x5230;&#x4E86;main&#x51FD;&#x6578;&#xFF0C;&#x56E0;&#x7232;&#x73FE;&#x5728;&#x9019;&#x500B;&#x908F;&#x8F2F;&#x96BB;&#x6709;&#x4E00;&#x500B;&#x5730;&#x65B9;&#x9700;&#x8981;&#x7528;&#x5230;&#x3002;</p>
<pre><code class="lang-go">gopl.io/ch1/dup3
<span class="hljs-keyword">package</span> main
@@ -2155,10 +2155,10 @@ counts[line] = counts[line] + <span class="hljs-number">1</span>
}
}
</code></pre>
<p>ReadFile&#x51FD;&#x6578;&#x8FD4;&#x8FF4;&#x4E00;&#x500B;byte&#x7684;slice&#xFF0C;&#x9019;&#x500B;slice&#x5FC5;&#x9B1A;&#x88AB;&#x8F49;&#x63DB;&#x7232;string&#xFF0C;&#x4E4B;&#x5F8C;&#x7E94;&#x80FD;&#x5920;&#x7528;string.Split&#x65B9;&#x6CD5;&#x4F86;&#x9032;&#x884C;&#x8655;&#x7406;&#x3002;&#x6211;&#x5011;&#x5728;3.5.4&#x7BC0;&#x4E2D;&#x6703;&#x66F4;&#x8A73;&#x7D30;&#x5730;&#x8B1B;&#x89E3;string&#x548C;byte slice(&#x5B57;&#x7BC0;&#x6578;&#x7D44;)&#x3002;</p>
<p>ReadFile&#x51FD;&#x6578;&#x8FD4;&#x8FF4;&#x4E00;&#x500B;byte&#x7684;slice&#xFF0C;&#x9019;&#x500B;slice&#x5FC5;&#x9B1A;&#x88AB;&#x8F49;&#x63DB;&#x7232;string&#xFF0C;&#x4E4B;&#x5F8C;&#x7E94;&#x80FD;&#x5920;&#x7528;string.Split&#x65B9;&#x6CD5;&#x4F86;&#x9032;&#x884C;&#x8655;&#x7406;&#x3002;&#x6211;&#x5011;&#x5728;3.5.4&#x7BC0;&#x4E2D;&#x6703;&#x66F4;&#x8A73;&#x7D30;&#x5730;&#x8B1B;&#x89E3;string&#x548C;byte slice&#xFF08;&#x5B57;&#x7BC0;&#x6578;&#x7D44;&#xFF09;&#x3002;</p>
<p>&#x5728;&#x66F4;&#x5E95;&#x5C64;&#x4E00;&#x4E9B;&#x7684;&#x5730;&#x65B9;&#xFF0C;bufio.Scanner&#xFF0C;ioutil.ReadFile&#x548C;ioutil.WriteFile&#x4F7F;&#x7528;&#x7684;&#x662F;*os.File&#x7684;Read&#x548C;Write&#x65B9;&#x6CD5;&#xFF0C;&#x4E0D;&#x904E;&#x4E00;&#x822C;&#x7A0B;&#x5E8F;&#x54E1;&#x4F75;&#x4E0D;&#x9700;&#x8981;&#x53BB;&#x76F4;&#x63A5;&#x4E86;&#x89E3;&#x5230;&#x5176;&#x5E95;&#x5C64;&#x5BE6;&#x73FE;&#x7D30;&#x7BC0;&#xFF0C;&#x5728;bufio&#x548C;io/ioutil&#x5305;&#x4E2D;&#x63D0;&#x4F9B;&#x7684;&#x65B9;&#x6CD5;&#x5DF2;&#x7D93;&#x8DB3;&#x5920;&#x597D;&#x7528;&#x3002;</p>
<pre><code>Exercise 1.4: &#x8129;&#x6539;dup2&#xFF0C;&#x4F7F;&#x5176;&#x53EF;&#x4EE5;&#x6253;&#x5370;&#x91CD;&#x8907;&#x7684;&#x884C;&#x5206;&#x522B;&#x9F63;&#x73FE;&#x5728;&#x54EA;&#x4E9B;&#x6587;&#x4EF6;&#x3002;
</code></pre>
<p><strong>&#x7DF4;&#x7FD2; 1.4&#xFF1A;</strong> &#x8129;&#x6539;dup2&#xFF0C;&#x4F7F;&#x5176;&#x53EF;&#x4EE5;&#x6253;&#x5370;&#x91CD;&#x8907;&#x7684;&#x884C;&#x5206;&#x522B;&#x9F63;&#x73FE;&#x5728;&#x54EA;&#x4E9B;&#x6587;&#x4EF6;&#x3002;</p>
</section>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="1.4" data-chapter-title="GIF動畵" data-filepath="ch1/ch1-04.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="1.4" data-chapter-title="GIF動畵" data-filepath="ch1/ch1-04.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>
@@ -2024,15 +2024,16 @@
<section class="normal" id="section-">
<h2 id="14-gif&#x52D5;&#x7575;">1.4. GIF&#x52D5;&#x7575;</h2>
<p>&#x4E0B;&#x9762;&#x7684;&#x7A0B;&#x5E8F;&#x6703;&#x6F14;&#x793A;Go&#x8A9E;&#x8A00;&#x6A19;&#x6E96;&#x5EAB;&#x91CC;&#x7684;image&#x9019;&#x500B;package&#x7684;&#x7528;&#x6CD5;&#xFF0C;&#x6211;&#x5011;&#x6703;&#x7528;&#x9019;&#x500B;&#x5305;&#x4F86;&#x751F;&#x6210;&#x4E00;&#x7E6B;&#x5217;&#x7684;bit-mapped&#x5716;&#xFF0C;&#x7136;&#x5F8C;&#x5C07;&#x9019;&#x4E9B;&#x5716;&#x7247;&#x7DE8;&#x78BC;&#x7232;&#x4E00;&#x500B;GIF&#x52D5;&#x7575;&#x3002;&#x6211;&#x5011;&#x751F;&#x6210;&#x7684;&#x5716;&#x5F62;&#x540D;&#x5B57;&#x53EB;&#x5229;&#x85A9;&#x5982;&#x5716;&#x5F62;(Lissajous figures)&#xFF0C;&#x9019;&#x7A2E;&#x6548;&#x679C;&#x662F;&#x5728;1960&#x5E74;&#x4EE3;&#x7684;&#x8001;&#x96FB;&#x5F71;&#x91CC;&#x9F63;&#x73FE;&#x7684;&#x4E00;&#x7A2E;&#x8996;&#x89BA;&#x7279;&#x6548;&#x3002;&#x4ED6;&#x5011;&#x662F;&#x5354;&#x632F;&#x5B50;&#x5728;&#x5169;&#x500B;&#x7DEF;&#x5EA6;&#x4E0A;&#x632F;&#x52D5;&#x6240;&#x7523;&#x751F;&#x7684;&#x9EB4;&#x7DDA;&#xFF0C;&#x6BD4;&#x5982;&#x5169;&#x500B;sin&#x6B63;&#x7D43;&#x6CE2;&#x5206;&#x522B;&#x5728;x&#x8EF8;&#x548C;y&#x8EF8;&#x8F38;&#x5165;&#x6703;&#x7523;&#x751F;&#x7684;&#x9EB4;&#x7DDA;&#x3002;&#x5716;1.1&#x662F;&#x9019;&#x6A23;&#x7684;&#x4E00;&#x500B;&#x4F8B;&#x5B50;&#xFF1A;</p>
<p>&#x4E0B;&#x9762;&#x7684;&#x7A0B;&#x5E8F;&#x6703;&#x6F14;&#x793A;Go&#x8A9E;&#x8A00;&#x6A19;&#x6E96;&#x5EAB;&#x91CC;&#x7684;image&#x9019;&#x500B;package&#x7684;&#x7528;&#x6CD5;&#xFF0C;&#x6211;&#x5011;&#x6703;&#x7528;&#x9019;&#x500B;&#x5305;&#x4F86;&#x751F;&#x6210;&#x4E00;&#x7E6B;&#x5217;&#x7684;bit-mapped&#x5716;&#xFF0C;&#x7136;&#x5F8C;&#x5C07;&#x9019;&#x4E9B;&#x5716;&#x7247;&#x7DE8;&#x78BC;&#x7232;&#x4E00;&#x500B;GIF&#x52D5;&#x7575;&#x3002;&#x6211;&#x5011;&#x751F;&#x6210;&#x7684;&#x5716;&#x5F62;&#x540D;&#x5B57;&#x53EB;&#x5229;&#x85A9;&#x5982;&#x5716;&#x5F62;(Lissajous figures)&#xFF0C;&#x9019;&#x7A2E;&#x6548;&#x679C;&#x662F;&#x5728;1960&#x5E74;&#x4EE3;&#x7684;&#x8001;&#x96FB;&#x5F71;&#x91CC;&#x9F63;&#x73FE;&#x7684;&#x4E00;&#x7A2E;&#x8996;&#x89BA;&#x7279;&#x6548;&#x3002;&#x5B83;&#x5011;&#x662F;&#x5354;&#x632F;&#x5B50;&#x5728;&#x5169;&#x500B;&#x7DEF;&#x5EA6;&#x4E0A;&#x632F;&#x52D5;&#x6240;&#x7523;&#x751F;&#x7684;&#x9EB4;&#x7DDA;&#xFF0C;&#x6BD4;&#x5982;&#x5169;&#x500B;sin&#x6B63;&#x7D43;&#x6CE2;&#x5206;&#x522B;&#x5728;x&#x8EF8;&#x548C;y&#x8EF8;&#x8F38;&#x5165;&#x6703;&#x7523;&#x751F;&#x7684;&#x9EB4;&#x7DDA;&#x3002;&#x5716;1.1&#x662F;&#x9019;&#x6A23;&#x7684;&#x4E00;&#x500B;&#x4F8B;&#x5B50;&#xFF1A;</p>
<p><img src="../images/ch1-01.png" alt=""></p>
<p>&#x9019;&#x6BB5;&#x4EE3;&#x78BC;&#x91CC;&#x6211;&#x5011;&#x7528;&#x4E86;&#x4E00;&#x4E9B;&#x65B0;&#x7684;&#x7D50;&#x69CB;&#xFF0C;&#x5305;&#x62EC;const&#x8072;&#x660E;&#xFF0C;&#x6578;&#x64DA;struct&#x985E;&#x578B;&#xFF0C;&#x8907;&#x5408;&#x8072;&#x660E;&#x3002;&#x548C;&#x6211;&#x5011;&#x8209;&#x7684;&#x5176;&#x5B83;&#x7684;&#x4F8B;&#x5B50;&#x4E0D;&#x592A;&#x4E00;&#x6A23;&#xFF0C;&#x9019;&#x4E00;&#x500B;&#x4F8B;&#x5B50;&#x5305;&#x542B;&#x4E86;&#x6D6E;&#x9EDE;&#x6578;&#x904B;&#x7B97;&#x3002;&#x9019;&#x4E9B;&#x6982;&#x5FF5;&#x6211;&#x5011;&#x96BB;&#x5728;&#x9019;&#x91CC;&#x7C21;&#x55AE;&#x5730;&#x8AAC;&#x660E;&#x4E00;&#x4E0B;&#xFF0C;&#x4E4B;&#x5F8C;&#x7684;&#x7AE0;&#x7BC0;&#x6703;&#x66F4;&#x8A73;&#x7D30;&#x5730;&#x8B1B;&#x89E3;&#x3002;</p>
<p>&#x8B6F;&#x8A3B;&#xFF1A;&#x8981;&#x770B;&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#x7684;&#x7D50;&#x679C;&#xFF0C;&#x9700;&#x8981;&#x5C07;&#x6A19;&#x6E96;&#x8F38;&#x9F63;&#x91CD;&#x5B9A;&#x5411;&#x5230;&#x4E00;&#x500B;GIF&#x5716;&#x50CF;&#x6587;&#x4EF6;&#xFF08;&#x4F7F;&#x7528; <code>./lissajous &gt; output.gif</code> &#x547D;&#x4EE4;&#xFF09;&#x3002;&#x4E0B;&#x9762;&#x662F;GIF&#x5716;&#x50CF;&#x52D5;&#x7575;&#x6548;&#x679C;&#xFF1A;</p>
<p><img src="../images/ch1-01.gif" alt=""></p>
<p>&#x9019;&#x6BB5;&#x4EE3;&#x78BC;&#x91CC;&#x6211;&#x5011;&#x7528;&#x4E86;&#x4E00;&#x4E9B;&#x65B0;&#x7684;&#x7D50;&#x69CB;&#xFF0C;&#x5305;&#x62EC;const&#x8072;&#x660E;&#xFF0C;struct&#x7D50;&#x69CB;&#x9AD4;&#x985E;&#x578B;&#xFF0C;&#x8907;&#x5408;&#x8072;&#x660E;&#x3002;&#x548C;&#x6211;&#x5011;&#x8209;&#x7684;&#x5176;&#x5B83;&#x7684;&#x4F8B;&#x5B50;&#x4E0D;&#x592A;&#x4E00;&#x6A23;&#xFF0C;&#x9019;&#x4E00;&#x500B;&#x4F8B;&#x5B50;&#x5305;&#x542B;&#x4E86;&#x6D6E;&#x9EDE;&#x6578;&#x904B;&#x7B97;&#x3002;&#x9019;&#x4E9B;&#x6982;&#x5FF5;&#x6211;&#x5011;&#x96BB;&#x5728;&#x9019;&#x91CC;&#x7C21;&#x55AE;&#x5730;&#x8AAC;&#x660E;&#x4E00;&#x4E0B;&#xFF0C;&#x4E4B;&#x5F8C;&#x7684;&#x7AE0;&#x7BC0;&#x6703;&#x66F4;&#x8A73;&#x7D30;&#x5730;&#x8B1B;&#x89E3;&#x3002;</p>
<pre><code class="lang-go">gopl.io/ch1/lissajous
<span class="hljs-comment">// Lissajous generates GIF animations of random Lissajous figures.</span>
<span class="hljs-keyword">package</span> main
<span class="hljs-keyword">import</span> (
<span class="hljs-string">&quot;image&quot;</span>
<span class="hljs-string">&quot;image/color&quot;</span>
@@ -2044,10 +2045,12 @@
)
<span class="hljs-keyword">var</span> palette = []color.Color{color.White, color.Black}
<span class="hljs-keyword">const</span> (
whiteIndex = <span class="hljs-number">0</span> <span class="hljs-comment">// first color in palette</span>
blackIndex = <span class="hljs-number">1</span> <span class="hljs-comment">// next color in palette</span>
)
<span class="hljs-keyword">func</span> main() {
lissajous(os.Stdout)
}
@@ -2071,7 +2074,7 @@
x := math.Sin(t)
y := math.Sin(t*freq + phase)
img.SetColorIndex(size+<span class="hljs-typename">int</span>(x*size+<span class="hljs-number">0.5</span>), size+<span class="hljs-typename">int</span>(y*size+<span class="hljs-number">0.5</span>),
blackIndex)
bla kIndex)
}
phase += <span class="hljs-number">0.1</span>
anim.Delay = <span class="hljs-built_in">append</span>(anim.Delay, delay)
@@ -2080,19 +2083,18 @@ blackIndex)
gif.EncodeAll(out, &amp;anim) <span class="hljs-comment">// <span class="hljs-doctag">NOTE:</span> ignoring encoding errors</span>
}
</code></pre>
<p>&#x7576;&#x6211;&#x5011;import&#x4E86;&#x4E00;&#x500B;&#x5305;&#x8DEF;&#x5F91;&#x5305;&#x542B;&#x6709;&#x591A;&#x500B;&#x55AE;&#x8A5E;&#x7684;package&#x6642;&#xFF0C;&#x6BD4;&#x5982;image/color(image&#x548C;color&#x5169;&#x500B;&#x55AE;&#x8A5E;)&#xFF0C;&#x6211;&#x5011;&#x96BB;&#x9700;&#x8981;&#x7528;&#x6700;&#x5F8C;&#x90A3;&#x500B;&#x55AE;&#x8A5E;&#x8868;&#x793A;&#x9019;&#x500B;&#x5305;&#x5C31;&#x53EF;&#x4EE5;&#x3002;&#x6240;&#x4EE5;&#x7576;&#x6211;&#x5011;&#x5BEB;color.White&#x6642;&#xFF0C;&#x9019;&#x500B;&#x8B8A;&#x91CF;&#x6307;&#x5411;&#x7684;&#x662F;image/color&#x5305;&#x91CC;&#x7684;&#x8B8A;&#x91CF;&#xFF0C;&#x540C;&#x7406;gif.GIF&#x662F;&#x5C6C;&#x65BC;image/gif&#x5305;&#x91CC;&#x7684;&#x8B8A;&#x91CF;&#x3002;</p>
<p>&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#x91CC;&#x7684;&#x5E38;&#x91CF;&#x8072;&#x660E;&#x7D66;&#x9F63;&#x4E86;&#x4E00;&#x7E6B;&#x5217;&#x7684;&#x5E38;&#x91CF;&#x503C;&#xFF0C;&#x5E38;&#x91CF;&#x662F;&#x6307;&#x5728;&#x7A0B;&#x5E8F;&#x7DE8;&#x8B6F;&#x5F8C;&#x904B;&#x884C;&#x6642;&#x59CB;&#x7D42;&#x90FD;&#x4E0D;&#x6703;&#x8B8A;&#x5316;&#x7684;&#x503C;&#xFF0C;&#x6BD4;&#x5982;&#x5708;&#x6578;&#x3001;&#x5E40;&#x6578;&#x3001;&#x5EF6;&#x9072;&#x503C;&#x3002;&#x5E38;&#x91CF;&#x8072;&#x660E;&#x548C;&#x8B8A;&#x91CF;&#x8072;&#x660E;&#x4E00;&#x822C;&#x90FD;&#x6703;&#x9F63;&#x73FE;&#x5728;&#x5305;&#x7D1A;&#x522B;&#xFF0C;&#x6240;&#x4EE5;&#x9019;&#x4E9B;&#x5E38;&#x91CF;&#x5728;&#x6574;&#x500B;&#x5305;&#x4E2D;&#x90FD;&#x662F;&#x53EF;&#x4EE5;&#x5171;&#x4EAB;&#x7684;&#xFF0C;&#x6216;&#x8005;&#x4F60;&#x4E5F;&#x53EF;&#x4EE5;&#x628A;&#x5E38;&#x91CF;&#x8072;&#x660E;&#x5B9A;&#x7FA9;&#x5728;&#x51FD;&#x6578;&#x9AD4;&#x5167;&#x90E8;&#xFF0C;&#x90A3;&#x9EBD;&#x9019;&#x7A2E;&#x5E38;&#x91CF;&#x5C31;&#x96BB;&#x80FD;&#x5728;&#x51FD;&#x6578;&#x9AD4;&#x5167;&#x7528;&#x3002;&#x5E38;&#x91CF;&#x8072;&#x660E;&#x7684;&#x503C;&#x5FC5;&#x9B1A;&#x662F;&#x4E00;&#x500B;&#x6578;&#x5B57;&#x503C;&#x3001;&#x5B57;&#x7B26;&#x4E32;&#x6216;&#x8005;&#x4E00;&#x500B;&#x56FA;&#x5B9A;&#x7684;boolean&#x503C;&#x3002;</p>
<p>[]color.Color{...}&#x548C;gif.GIF{...}&#x9019;&#x5169;&#x500B;&#x8868;&#x9054;&#x5F0F;&#x5C31;&#x662F;&#x6211;&#x5011;&#x8AAC;&#x7684;&#x8907;&#x5408;&#x8072;&#x660E;(4.2&#x548C;4.4.1&#x7BC0;&#x6709;&#x8AAC;&#x660E;)&#x3002;&#x9019;&#x662F;&#x5BE6;&#x4F8B;&#x5316;Go&#x8A9E;&#x8A00;&#x91CC;&#x7684;&#x8907;&#x5408;&#x985E;&#x578B;&#x7684;&#x4E00;&#x7A2E;&#x5BEB;&#x6CD5;&#x3002;&#x9019;&#x91CC;&#x7684;&#x524D;&#x8005;&#x751F;&#x6210;&#x7684;&#x662F;&#x4E00;&#x500B;slice&#xFF0C;&#x5F8C;&#x8005;&#x751F;&#x6210;&#x7684;&#x662F;&#x4E00;&#x500B;struct&#x3002;</p>
<p>gif.GIF&#x662F;&#x4E00;&#x500B;struct&#x985E;&#x578B;(&#x53C3;&#x8003;4.4&#x7BC0;)&#x3002;struct&#x662F;&#x4E00;&#x7D44;&#x503C;&#x6216;&#x8005;&#x53EB;&#x5B57;&#x6BB5;&#x7684;&#x96C6;&#x5408;&#xFF0C;&#x4E0D;&#x540C;&#x7684;&#x985E;&#x578B;&#x96C6;&#x5408;&#x5728;&#x4E00;&#x500B;struct&#x53EF;&#x4EE5;&#x8B93;&#x6211;&#x5011;&#x4EE5;&#x4E00;&#x500B;&#x7D71;&#x4E00;&#x7684;&#x55AE;&#x5143;&#x9032;&#x884C;&#x8655;&#x7406;&#x3002;anim&#x662F;&#x4E00;&#x500B;gif.GIF&#x985E;&#x578B;&#x7684;struct&#x8B8A;&#x91CF;&#x3002;&#x9019;&#x7A2E;&#x5BEB;&#x6CD5;&#x6703;&#x751F;&#x6210;&#x4E00;&#x500B;struct&#x8B8A;&#x91CF;&#xFF0C;&#x4F75;&#x4E14;&#x5176;&#x5167;&#x90E8;&#x8B8A;&#x91CF;LoopCount&#x5B57;&#x6BB5;&#x6703;&#x88AB;&#x8A2D;&#x7F6E;&#x7232;nframes&#xFF1B;&#x800C;&#x5176;&#x5B83;&#x7684;&#x5B57;&#x6BB5;&#x6703;&#x88AB;&#x8A2D;&#x7F6E;&#x7232;&#x5404;&#x81EA;&#x985E;&#x578B;&#x9ED8;&#x8A8D;&#x7684;&#x96F6;&#x503C;&#x3002;struct&#x5167;&#x90E8;&#x7684;&#x8B8A;&#x91CF;&#x53EF;&#x4EE5;&#x4EE5;&#x4E00;&#x500B;&#x9EDE;(.)&#x4F86;&#x9032;&#x884C;&#x8A2A;&#x554F;&#xFF0C;&#x5C31;&#x50CF;&#x5728;&#x6700;&#x5F8C;&#x5169;&#x500B;&#x8CE6;&#x503C;&#x8A9E;&#x53E5;&#x4E2D;&#x986F;&#x5F0F;&#x5730;&#x66F4;&#x65B0;&#x4E86;anim&#x9019;&#x500B;struct&#x7684;Delay&#x548C;Image&#x5B57;&#x6BB5;&#x3002;</p>
<p>lissajous&#x51FD;&#x6578;&#x5167;&#x90E8;&#x6709;&#x5169;&#x5C64;&#x5D4C;&#x592A;&#x7684;for&#x5FAA;&#x74B0;&#x3002;&#x5916;&#x5C64;&#x5FAA;&#x74B0;&#x6703;&#x5FAA;&#x74B0;64&#x6B21;&#xFF0C;&#x6BCF;&#x4E00;&#x6B21;&#x90FD;&#x6703;&#x751F;&#x6210;&#x4E00;&#x500B;&#x55AE;&#x7368;&#x7684;&#x52D5;&#x7575;&#x5E40;&#x3002;&#x5B83;&#x751F;&#x6210;&#x4E86;&#x4E00;&#x500B;&#x5305;&#x542B;&#x5169;&#x7A2E;&#x9854;&#x8272;&#x7684;201&amp;201&#x5927;&#x5C0F;&#x7684;&#x5716;&#x7247;&#xFF0C;&#x767D;&#x8272;&#x548C;&#x9ED1;&#x8272;&#x3002;&#x6240;&#x6709;&#x50CF;&#x7D20;&#x9EDE;&#x90FD;&#x6703;&#x88AB;&#x9ED8;&#x8A8D;&#x8A2D;&#x7F6E;&#x7232;&#x5176;&#x96F6;&#x503C;(&#x4E5F;&#x5C31;&#x662F;palette&#x91CC;&#x7684;&#x7B2C;0&#x500B;&#x503C;)&#xFF0C;&#x9019;&#x91CC;&#x6211;&#x5011;&#x8A2D;&#x7F6E;&#x7684;&#x662F;&#x767D;&#x8272;&#x3002;&#x6BCF;&#x6B21;&#x7D93;&#x904E;&#x5167;&#x5B58;&#x5FAA;&#x74B0;&#x90FD;&#x6703;&#x901A;&#x904E;&#x8A2D;&#x7F6E;&#x50CF;&#x7D20;&#x7232;&#x9ED1;&#x8272;&#xFF0C;&#x751F;&#x6210;&#x4E00;&#x5F35;&#x65B0;&#x5716;&#x7247;&#x3002;&#x5176;&#x7D50;&#x679C;&#x6703;append&#x5230;&#x4E4B;&#x524D;&#x7D50;&#x679C;&#x4E4B;&#x5F8C;&#x3002;&#x9019;&#x91CC;&#x6211;&#x5011;&#x7528;&#x5230;&#x4E86;append(&#x53C3;&#x8003;4.2.1)&#x9019;&#x500B;&#x5167;&#x7F6E;&#x51FD;&#x6578;&#xFF0C;&#x5C07;&#x7D50;&#x679C;appen&#x5230;anim&#x4E2D;&#x7684;&#x5E40;&#x5217;&#x8868;&#x672B;&#x5C3E;&#xFF0C;&#x4F75;&#x6703;&#x8A2D;&#x7F6E;&#x4E00;&#x500B;&#x9ED8;&#x8A8D;&#x7684;80ms&#x7684;&#x5EF6;&#x9072;&#x503C;&#x3002;&#x6700;&#x7D42;&#x5FAA;&#x74B0;&#x7D50;&#x675F;&#xFF0C;&#x6240;&#x6709;&#x7684;&#x5EF6;&#x9072;&#x503C;&#x4E5F;&#x88AB;&#x7DE8;&#x78BC;&#x9032;&#x4E86;GIF&#x5716;&#x7247;&#x4E2D;&#xFF0C;&#x4F75;&#x5C07;&#x7D50;&#x679C;&#x5BEB;&#x5165;&#x5230;&#x8F38;&#x9F63;&#x6D41;&#x3002;out&#x9019;&#x500B;&#x8B8A;&#x91CF;&#x662F;io.Writer&#x985E;&#x578B;&#xFF0C;&#x9019;&#x500B;&#x985E;&#x578B;&#x8B93;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x53EF;&#x4EE5;&#x8B93;&#x6211;&#x5011;&#x628A;&#x8F38;&#x9F63;&#x7D50;&#x679C;&#x5BEB;&#x5230;&#x5F88;&#x591A;&#x76EE;&#x6A19;&#xFF0C;&#x5F88;&#x5FEB;&#x6211;&#x5011;&#x5C31;&#x53EF;&#x4EE5;&#x770B;&#x5230;&#x4E86;&#x3002;</p>
<p>&#x7576;&#x6211;&#x5011;import&#x4E86;&#x4E00;&#x500B;&#x5305;&#x8DEF;&#x5F91;&#x5305;&#x542B;&#x6709;&#x591A;&#x500B;&#x55AE;&#x8A5E;&#x7684;package&#x6642;&#xFF0C;&#x6BD4;&#x5982;image/color&#xFF08;image&#x548C;color&#x5169;&#x500B;&#x55AE;&#x8A5E;&#xFF09;&#xFF0C;&#x901A;&#x5E38;&#x6211;&#x5011;&#x96BB;&#x9700;&#x8981;&#x7528;&#x6700;&#x5F8C;&#x90A3;&#x500B;&#x55AE;&#x8A5E;&#x8868;&#x793A;&#x9019;&#x500B;&#x5305;&#x5C31;&#x53EF;&#x4EE5;&#x3002;&#x6240;&#x4EE5;&#x7576;&#x6211;&#x5011;&#x5BEB;color.White&#x6642;&#xFF0C;&#x9019;&#x500B;&#x8B8A;&#x91CF;&#x6307;&#x5411;&#x7684;&#x662F;image/color&#x5305;&#x91CC;&#x7684;&#x8B8A;&#x91CF;&#xFF0C;&#x540C;&#x7406;gif.GIF&#x662F;&#x5C6C;&#x65BC;image/gif&#x5305;&#x91CC;&#x7684;&#x8B8A;&#x91CF;&#x3002;</p>
<p>&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#x91CC;&#x7684;&#x5E38;&#x91CF;&#x8072;&#x660E;&#x7D66;&#x9F63;&#x4E86;&#x4E00;&#x7E6B;&#x5217;&#x7684;&#x5E38;&#x91CF;&#x503C;&#xFF0C;&#x5E38;&#x91CF;&#x662F;&#x6307;&#x5728;&#x7A0B;&#x5E8F;&#x7DE8;&#x8B6F;&#x5F8C;&#x904B;&#x884C;&#x6642;&#x59CB;&#x7D42;&#x90FD;&#x4E0D;&#x6703;&#x8B8A;&#x5316;&#x7684;&#x503C;&#xFF0C;&#x6BD4;&#x5982;&#x5708;&#x6578;&#x3001;&#x5E40;&#x6578;&#x3001;&#x5EF6;&#x9072;&#x503C;&#x3002;&#x5E38;&#x91CF;&#x8072;&#x660E;&#x548C;&#x8B8A;&#x91CF;&#x8072;&#x660E;&#x4E00;&#x822C;&#x90FD;&#x6703;&#x9F63;&#x73FE;&#x5728;&#x5305;&#x7D1A;&#x522B;&#xFF0C;&#x6240;&#x4EE5;&#x9019;&#x4E9B;&#x5E38;&#x91CF;&#x5728;&#x6574;&#x500B;&#x5305;&#x4E2D;&#x90FD;&#x662F;&#x53EF;&#x4EE5;&#x5171;&#x4EAB;&#x7684;&#xFF0C;&#x6216;&#x8005;&#x4F60;&#x4E5F;&#x53EF;&#x4EE5;&#x628A;&#x5E38;&#x91CF;&#x8072;&#x660E;&#x5B9A;&#x7FA9;&#x5728;&#x51FD;&#x6578;&#x9AD4;&#x5167;&#x90E8;&#xFF0C;&#x90A3;&#x9EBD;&#x9019;&#x7A2E;&#x5E38;&#x91CF;&#x5C31;&#x96BB;&#x80FD;&#x5728;&#x51FD;&#x6578;&#x9AD4;&#x5167;&#x7528;&#x3002;&#x76EE;&#x524D;&#x5E38;&#x91CF;&#x8072;&#x660E;&#x7684;&#x503C;&#x5FC5;&#x9B1A;&#x662F;&#x4E00;&#x500B;&#x6578;&#x5B57;&#x503C;&#x3001;&#x5B57;&#x7B26;&#x4E32;&#x6216;&#x8005;&#x4E00;&#x500B;&#x56FA;&#x5B9A;&#x7684;boolean&#x503C;&#x3002;</p>
<p>[]color.Color{...}&#x548C;gif.GIF{...}&#x9019;&#x5169;&#x500B;&#x8868;&#x9054;&#x5F0F;&#x5C31;&#x662F;&#x6211;&#x5011;&#x8AAC;&#x7684;&#x8907;&#x5408;&#x8072;&#x660E;&#xFF08;4.2&#x548C;4.4.1&#x7BC0;&#x6709;&#x8AAC;&#x660E;&#xFF09;&#x3002;&#x9019;&#x662F;&#x5BE6;&#x4F8B;&#x5316;Go&#x8A9E;&#x8A00;&#x91CC;&#x7684;&#x8907;&#x5408;&#x985E;&#x578B;&#x7684;&#x4E00;&#x7A2E;&#x5BEB;&#x6CD5;&#x3002;&#x9019;&#x91CC;&#x7684;&#x524D;&#x8005;&#x751F;&#x6210;&#x7684;&#x662F;&#x4E00;&#x500B;slice&#x5207;&#x7247;&#xFF0C;&#x5F8C;&#x8005;&#x751F;&#x6210;&#x7684;&#x662F;&#x4E00;&#x500B;struct&#x7D50;&#x69CB;&#x9AD4;&#x3002;</p>
<p>gif.GIF&#x662F;&#x4E00;&#x500B;struct&#x985E;&#x578B;&#xFF08;&#x53C3;&#x8003;4.4&#x7BC0;&#xFF09;&#x3002;struct&#x662F;&#x4E00;&#x7D44;&#x503C;&#x6216;&#x8005;&#x53EB;&#x5B57;&#x6BB5;&#x7684;&#x96C6;&#x5408;&#xFF0C;&#x4E0D;&#x540C;&#x7684;&#x985E;&#x578B;&#x96C6;&#x5408;&#x5728;&#x4E00;&#x500B;struct&#x53EF;&#x4EE5;&#x8B93;&#x6211;&#x5011;&#x4EE5;&#x4E00;&#x500B;&#x7D71;&#x4E00;&#x7684;&#x55AE;&#x5143;&#x9032;&#x884C;&#x8655;&#x7406;&#x3002;anim&#x662F;&#x4E00;&#x500B;gif.GIF&#x985E;&#x578B;&#x7684;struct&#x8B8A;&#x91CF;&#x3002;&#x9019;&#x7A2E;&#x5BEB;&#x6CD5;&#x6703;&#x751F;&#x6210;&#x4E00;&#x500B;struct&#x8B8A;&#x91CF;&#xFF0C;&#x4F75;&#x4E14;&#x5176;&#x5167;&#x90E8;&#x8B8A;&#x91CF;LoopCount&#x5B57;&#x6BB5;&#x6703;&#x88AB;&#x8A2D;&#x7F6E;&#x7232;nframes&#xFF1B;&#x800C;&#x5176;&#x5B83;&#x7684;&#x5B57;&#x6BB5;&#x6703;&#x88AB;&#x8A2D;&#x7F6E;&#x7232;&#x5404;&#x81EA;&#x985E;&#x578B;&#x9ED8;&#x8A8D;&#x7684;&#x96F6;&#x503C;&#x3002;struct&#x5167;&#x90E8;&#x7684;&#x8B8A;&#x91CF;&#x53EF;&#x4EE5;&#x4EE5;&#x4E00;&#x500B;&#x9EDE;(.)&#x4F86;&#x9032;&#x884C;&#x8A2A;&#x554F;&#xFF0C;&#x5C31;&#x50CF;&#x5728;&#x6700;&#x5F8C;&#x5169;&#x500B;&#x8CE6;&#x503C;&#x8A9E;&#x53E5;&#x4E2D;&#x986F;&#x5F0F;&#x5730;&#x66F4;&#x65B0;&#x4E86;anim&#x9019;&#x500B;struct&#x7684;Delay&#x548C;Image&#x5B57;&#x6BB5;&#x3002;</p>
<p>lissajous&#x51FD;&#x6578;&#x5167;&#x90E8;&#x6709;&#x5169;&#x5C64;&#x5D4C;&#x5957;&#x7684;for&#x5FAA;&#x74B0;&#x3002;&#x5916;&#x5C64;&#x5FAA;&#x74B0;&#x6703;&#x5FAA;&#x74B0;64&#x6B21;&#xFF0C;&#x6BCF;&#x4E00;&#x6B21;&#x90FD;&#x6703;&#x751F;&#x6210;&#x4E00;&#x500B;&#x55AE;&#x7368;&#x7684;&#x52D5;&#x7575;&#x5E40;&#x3002;&#x5B83;&#x751F;&#x6210;&#x4E86;&#x4E00;&#x500B;&#x5305;&#x542B;&#x5169;&#x7A2E;&#x9854;&#x8272;&#x7684;201&amp;201&#x5927;&#x5C0F;&#x7684;&#x5716;&#x7247;&#xFF0C;&#x767D;&#x8272;&#x548C;&#x9ED1;&#x8272;&#x3002;&#x6240;&#x6709;&#x50CF;&#x7D20;&#x9EDE;&#x90FD;&#x6703;&#x88AB;&#x9ED8;&#x8A8D;&#x8A2D;&#x7F6E;&#x7232;&#x5176;&#x96F6;&#x503C;&#xFF08;&#x4E5F;&#x5C31;&#x662F;palette&#x91CC;&#x7684;&#x7B2C;0&#x500B;&#x503C;&#xFF09;&#xFF0C;&#x9019;&#x91CC;&#x6211;&#x5011;&#x8A2D;&#x7F6E;&#x7684;&#x662F;&#x767D;&#x8272;&#x3002;&#x6BCF;&#x6B21;&#x7D93;&#x904E;&#x5167;&#x5B58;&#x5FAA;&#x74B0;&#x90FD;&#x6703;&#x901A;&#x904E;&#x8A2D;&#x7F6E;&#x50CF;&#x7D20;&#x7232;&#x9ED1;&#x8272;&#xFF0C;&#x751F;&#x6210;&#x4E00;&#x5F35;&#x65B0;&#x5716;&#x7247;&#x3002;&#x5176;&#x7D50;&#x679C;&#x6703;append&#x5230;&#x4E4B;&#x524D;&#x7D50;&#x679C;&#x4E4B;&#x5F8C;&#x3002;&#x9019;&#x91CC;&#x6211;&#x5011;&#x7528;&#x5230;&#x4E86;append(&#x53C3;&#x8003;4.2.1)&#x9019;&#x500B;&#x5167;&#x7F6E;&#x51FD;&#x6578;&#xFF0C;&#x5C07;&#x7D50;&#x679C;appen&#x5230;anim&#x4E2D;&#x7684;&#x5E40;&#x5217;&#x8868;&#x672B;&#x5C3E;&#xFF0C;&#x4F75;&#x6703;&#x8A2D;&#x7F6E;&#x4E00;&#x500B;&#x9ED8;&#x8A8D;&#x7684;80ms&#x7684;&#x5EF6;&#x9072;&#x503C;&#x3002;&#x6700;&#x7D42;&#x5FAA;&#x74B0;&#x7D50;&#x675F;&#xFF0C;&#x6240;&#x6709;&#x7684;&#x5EF6;&#x9072;&#x503C;&#x4E5F;&#x88AB;&#x7DE8;&#x78BC;&#x9032;&#x4E86;GIF&#x5716;&#x7247;&#x4E2D;&#xFF0C;&#x4F75;&#x5C07;&#x7D50;&#x679C;&#x5BEB;&#x5165;&#x5230;&#x8F38;&#x9F63;&#x6D41;&#x3002;out&#x9019;&#x500B;&#x8B8A;&#x91CF;&#x662F;io.Writer&#x985E;&#x578B;&#xFF0C;&#x9019;&#x500B;&#x985E;&#x578B;&#x8B93;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x53EF;&#x4EE5;&#x8B93;&#x6211;&#x5011;&#x628A;&#x8F38;&#x9F63;&#x7D50;&#x679C;&#x5BEB;&#x5230;&#x5F88;&#x591A;&#x76EE;&#x6A19;&#xFF0C;&#x5F88;&#x5FEB;&#x6211;&#x5011;&#x5C31;&#x53EF;&#x4EE5;&#x770B;&#x5230;&#x4E86;&#x3002;</p>
<p>&#x5167;&#x5B58;&#x5FAA;&#x74B0;&#x8A2D;&#x7F6E;&#x4E86;&#x5169;&#x500B;&#x504F;&#x632F;&#x3002;x&#x8EF8;&#x504F;&#x632F;&#x4F7F;&#x7528;&#x7684;&#x662F;&#x4E00;&#x500B;sin&#x51FD;&#x6578;&#x3002;y&#x8EF8;&#x504F;&#x632F;&#x4E5F;&#x662F;&#x4E00;&#x500B;&#x6B63;&#x7D43;&#x6CE2;&#xFF0C;&#x4F46;&#x662F;&#x5176;&#x5176;&#x76F8;&#x5C0D;x&#x8EF8;&#x7684;&#x504F;&#x632F;&#x662F;&#x4E00;&#x500B;0-3&#x7684;&#x96A8;&#x6A5F;&#x503C;&#xFF0C;&#x4F75;&#x4E14;&#x521D;&#x59CB;&#x504F;&#x632F;&#x503C;&#x662F;&#x4E00;&#x500B;&#x96F6;&#x503C;&#xFF0C;&#x4F75;&#x96A8;&#x7740;&#x52D5;&#x7575;&#x7684;&#x6BCF;&#x4E00;&#x5E40;&#x9010;&#x6F38;&#x589E;&#x52A0;&#x3002;&#x5FAA;&#x74B0;&#x6703;&#x4E00;&#x76F4;&#x8DD1;&#x5230;x&#x8EF8;&#x5B8C;&#x6210;&#x4E94;&#x6B21;&#x5B8C;&#x6574;&#x7684;&#x5FAA;&#x74B0;&#x3002;&#x6BCF;&#x4E00;&#x6B65;&#x5B83;&#x90FD;&#x6703;&#x8ABF;&#x7528;SetColorIndex&#x4F86;&#x7232;(x, y)&#x9EDE;&#x4F86;&#x67D3;&#x9ED1;&#x8272;&#x3002;</p>
<p>main&#x51FD;&#x6578;&#x8ABF;&#x7528;&#x4E86;lissajous&#x51FD;&#x6578;&#xFF0C;&#x4F75;&#x4E14;&#x7528;&#x5B83;&#x4F86;&#x5411;&#x6A19;&#x6E96;&#x8F38;&#x9F63;&#x4E2D;&#x6253;&#x5370;&#x4FE1;&#x606F;&#xFF0C;&#x6240;&#x4EE5;&#x4E0B;&#x9762;&#x9019;&#x500B;&#x547D;&#x4EE4;&#x6703;&#x50CF;&#x5716;1.1&#x4E2D;&#x7523;&#x751F;&#x4E00;&#x500B;GIF&#x52D5;&#x7575;&#x3002;</p>
<pre><code class="lang-bash">$ go build gopl.io/ch1/lissajous
<pre><code>$ go build gopl.io/ch1/lissajous
$ ./lissajous &gt;out.gif
</code></pre>
<pre><code>Exercise 1.5: &#x8129;&#x6539;&#x524D;&#x9762;&#x7684;Lissajous&#x7A0B;&#x5E8F;&#x91CC;&#x7684;&#x8ABF;&#x8272;&#x95C6;&#xFF0C;&#x7531;&#x7DD1;&#x8272;&#x6539;&#x7232;&#x9ED1;&#x8272;&#x3002;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x7528;color.RGBA{0xRR, 0xGG, 0xBB}&#x4F86;&#x5F97;&#x5230;#RRGGBB&#x9019;&#x500B;&#x8272;&#x503C;&#xFF0C;&#x4E09;&#x500B;&#x5341;&#x516D;&#x9032;&#x88FD;&#x7684;&#x5B57;&#x7B26;&#x4E32;&#x5206;&#x522B;&#x4EE3;&#x8868;&#x7D05;&#x3001;&#x7DD1;&#x3001;&#x85CD;&#x50CF;&#x7D20;&#x3002;
Exercise 1.6: &#x8129;&#x6539;Lissajous&#x7A0B;&#x5E8F;&#xFF0C;&#x8129;&#x6539;&#x5176;&#x8ABF;&#x8272;&#x95C6;&#x4F86;&#x751F;&#x6210;&#x66F4;&#x8C50;&#x5BCC;&#x7684;&#x9854;&#x8272;&#xFF0C;&#x7136;&#x5F8C;&#x8129;&#x6539;SetColorIndex&#x7684;&#x7B2C;&#x4E09;&#x500B;&#x53C3;&#x6578;&#xFF0C;&#x770B;&#x770B;&#x986F;&#x793A;&#x7D50;&#x679C;&#x5427;&#x3002;
</code></pre>
</code></pre><p><strong>&#x7DF4;&#x7FD2; 1.5&#xFF1A;</strong> &#x8129;&#x6539;&#x524D;&#x9762;&#x7684;Lissajous&#x7A0B;&#x5E8F;&#x91CC;&#x7684;&#x8ABF;&#x8272;&#x95C6;&#xFF0C;&#x7531;&#x7DD1;&#x8272;&#x6539;&#x7232;&#x9ED1;&#x8272;&#x3002;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x7528;color.RGBA{0xRR, 0xGG, 0xBB}&#x4F86;&#x5F97;&#x5230;#RRGGBB&#x9019;&#x500B;&#x8272;&#x503C;&#xFF0C;&#x4E09;&#x500B;&#x5341;&#x516D;&#x9032;&#x88FD;&#x7684;&#x5B57;&#x7B26;&#x4E32;&#x5206;&#x522B;&#x4EE3;&#x8868;&#x7D05;&#x3001;&#x7DD1;&#x3001;&#x85CD;&#x50CF;&#x7D20;&#x3002;</p>
<p><strong>&#x7DF4;&#x7FD2; 1.6&#xFF1A;</strong> &#x8129;&#x6539;Lissajous&#x7A0B;&#x5E8F;&#xFF0C;&#x8129;&#x6539;&#x5176;&#x8ABF;&#x8272;&#x95C6;&#x4F86;&#x751F;&#x6210;&#x66F4;&#x8C50;&#x5BCC;&#x7684;&#x9854;&#x8272;&#xFF0C;&#x7136;&#x5F8C;&#x8129;&#x6539;SetColorIndex&#x7684;&#x7B2C;&#x4E09;&#x500B;&#x53C3;&#x6578;&#xFF0C;&#x770B;&#x770B;&#x986F;&#x793A;&#x7D50;&#x679C;&#x5427;&#x3002;</p>
</section>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="1.5" data-chapter-title="穫取URL" data-filepath="ch1/ch1-05.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="1.5" data-chapter-title="穫取URL" data-filepath="ch1/ch1-05.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>
@@ -2023,12 +2023,13 @@
<section class="normal" id="section-">
<h2 id="15-&#x7A6B;&#x53D6;url">1.5 &#x7A6B;&#x53D6;URL</h2>
<p>&#x5C0D;&#x65BC;&#x5F88;&#x591A;&#x61C9;&#x7528;&#x4F86;&#x8AAC;&#xFF0C;&#x8A2A;&#x554F;&#x4E92;&#x806F;&#x7DB2;&#x4E0A;&#x7684;&#x4FE1;&#x606F;&#x548C;&#x8A2A;&#x554F;&#x672C;&#x5730;&#x6587;&#x4EF6;&#x7E6B;&#x7D71;&#x4E00;&#x6A23;&#x91CD;&#x8981;&#x3002;Go&#x5728;net&#x9019;&#x500B;&#x5927;package&#x4E0B;&#x63D0;&#x4F9B;&#x4E86;&#x4E00;&#x7E6B;&#x5217;&#x7684;package&#x4F86;&#x505A;&#x9019;&#x4EF6;&#x4E8B;&#x60C5;&#xFF0C;&#x4F7F;&#x7528;&#x9019;&#x4E9B;&#x5305;&#x53EF;&#x4EE5;&#x66F4;&#x7C21;&#x55AE;&#x5730;&#x7528;&#x7DB2;&#x7D61;&#x6536;&#x767C;&#x4FE1;&#x606F;&#xFF0C;&#x9084;&#x53EF;&#x4EE5;&#x5EFA;&#x7ACB;&#x66F4;&#x5E95;&#x5C64;&#x7684;&#x7DB2;&#x7D61;&#x9023;&#x63A5;&#xFF0C;&#x7DE8;&#x5BEB;&#x670D;&#x52D9;&#x5668;&#x7A0B;&#x5E8F;&#x3002;&#x5728;&#x9019;&#x4E9B;&#x60C5;&#x666F;&#x4E0B;&#xFF0C;Go&#x539F;&#x751F;&#x7684;&#x4F75;&#x767C;&#x7279;&#x6027;(&#x5728;&#x7B2C;&#x516B;&#x7AE0;&#x4E2D;&#x6703;&#x4ECB;&#x7D39;)&#x5C31;&#x986F;&#x5F97;&#x5C24;&#x5176;&#x597D;&#x7528;&#x4E86;&#x3002;</p>
<p>&#x7232;&#x4E86;&#x6700;&#x7C21;&#x55AE;&#x5730;&#x5C55;&#x793A;&#x57FA;&#x65BC;HTTP&#x7A6B;&#x53D6;&#x4FE1;&#x606F;&#x7684;&#x65B9;&#x5F0F;&#xFF0C;&#x4E0B;&#x9762;&#x7D66;&#x9F63;&#x4E00;&#x500B;&#x793A;&#x4F8B;&#x7A0B;&#x5E8F;fetch&#xFF0C;&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#x5C07;&#x7A6B;&#x53D6;&#x5C0D;&#x61C9;&#x7684;url&#xFF0C;&#x4F75;&#x5C07;&#x5176;&#x6E90;&#x6587;&#x672C;&#x6253;&#x5370;&#x9F63;&#x4F86;&#xFF1B;&#x9019;&#x500B;&#x4F8B;&#x5B50;&#x7684;&#x9748;&#x611F;&#x4F86;&#x6E90;&#x65BC;curl&#x5DE5;&#x5177;(&#x8B6F;&#x8A3B;&#xFF1A;unix&#x4E0B;&#x7684;&#x4E00;&#x500B;&#x5DE5;&#x5177;)&#x3002;&#x7576;&#x7136;&#x4E86;&#xFF0C;curl&#x63D0;&#x4F9B;&#x7684;&#x529F;&#x80FD;&#x66F4;&#x7232;&#x8907;&#x96DC;&#x8C50;&#x5BCC;&#xFF0C;&#x9019;&#x91CC;&#x6211;&#x5011;&#x96BB;&#x7DE8;&#x5BEB;&#x6700;&#x7C21;&#x55AE;&#x7684;&#x6A23;&#x4F8B;&#x3002;&#x4E4B;&#x5F8C;&#x6211;&#x5011;&#x9084;&#x6703;&#x5728;&#x672C;&#x66F8;&#x4E2D;&#x7D93;&#x5E38;&#x7528;&#x5230;&#x9019;&#x500B;&#x4F8B;&#x5B50;&#x3002;</p>
<h2 id="15-&#x7A6B;&#x53D6;url">1.5. &#x7A6B;&#x53D6;URL</h2>
<p>&#x5C0D;&#x65BC;&#x5F88;&#x591A;&#x73FE;&#x4EE3;&#x61C9;&#x7528;&#x4F86;&#x8AAC;&#xFF0C;&#x8A2A;&#x554F;&#x4E92;&#x806F;&#x7DB2;&#x4E0A;&#x7684;&#x4FE1;&#x606F;&#x548C;&#x8A2A;&#x554F;&#x672C;&#x5730;&#x6587;&#x4EF6;&#x7E6B;&#x7D71;&#x4E00;&#x6A23;&#x91CD;&#x8981;&#x3002;Go&#x8A9E;&#x8A00;&#x5728;net&#x9019;&#x500B;&#x5F37;&#x5927;package&#x7684;&#x5E6B;&#x52A9;&#x4E0B;&#x63D0;&#x4F9B;&#x4E86;&#x4E00;&#x7E6B;&#x5217;&#x7684;package&#x4F86;&#x505A;&#x9019;&#x4EF6;&#x4E8B;&#x60C5;&#xFF0C;&#x4F7F;&#x7528;&#x9019;&#x4E9B;&#x5305;&#x53EF;&#x4EE5;&#x66F4;&#x7C21;&#x55AE;&#x5730;&#x7528;&#x7DB2;&#x7D61;&#x6536;&#x767C;&#x4FE1;&#x606F;&#xFF0C;&#x9084;&#x53EF;&#x4EE5;&#x5EFA;&#x7ACB;&#x66F4;&#x5E95;&#x5C64;&#x7684;&#x7DB2;&#x7D61;&#x9023;&#x63A5;&#xFF0C;&#x7DE8;&#x5BEB;&#x670D;&#x52D9;&#x5668;&#x7A0B;&#x5E8F;&#x3002;&#x5728;&#x9019;&#x4E9B;&#x60C5;&#x666F;&#x4E0B;&#xFF0C;Go&#x8A9E;&#x8A00;&#x539F;&#x751F;&#x7684;&#x4F75;&#x767C;&#x7279;&#x6027;&#xFF08;&#x5728;&#x7B2C;&#x516B;&#x7AE0;&#x4E2D;&#x6703;&#x4ECB;&#x7D39;&#xFF09;&#x5C31;&#x986F;&#x5F97;&#x5C24;&#x5176;&#x597D;&#x7528;&#x4E86;&#x3002;</p>
<p>&#x7232;&#x4E86;&#x6700;&#x7C21;&#x55AE;&#x5730;&#x5C55;&#x793A;&#x57FA;&#x65BC;HTTP&#x7A6B;&#x53D6;&#x4FE1;&#x606F;&#x7684;&#x65B9;&#x5F0F;&#xFF0C;&#x4E0B;&#x9762;&#x7D66;&#x9F63;&#x4E00;&#x500B;&#x793A;&#x4F8B;&#x7A0B;&#x5E8F;fetch&#xFF0C;&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#x5C07;&#x7A6B;&#x53D6;&#x5C0D;&#x61C9;&#x7684;url&#xFF0C;&#x4F75;&#x5C07;&#x5176;&#x6E90;&#x6587;&#x672C;&#x6253;&#x5370;&#x9F63;&#x4F86;&#xFF1B;&#x9019;&#x500B;&#x4F8B;&#x5B50;&#x7684;&#x9748;&#x611F;&#x4F86;&#x6E90;&#x65BC;curl&#x5DE5;&#x5177;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;unix&#x4E0B;&#x7684;&#x4E00;&#x500B;&#x7DB2;&#x7D61;&#x76F8;&#x95DC;&#x7684;&#x5DE5;&#x5177;&#xFF09;&#x3002;&#x7576;&#x7136;&#x4E86;&#xFF0C;curl&#x63D0;&#x4F9B;&#x7684;&#x529F;&#x80FD;&#x66F4;&#x7232;&#x8907;&#x96DC;&#x8C50;&#x5BCC;&#xFF0C;&#x9019;&#x91CC;&#x6211;&#x5011;&#x96BB;&#x7DE8;&#x5BEB;&#x6700;&#x7C21;&#x55AE;&#x7684;&#x6A23;&#x4F8B;&#x3002;&#x4E4B;&#x5F8C;&#x6211;&#x5011;&#x9084;&#x6703;&#x5728;&#x672C;&#x66F8;&#x4E2D;&#x7D93;&#x5E38;&#x7528;&#x5230;&#x9019;&#x500B;&#x4F8B;&#x5B50;&#x3002;</p>
<pre><code class="lang-go">gopl.io/ch1/fetch
<span class="hljs-comment">// Fetch prints the content found at a URL.</span>
<span class="hljs-keyword">package</span> main
<span class="hljs-keyword">import</span> (
<span class="hljs-string">&quot;fmt&quot;</span>
<span class="hljs-string">&quot;io/ioutil&quot;</span>
@@ -2053,23 +2054,24 @@
}
}
</code></pre>
<p>&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#x5F9E;&#x5169;&#x500B;package&#x4E2D;&#x5C0E;&#x5165;&#x4E86;&#x51FD;&#x6578;&#xFF0C;net/http&#x548C;io/ioutil&#xFF0C;http.Get&#x51FD;&#x6578;&#x662F;&#x5275;&#x5EFA;HTTP&#x8ACB;&#x6C42;&#x7684;&#x51FD;&#x6578;&#xFF0C;&#x5982;&#x679C;&#x7A6B;&#x53D6;&#x904E;&#x7A0B;&#x6C92;&#x6709;&#x9F63;&#x932F;&#xFF0C;&#x90A3;&#x9EBD;&#x6703;&#x5728;resp&#x9019;&#x500B;&#x7D50;&#x69CB;&#x9AD4;&#x4E2D;&#x5F97;&#x5230;&#x8A2A;&#x554F;&#x7684;&#x8ACB;&#x6C42;&#x7D50;&#x679C;&#x3002;resp&#x7684;Body&#x5B57;&#x6BB5;&#x5305;&#x62EC;&#x4E00;&#x500B;&#x53EF;&#x8B80;&#x7684;&#x670D;&#x52D9;&#x5668;&#x97FF;&#x61C9;&#x6D41;&#x3002;&#x9019;&#x4E4B;&#x5F8C;ioutil.ReadAll&#x51FD;&#x6578;&#x5F9E;response&#x4E2D;&#x8B80;&#x53D6;&#x5230;&#x5168;&#x90E8;&#x5167;&#x5BB9;&#xFF1B;&#x5176;&#x7D50;&#x679C;&#x4FDD;&#x5B58;&#x5728;&#x8B8A;&#x91CF;b&#x4E2D;&#x3002;resp.Body.Close&#x9019;&#x4E00;&#x53E5;&#x6703;&#x95DC;&#x9589;resp&#x7684;Body&#x6D41;&#xFF0C;&#x9632;&#x6B62;&#x8CC7;&#x6E90;&#x6D29;&#x9732;&#xFF0C;Printf&#x51FD;&#x6578;&#x6703;&#x5C07;&#x7D50;&#x679C;b&#x5BEB;&#x9F63;&#x5230;&#x6A19;&#x6E96;&#x8F38;&#x9F63;&#x6D41;&#x4E2D;&#x3002;</p>
<pre><code class="lang-bash">$ go build gopl.io/ch1/fetch
<p>&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#x5F9E;&#x5169;&#x500B;package&#x4E2D;&#x5C0E;&#x5165;&#x4E86;&#x51FD;&#x6578;&#xFF0C;net/http&#x548C;io/ioutil&#x5305;&#xFF0C;http.Get&#x51FD;&#x6578;&#x662F;&#x5275;&#x5EFA;HTTP&#x8ACB;&#x6C42;&#x7684;&#x51FD;&#x6578;&#xFF0C;&#x5982;&#x679C;&#x7A6B;&#x53D6;&#x904E;&#x7A0B;&#x6C92;&#x6709;&#x9F63;&#x932F;&#xFF0C;&#x90A3;&#x9EBD;&#x6703;&#x5728;resp&#x9019;&#x500B;&#x7D50;&#x69CB;&#x9AD4;&#x4E2D;&#x5F97;&#x5230;&#x8A2A;&#x554F;&#x7684;&#x8ACB;&#x6C42;&#x7D50;&#x679C;&#x3002;resp&#x7684;Body&#x5B57;&#x6BB5;&#x5305;&#x62EC;&#x4E00;&#x500B;&#x53EF;&#x8B80;&#x7684;&#x670D;&#x52D9;&#x5668;&#x97FF;&#x61C9;&#x6D41;&#x3002;&#x9019;&#x4E4B;&#x5F8C;ioutil.ReadAll&#x51FD;&#x6578;&#x5F9E;response&#x4E2D;&#x8B80;&#x53D6;&#x5230;&#x5168;&#x90E8;&#x5167;&#x5BB9;&#xFF1B;&#x5176;&#x7D50;&#x679C;&#x4FDD;&#x5B58;&#x5728;&#x8B8A;&#x91CF;b&#x4E2D;&#x3002;resp.Body.Close&#x9019;&#x4E00;&#x53E5;&#x6703;&#x95DC;&#x9589;resp&#x7684;Body&#x6D41;&#xFF0C;&#x9632;&#x6B62;&#x8CC7;&#x6E90;&#x6D29;&#x9732;&#xFF0C;Printf&#x51FD;&#x6578;&#x6703;&#x5C07;&#x7D50;&#x679C;b&#x5BEB;&#x9F63;&#x5230;&#x6A19;&#x6E96;&#x8F38;&#x9F63;&#x6D41;&#x4E2D;&#x3002;</p>
<pre><code>$ go build gopl.io/ch1/fetch
$ ./fetch http://gopl.io
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;The Go Programming Language&lt;/title&gt;title&gt;
...
</code></pre>
<p>HTTP&#x8ACB;&#x6C42;&#x5982;&#x679C;&#x5931;&#x6557;&#x4E86;&#x7684;&#x8A71;&#xFF0C;&#x6703;&#x5F97;&#x5230;&#x4E0B;&#x9762;&#x9019;&#x6A23;&#x7684;&#x7D50;&#x679C;&#xFF1A;</p>
<pre><code class="lang-bash">$ ./fetch http://bad.gopl.io
</code></pre><p>HTTP&#x8ACB;&#x6C42;&#x5982;&#x679C;&#x5931;&#x6557;&#x4E86;&#x7684;&#x8A71;&#xFF0C;&#x6703;&#x5F97;&#x5230;&#x4E0B;&#x9762;&#x9019;&#x6A23;&#x7684;&#x7D50;&#x679C;&#xFF1A;</p>
<pre><code>$ ./fetch http://bad.gopl.io
fetch: Get http://bad.gopl.io: dial tcp: lookup bad.gopl.io: no such host
</code></pre>
<p>&#x7121;&#x8AD6;&#x54EA;&#x7A2E;&#x5931;&#x6557;&#x539F;&#x56E0;&#xFF0C;&#x6211;&#x5011;&#x7684;&#x7A0B;&#x5E8F;&#x90FD;&#x7528;&#x4E86;os.Exit&#x51FD;&#x6578;&#x4F86;&#x7D42;&#x6B62;&#x9032;&#x7A0B;&#xFF0C;&#x4F75;&#x4E14;&#x8FD4;&#x8FF4;&#x4E00;&#x500B;status&#x932F;&#x8AA4;&#x78BC;&#xFF0C;&#x5176;&#x503C;&#x7232;1&#x3002;</p>
<pre><code>Exercise1.7: &#x51FD;&#x6578;&#x8ABF;&#x7528;io.Copy(dst, src)&#x6703;&#x5F9E;src&#x4E2D;&#x8B80;&#x53D6;&#x5167;&#x5BB9;&#xFF0C;&#x4F75;&#x5C07;&#x8B80;&#x5230;&#x7684;&#x7D50;&#x679C;&#x5BEB;&#x5165;&#x5230;dst&#x4E2D;&#xFF0C;&#x4F7F;&#x7528;&#x9019;&#x500B;&#x51FD;&#x6578;&#x66FF;&#x4EE3;&#x6389;&#x4F8B;&#x5B50;&#x4E2D;&#x7684;ioutil.ReadAll&#x4F86;&#x62F7;&#x8C9D;&#x97FF;&#x61C9;&#x7D50;&#x69CB;&#x9AD4;&#x5230;os.Stdout&#xFF0C;&#x907F;&#x514D;&#x7533;&#x8ACB;&#x4E00;&#x500B;&#x7DE9;&#x885D;&#x5340;(&#x4F8B;&#x5B50;&#x4E2D;&#x7684;b)&#x4F86;&#x5B58;&#x5132;&#x3002;&#x8A18;&#x5F97;&#x8655;&#x7406;io.Copy&#x8FD4;&#x8FF4;&#x7D50;&#x679C;&#x4E2D;&#x7684;&#x932F;&#x8AA4;&#x3002;
Exercise 1.8: &#x8129;&#x6539;fetch&#x9019;&#x500B;&#x8303;&#x4F8B;&#xFF0C;&#x5982;&#x679C;&#x8F38;&#x5165;&#x7684;url&#x53C3;&#x6578;&#x6C92;&#x6709;http://&#x524D;&#x7DB4;&#x7684;&#x8A71;&#xFF0C;&#x7232;&#x9019;&#x500B;url&#x52A0;&#x4E0A;&#x8A72;&#x524D;&#x7DB4;&#x3002;&#x4F60;&#x53EF;&#x80FD;&#x6703;&#x7528;&#x5230;strings.HasPrefix&#x9019;&#x500B;&#x51FD;&#x6578;&#x3002;
Exercise 1.9: &#x8129;&#x6539;fetch&#x6253;&#x5370;&#x9F63;HTTP&#x5354;&#x8B70;&#x7684;&#x72C0;&#x614B;&#x78BC;&#xFF0C;&#x53EF;&#x4EE5;&#x5F9E;resp.Status&#x8B8A;&#x91CF;&#x5F97;&#x5230;&#x8A72;&#x72C0;&#x614B;&#x78BC;&#x3002;
</code></pre>
</code></pre><p>&#x8B6F;&#x8A3B;&#xFF1A;&#x5728;&#x5927;&#x5172;&#x671D;&#x7684;&#x7DB2;&#x7D61;&#x74B0;&#x5883;&#x4E0B;&#x5F88;&#x5BB9;&#x6613;&#x91CD;&#x73FE;&#x9019;&#x7A2E;&#x932F;&#x8AA4;&#xFF0C;&#x4E0B;&#x9762;&#x662F;Windows&#x4E0B;&#x904B;&#x884C;&#x5F97;&#x5230;&#x7684;&#x932F;&#x8AA4;&#x4FE1;&#x606F;&#xFF1A;</p>
<pre><code>$ go run main.go http://gopl.io
fetch: Get http://gopl.io: dial tcp: lookup gopl.io: getaddrinfow: No such host is known.
</code></pre><p>&#x7121;&#x8AD6;&#x54EA;&#x7A2E;&#x5931;&#x6557;&#x539F;&#x56E0;&#xFF0C;&#x6211;&#x5011;&#x7684;&#x7A0B;&#x5E8F;&#x90FD;&#x7528;&#x4E86;os.Exit&#x51FD;&#x6578;&#x4F86;&#x7D42;&#x6B62;&#x9032;&#x7A0B;&#xFF0C;&#x4F75;&#x4E14;&#x8FD4;&#x8FF4;&#x4E00;&#x500B;status&#x932F;&#x8AA4;&#x78BC;&#xFF0C;&#x5176;&#x503C;&#x7232;1&#x3002;</p>
<p><strong>&#x7DF4;&#x7FD2; 1.7&#xFF1A;</strong> &#x51FD;&#x6578;&#x8ABF;&#x7528;io.Copy(dst, src)&#x6703;&#x5F9E;src&#x4E2D;&#x8B80;&#x53D6;&#x5167;&#x5BB9;&#xFF0C;&#x4F75;&#x5C07;&#x8B80;&#x5230;&#x7684;&#x7D50;&#x679C;&#x5BEB;&#x5165;&#x5230;dst&#x4E2D;&#xFF0C;&#x4F7F;&#x7528;&#x9019;&#x500B;&#x51FD;&#x6578;&#x66FF;&#x4EE3;&#x6389;&#x4F8B;&#x5B50;&#x4E2D;&#x7684;ioutil.ReadAll&#x4F86;&#x62F7;&#x8C9D;&#x97FF;&#x61C9;&#x7D50;&#x69CB;&#x9AD4;&#x5230;os.Stdout&#xFF0C;&#x907F;&#x514D;&#x7533;&#x8ACB;&#x4E00;&#x500B;&#x7DE9;&#x885D;&#x5340;&#xFF08;&#x4F8B;&#x5B50;&#x4E2D;&#x7684;b&#xFF09;&#x4F86;&#x5B58;&#x5132;&#x3002;&#x8A18;&#x5F97;&#x8655;&#x7406;io.Copy&#x8FD4;&#x8FF4;&#x7D50;&#x679C;&#x4E2D;&#x7684;&#x932F;&#x8AA4;&#x3002;</p>
<p><strong>&#x7DF4;&#x7FD2; 1.8&#xFF1A;</strong> &#x8129;&#x6539;fetch&#x9019;&#x500B;&#x8303;&#x4F8B;&#xFF0C;&#x5982;&#x679C;&#x8F38;&#x5165;&#x7684;url&#x53C3;&#x6578;&#x6C92;&#x6709; <code>http://</code> &#x524D;&#x7DB4;&#x7684;&#x8A71;&#xFF0C;&#x7232;&#x9019;&#x500B;url&#x52A0;&#x4E0A;&#x8A72;&#x524D;&#x7DB4;&#x3002;&#x4F60;&#x53EF;&#x80FD;&#x6703;&#x7528;&#x5230;strings.HasPrefix&#x9019;&#x500B;&#x51FD;&#x6578;&#x3002;</p>
<p><strong>&#x7DF4;&#x7FD2; 1.9&#xFF1A;</strong> &#x8129;&#x6539;fetch&#x6253;&#x5370;&#x9F63;HTTP&#x5354;&#x8B70;&#x7684;&#x72C0;&#x614B;&#x78BC;&#xFF0C;&#x53EF;&#x4EE5;&#x5F9E;resp.Status&#x8B8A;&#x91CF;&#x5F97;&#x5230;&#x8A72;&#x72C0;&#x614B;&#x78BC;&#x3002;</p>
</section>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="1.6" data-chapter-title="併發穫取多個URL" data-filepath="ch1/ch1-06.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="1.6" data-chapter-title="併發穫取多個URL" data-filepath="ch1/ch1-06.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>
@@ -2023,8 +2023,8 @@
<section class="normal" id="section-">
<h2 id="16-&#x4F75;&#x767C;&#x7A6B;&#x53D6;&#x591A;&#x500B;url">1.6 &#x4F75;&#x767C;&#x7A6B;&#x53D6;&#x591A;&#x500B;URL</h2>
<p>Go&#x8A9E;&#x8A00;&#x6700;&#x6709;&#x610F;&#x601D;&#x4F75;&#x4E14;&#x6700;&#x65B0;&#x5947;&#x7684;&#x7279;&#x6027;&#x5C31;&#x662F;&#x5176;&#x5C0D;&#x4F75;&#x767C;&#x7DE8;&#x7A0B;&#x7684;&#x652F;&#x6301;&#x4E86;&#x3002;&#x4F75;&#x767C;&#x7DE8;&#x7A0B;&#x662F;&#x4E00;&#x500B;&#x5927;&#x8A71;&#x984C;&#xFF0C;&#x5728;&#x7B2C;&#x516B;&#x7AE0;&#x548C;&#x7B2C;&#x4E5D;&#x7AE0;&#x4E2D;&#x6703;&#x8B1B;&#x5230;&#x3002;&#x9019;&#x91CC;&#x6211;&#x5011;&#x96BB;&#x6DFA;&#x5690;&#x8F12;&#x6B62;&#x5730;&#x4F86;&#x9AD4;&#x9A57;&#x4E00;&#x4E0B;Go&#x8A9E;&#x8A00;&#x91CC;&#x7684;goroutine&#x548C;channel&#x3002;</p>
<h2 id="16-&#x4F75;&#x767C;&#x7A6B;&#x53D6;&#x591A;&#x500B;url">1.6. &#x4F75;&#x767C;&#x7A6B;&#x53D6;&#x591A;&#x500B;URL</h2>
<p>Go&#x8A9E;&#x8A00;&#x6700;&#x6709;&#x610F;&#x601D;&#x4F75;&#x4E14;&#x6700;&#x65B0;&#x5947;&#x7684;&#x7279;&#x6027;&#x5C31;&#x662F;&#x5176;&#x5C0D;&#x4F75;&#x767C;&#x7DE8;&#x7A0B;&#x7684;&#x652F;&#x6301;&#x4E86;&#x3002;&#x4F75;&#x767C;&#x7DE8;&#x7A0B;&#x662F;&#x4E00;&#x500B;&#x5927;&#x8A71;&#x984C;&#xFF0C;&#x5728;&#x7B2C;&#x516B;&#x7AE0;&#x548C;&#x7B2C;&#x4E5D;&#x7AE0;&#x4E2D;&#x6703;&#x5C08;&#x9580;&#x8B1B;&#x5230;&#x3002;&#x9019;&#x91CC;&#x6211;&#x5011;&#x96BB;&#x6DFA;&#x5690;&#x8F12;&#x6B62;&#x5730;&#x4F86;&#x9AD4;&#x9A57;&#x4E00;&#x4E0B;Go&#x8A9E;&#x8A00;&#x91CC;&#x7684;goroutine&#x548C;channel&#x3002;</p>
<p>&#x4E0B;&#x9762;&#x7684;&#x4F8B;&#x5B50;fetchall&#xFF0C;&#x548C;&#x4E0A;&#x9762;&#x7684;fetch&#x7A0B;&#x5E8F;&#x6240;&#x8981;&#x505A;&#x7684;&#x5DE5;&#x4F5C;&#x662F;&#x4E00;&#x81F4;&#x7684;&#xFF0C;&#x4F46;&#x662F;&#x9019;&#x500B;fetchall&#x7684;&#x7279;&#x522B;&#x4E4B;&#x8655;&#x5728;&#x65BC;&#x5B83;&#x6703;&#x540C;&#x6642;&#x53BB;&#x7A6B;&#x53D6;&#x6240;&#x6709;&#x7684;URL&#xFF0C;&#x6240;&#x4EE5;&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#x7684;&#x7A6B;&#x53D6;&#x6642;&#x9593;&#x4E0D;&#x6703;&#x8D85;&#x904E;&#x57F7;&#x884C;&#x6642;&#x9593;&#x6700;&#x9577;&#x7684;&#x90A3;&#x4E00;&#x500B;&#x4EFB;&#x52D9;&#xFF0C;&#x800C;&#x4E0D;&#x6703;&#x50CF;&#x524D;&#x9762;&#x7684;fetch&#x7A0B;&#x5E8F;&#x4E00;&#x6A23;&#xFF0C;&#x57F7;&#x884C;&#x6642;&#x9593;&#x662F;&#x6240;&#x6709;&#x4EFB;&#x52D9;&#x57F7;&#x884C;&#x6642;&#x9593;&#x4E4B;&#x548C;&#x3002;&#x9019;&#x6B21;&#x7684;fetchall&#x7A0B;&#x5E8F;&#x96BB;&#x6703;&#x6253;&#x5370;&#x7A6B;&#x53D6;&#x7684;&#x5167;&#x5BB9;&#x5927;&#x5C0F;&#x548C;&#x7D93;&#x904E;&#x7684;&#x6642;&#x9593;&#xFF0C;&#x4E0D;&#x6703;&#x50CF;&#x4E0A;&#x9762;&#x90A3;&#x6A23;&#x6253;&#x5370;&#x9F63;&#x7A6B;&#x53D6;&#x7684;&#x5167;&#x5BB9;&#x3002;</p>
<pre><code class="lang-go">gopl.io/ch1/fetchall
<span class="hljs-comment">// Fetchall fetches URLs in parallel and reports their times and sizes.</span>
@@ -2069,17 +2069,16 @@
}
</code></pre>
<p>&#x4E0B;&#x9762;&#x662F;&#x4E00;&#x500B;&#x4F7F;&#x7528;&#x7684;&#x4F8B;&#x5B50;</p>
<pre><code class="lang-bash">$ go build gopl.io/ch1/fetchall
<pre><code>$ go build gopl.io/ch1/fetchall
$ ./fetchall https://golang.org http://gopl.io https://godoc.org
<span class="hljs-number">0.14</span>s <span class="hljs-number">6852</span> https://godoc.org
<span class="hljs-number">0.16</span>s <span class="hljs-number">7261</span> https://golang.org
<span class="hljs-number">0.48</span>s <span class="hljs-number">2475</span> http://gopl.io
<span class="hljs-number">0.48</span>s elapsed
</code></pre>
<p>goroutine&#x662F;&#x4E00;&#x7A2E;&#x51FD;&#x6578;&#x7684;&#x4F75;&#x884C;&#x57F7;&#x884C;&#x65B9;&#x5F0F;&#xFF0C;&#x800C;channel&#x662F;&#x7528;&#x4F86;&#x5728;goroutine&#x4E4B;&#x9593;&#x9032;&#x884C;&#x53C3;&#x6578;&#x50B3;&#x905E;&#x3002;main&#x51FD;&#x6578;&#x537D;&#x904B;&#x884C;&#x5728;&#x4E00;&#x500B;goroutine&#x4E2D;&#xFF0C;&#x800C;go function&#x5247;&#x8868;&#x793A;&#x5275;&#x5EFA;&#x4E00;&#x500B;&#x65B0;&#x7684;goroutine&#xFF0C;&#x4F75;&#x8B93;&#x9019;&#x500B;&#x51FD;&#x6578;&#x53BB;&#x9019;&#x500B;&#x65B0;&#x7684;goroutine&#x91CC;&#x57F7;&#x884C;&#x3002;</p>
<p>main&#x51FD;&#x6578;&#x4E2D;&#x7528;make&#x51FD;&#x6578;&#x5275;&#x5EFA;&#x4E86;&#x4E00;&#x500B;&#x50B3;&#x905E;string&#x985E;&#x578B;&#x53C3;&#x6578;&#x7684;channel&#xFF0C;&#x5C0D;&#x6BCF;&#x4E00;&#x500B;&#x547D;&#x4EE4;&#x884C;&#x53C3;&#x6578;&#xFF0C;&#x6211;&#x5011;&#x90FD;&#x7528;go&#x9019;&#x500B;&#x95DC;&#x9375;&#x5B57;&#x4F86;&#x5275;&#x5EFA;&#x4E00;&#x500B;goroutine&#xFF0C;&#x4F75;&#x4E14;&#x8B93;&#x51FD;&#x6578;&#x5728;&#x9019;&#x500B;goroutine&#x7570;&#x6B65;&#x57F7;&#x884C;http.Get&#x65B9;&#x6CD5;&#x3002;&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#x91CC;&#x7684;io.Copy&#x6703;&#x628A;&#x97FF;&#x61C9;&#x7684;Body&#x5167;&#x5BB9;&#x62F7;&#x8C9D;&#x5230;ioutil.Discard&#x8F38;&#x9F63;&#x6D41;&#x4E2D;&#xFF0C;&#x56E0;&#x7232;&#x6211;&#x5011;&#x9700;&#x8981;&#x9019;&#x500B;&#x65B9;&#x6CD5;&#x8FD4;&#x8FF4;&#x7684;&#x5B57;&#x7BC0;&#x6578;&#xFF0C;&#x4F46;&#x662F;&#x53C8;&#x4E0D;&#x60F3;&#x8981;&#x5176;&#x5167;&#x5BB9;&#x3002;&#x6BCF;&#x7576;&#x8ACB;&#x6C42;&#x8FD4;&#x8FF4;&#x5167;&#x5BB9;&#x6642;&#xFF0C;fetch&#x51FD;&#x6578;&#x90FD;&#x6703;&#x5F80;ch&#x9019;&#x500B;channel&#x91CC;&#x5BEB;&#x5165;&#x4E00;&#x500B;&#x5B57;&#x7B26;&#x4E32;&#xFF0C;&#x7531;main&#x51FD;&#x6578;&#x91CC;&#x7684;&#x7B2C;&#x4E8C;&#x500B;for&#x5FAA;&#x74B0;&#x4F86;&#x8655;&#x7406;&#x4F75;&#x6253;&#x5370;channel&#x91CC;&#x7684;&#x9019;&#x500B;&#x5B57;&#x7B26;&#x4E32;&#x3002;</p>
0.14s 6852 https://godoc.org
0.16s 7261 https://golang.org
0.48s 2475 http://gopl.io
0.48s elapsed
</code></pre><p>goroutine&#x662F;&#x4E00;&#x7A2E;&#x51FD;&#x6578;&#x7684;&#x4F75;&#x767C;&#x57F7;&#x884C;&#x65B9;&#x5F0F;&#xFF0C;&#x800C;channel&#x662F;&#x7528;&#x4F86;&#x5728;goroutine&#x4E4B;&#x9593;&#x9032;&#x884C;&#x53C3;&#x6578;&#x50B3;&#x905E;&#x3002;main&#x51FD;&#x6578;&#x4E5F;&#x662F;&#x904B;&#x884C;&#x5728;&#x4E00;&#x500B;goroutine&#x4E2D;&#xFF0C;&#x800C;go function&#x5247;&#x8868;&#x793A;&#x5275;&#x5EFA;&#x4E00;&#x500B;&#x65B0;&#x7684;goroutine&#xFF0C;&#x4F75;&#x5728;&#x9019;&#x500B;&#x9019;&#x500B;&#x65B0;&#x7684;goroutine&#x91CC;&#x57F7;&#x884C;&#x9019;&#x500B;&#x51FD;&#x6578;&#x3002;</p>
<p>main&#x51FD;&#x6578;&#x4E2D;&#x7528;make&#x51FD;&#x6578;&#x5275;&#x5EFA;&#x4E86;&#x4E00;&#x500B;&#x50B3;&#x905E;string&#x985E;&#x578B;&#x53C3;&#x6578;&#x7684;channel&#xFF0C;&#x5C0D;&#x6BCF;&#x4E00;&#x500B;&#x547D;&#x4EE4;&#x884C;&#x53C3;&#x6578;&#xFF0C;&#x6211;&#x5011;&#x90FD;&#x7528;go&#x9019;&#x500B;&#x95DC;&#x9375;&#x5B57;&#x4F86;&#x5275;&#x5EFA;&#x4E00;&#x500B;goroutine&#xFF0C;&#x4F75;&#x4E14;&#x8B93;&#x51FD;&#x6578;&#x5728;&#x9019;&#x500B;goroutine&#x7570;&#x6B65;&#x57F7;&#x884C;http.Get&#x65B9;&#x6CD5;&#x3002;&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#x91CC;&#x7684;io.Copy&#x6703;&#x628A;&#x97FF;&#x61C9;&#x7684;Body&#x5167;&#x5BB9;&#x62F7;&#x8C9D;&#x5230;ioutil.Discard&#x8F38;&#x9F63;&#x6D41;&#x4E2D;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;&#x9019;&#x662F;&#x4E00;&#x500B;&#x5783;&#x573E;&#x6876;&#xFF0C;&#x53EF;&#x4EE5;&#x5411;&#x91CC;&#x9762;&#x5BEB;&#x4E00;&#x4E9B;&#x4E0D;&#x9700;&#x8981;&#x7684;&#x6578;&#x64DA;&#xFF09;&#xFF0C;&#x56E0;&#x7232;&#x6211;&#x5011;&#x9700;&#x8981;&#x9019;&#x500B;&#x65B9;&#x6CD5;&#x8FD4;&#x8FF4;&#x7684;&#x5B57;&#x7BC0;&#x6578;&#xFF0C;&#x4F46;&#x662F;&#x53C8;&#x4E0D;&#x60F3;&#x8981;&#x5176;&#x5167;&#x5BB9;&#x3002;&#x6BCF;&#x7576;&#x8ACB;&#x6C42;&#x8FD4;&#x8FF4;&#x5167;&#x5BB9;&#x6642;&#xFF0C;fetch&#x51FD;&#x6578;&#x90FD;&#x6703;&#x5F80;ch&#x9019;&#x500B;channel&#x91CC;&#x5BEB;&#x5165;&#x4E00;&#x500B;&#x5B57;&#x7B26;&#x4E32;&#xFF0C;&#x7531;main&#x51FD;&#x6578;&#x91CC;&#x7684;&#x7B2C;&#x4E8C;&#x500B;for&#x5FAA;&#x74B0;&#x4F86;&#x8655;&#x7406;&#x4F75;&#x6253;&#x5370;channel&#x91CC;&#x7684;&#x9019;&#x500B;&#x5B57;&#x7B26;&#x4E32;&#x3002;</p>
<p>&#x7576;&#x4E00;&#x500B;goroutine&#x5690;&#x8A66;&#x5728;&#x4E00;&#x500B;channel&#x4E0A;&#x505A;send&#x6216;&#x8005;receive&#x64CD;&#x4F5C;&#x6642;&#xFF0C;&#x9019;&#x500B;goroutine&#x6703;&#x963B;&#x585E;&#x5728;&#x8ABF;&#x7528;&#x8655;&#xFF0C;&#x76F4;&#x5230;&#x53E6;&#x4E00;&#x500B;goroutine&#x5F80;&#x9019;&#x500B;channel&#x91CC;&#x5BEB;&#x5165;&#x3001;&#x6216;&#x8005;&#x63A5;&#x6536;&#x4E86;&#x503C;&#xFF0C;&#x9019;&#x6A23;&#x5169;&#x500B;goroutine&#x7E94;&#x6703;&#x7E7C;&#x7E8C;&#x57F7;&#x884C;&#x64CD;&#x4F5C;channel&#x5B8C;&#x6210;&#x4E4B;&#x5F8C;&#x7684;&#x908F;&#x8F2F;&#x3002;&#x5728;&#x9019;&#x500B;&#x4F8B;&#x5B50;&#x4E2D;&#xFF0C;&#x6BCF;&#x4E00;&#x500B;fetch&#x51FD;&#x6578;&#x5728;&#x57F7;&#x884C;&#x6642;&#x90FD;&#x6703;&#x5F80;channel&#x91CC;&#x767C;&#x9001;&#x4E00;&#x500B;&#x503C;(ch &lt;- expression)&#xFF0C;&#x4E3B;&#x51FD;&#x6578;&#x63A5;&#x6536;&#x9019;&#x4E9B;&#x503C;(&lt;-ch)&#x3002;&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#x4E2D;&#x6211;&#x5011;&#x7528;main&#x51FD;&#x6578;&#x4F86;&#x6240;&#x6709;fetch&#x51FD;&#x6578;&#x50B3;&#x8FF4;&#x7684;&#x5B57;&#x7B26;&#x4E32;&#xFF0C;&#x53EF;&#x4EE5;&#x907F;&#x514D;&#x5728;goroutine&#x7570;&#x6B65;&#x57F7;&#x884C;&#x6642;&#x540C;&#x6642;&#x7D50;&#x675F;&#x3002;</p>
<p>Exercise 1.10: &#x627E;&#x4E00;&#x500B;&#x6578;&#x64DA;&#x91CF;&#x6BD4;&#x8F03;&#x5927;&#x7684;&#x7DB2;&#x7AD9;&#xFF0C;&#x7528;&#x672C;&#x5C0F;&#x7BC0;&#x4E2D;&#x7684;&#x7A0B;&#x5E8F;&#x8ABF;&#x7814;&#x7DB2;&#x7AD9;&#x7684;&#x7DE9;&#x5B58;&#x7B56;&#x7565;&#xFF0C;&#x5C0D;&#x6BCF;&#x500B;URL&#x57F7;&#x884C;&#x5169;&#x904D;&#x8ACB;&#x6C42;&#xFF0C;&#x67FB;&#x770B;&#x5169;&#x6B21;&#x6642;&#x9593;&#x662F;&#x5426;&#x6709;&#x8F03;&#x5927;&#x7684;&#x5DEE;&#x522B;&#xFF0C;&#x4F75;&#x4E14;&#x6BCF;&#x6B21;&#x7A6B;&#x53D6;&#x5230;&#x7684;&#x97FF;&#x61C9;&#x5167;&#x5BB9;&#x662F;&#x5426;&#x4E00;&#x81F4;&#xFF0C;&#x8129;&#x6539;&#x672C;&#x7BC0;&#x4E2D;&#x7684;&#x7A0B;&#x5E8F;&#xFF0C;&#x5C07;&#x97FF;&#x61C9;&#x7D50;&#x679C;&#x8F38;&#x9F63;&#xFF0C;&#x4EE5;&#x4FBF;&#x65BC;&#x9032;&#x884C;&#x5C0D;&#x6BD4;&#x3002;</p>
<p><strong>&#x7DF4;&#x7FD2; 1.10&#xFF1A;</strong> &#x627E;&#x4E00;&#x500B;&#x6578;&#x64DA;&#x91CF;&#x6BD4;&#x8F03;&#x5927;&#x7684;&#x7DB2;&#x7AD9;&#xFF0C;&#x7528;&#x672C;&#x5C0F;&#x7BC0;&#x4E2D;&#x7684;&#x7A0B;&#x5E8F;&#x8ABF;&#x7814;&#x7DB2;&#x7AD9;&#x7684;&#x7DE9;&#x5B58;&#x7B56;&#x7565;&#xFF0C;&#x5C0D;&#x6BCF;&#x500B;URL&#x57F7;&#x884C;&#x5169;&#x904D;&#x8ACB;&#x6C42;&#xFF0C;&#x67FB;&#x770B;&#x5169;&#x6B21;&#x6642;&#x9593;&#x662F;&#x5426;&#x6709;&#x8F03;&#x5927;&#x7684;&#x5DEE;&#x522B;&#xFF0C;&#x4F75;&#x4E14;&#x6BCF;&#x6B21;&#x7A6B;&#x53D6;&#x5230;&#x7684;&#x97FF;&#x61C9;&#x5167;&#x5BB9;&#x662F;&#x5426;&#x4E00;&#x81F4;&#xFF0C;&#x8129;&#x6539;&#x672C;&#x7BC0;&#x4E2D;&#x7684;&#x7A0B;&#x5E8F;&#xFF0C;&#x5C07;&#x97FF;&#x61C9;&#x7D50;&#x679C;&#x8F38;&#x9F63;&#xFF0C;&#x4EE5;&#x4FBF;&#x65BC;&#x9032;&#x884C;&#x5C0D;&#x6BD4;&#x3002;</p>
</section>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="1.7" data-chapter-title="Web服務" data-filepath="ch1/ch1-07.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="1.7" data-chapter-title="Web服務" data-filepath="ch1/ch1-07.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>
@@ -2024,7 +2024,7 @@
<section class="normal" id="section-">
<h2 id="17-web&#x670D;&#x52D9;">1.7. Web&#x670D;&#x52D9;</h2>
<p>Go&#x7684;&#x5167;&#x7F6E;&#x5EAB;&#x8B93;&#x6211;&#x5011;&#x5BEB;&#x4E00;&#x500B;&#x50CF;fetch&#x9019;&#x6A23;&#x4F8B;&#x5B50;&#x7684;web&#x670D;&#x52D9;&#x5668;&#x8B8A;&#x5F97;&#x7570;&#x5E38;&#x5730;&#x7C21;&#x55AE;&#x3002;&#x5728;&#x672C;&#x7BC0;&#x4E2D;&#xFF0C;&#x6211;&#x5011;&#x6703;&#x5C55;&#x793A;&#x4E00;&#x500B;&#x5FAE;&#x578B;&#x670D;&#x52D9;&#x5668;&#xFF0C;&#x9019;&#x500B;&#x670D;&#x52D9;&#x7684;&#x529F;&#x80FD;&#x662F;&#x8FD4;&#x8FF4;&#x7576;&#x524D;&#x7528;&#x6236;&#x6B63;&#x5728;&#x8A2A;&#x554F;&#x7684;URL&#x3002;&#x4E5F;&#x5C31;&#x662F;&#x8AAC;&#x6BD4;&#x5982;&#x7528;&#x6236;&#x8A2A;&#x554F;&#x7684;&#x662F;<a href="http://localhost:8000/hello&#xFF0C;&#x90A3;&#x9EBD;&#x97FF;&#x61C9;&#x662F;URL.Path" target="_blank">http://localhost:8000/hello&#xFF0C;&#x90A3;&#x9EBD;&#x97FF;&#x61C9;&#x662F;URL.Path</a> = &quot;hello&quot;&#x3002;</p>
<p>Go&#x8A9E;&#x8A00;&#x7684;&#x5167;&#x7F6E;&#x5EAB;&#x8B93;&#x6211;&#x5011;&#x5BEB;&#x4E00;&#x500B;&#x50CF;fetch&#x9019;&#x6A23;&#x4F8B;&#x5B50;&#x7684;web&#x670D;&#x52D9;&#x5668;&#x8B8A;&#x5F97;&#x7570;&#x5E38;&#x5730;&#x7C21;&#x55AE;&#x3002;&#x5728;&#x672C;&#x7BC0;&#x4E2D;&#xFF0C;&#x6211;&#x5011;&#x6703;&#x5C55;&#x793A;&#x4E00;&#x500B;&#x5FAE;&#x578B;&#x670D;&#x52D9;&#x5668;&#xFF0C;&#x9019;&#x500B;&#x670D;&#x52D9;&#x7684;&#x529F;&#x80FD;&#x662F;&#x8FD4;&#x8FF4;&#x7576;&#x524D;&#x7528;&#x6236;&#x6B63;&#x5728;&#x8A2A;&#x554F;&#x7684;URL&#x3002;&#x4E5F;&#x5C31;&#x662F;&#x8AAC;&#x6BD4;&#x5982;&#x7528;&#x6236;&#x8A2A;&#x554F;&#x7684;&#x662F; <a href="http://localhost:8000/hello" target="_blank">http://localhost:8000/hello</a> &#xFF0C;&#x90A3;&#x9EBD;&#x97FF;&#x61C9;&#x662F;URL.Path = &quot;hello&quot;&#x3002;</p>
<pre><code class="lang-go">gopl.io/ch1/server1
<span class="hljs-comment">// Server1 is a minimal &quot;echo&quot; server.</span>
<span class="hljs-keyword">package</span> main
@@ -2042,10 +2042,10 @@
<span class="hljs-comment">// handler echoes the Path component of the request URL r.</span>
<span class="hljs-keyword">func</span> handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, <span class="hljs-string">&quot;URL.Path = %q\n&quot;</span>, r.URL.Path)
fmt.Fprintf(w, <span class="hljs-string">&quot;URL.Path = %q\n&quot;</span>, r.URL.Path)
}
</code></pre>
<p>&#x6211;&#x5011;&#x96BB;&#x7528;&#x4E86;&#x516B;&#x4E5D;&#x884C;&#x5C31;&#x5BE6;&#x73FE;&#x4E86;&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#xFF0C;&#x9019;&#x90FD;&#x662F;&#x591A;&#x8667;&#x4E86;&#x6A19;&#x6E96;&#x5EAB;&#x91CC;&#x7684;&#x65B9;&#x6CD5;&#x5DF2;&#x7D93;&#x5E6B;&#x6211;&#x5011;&#x8655;&#x7406;&#x4E86;&#x5927;&#x591A;&#x6578;&#x7684;&#x5DE5;&#x4F5C;&#x3002;main&#x51FD;&#x6578;&#x6703;&#x5C07;&#x6240;&#x6709;&#x767C;&#x9001;&#x5230;/&#x76EE;&#x9332;&#x4E0B;&#x7684;&#x8ACB;&#x6C42;&#x548C;handler&#x51FD;&#x6578;&#x95DC;&#x806F;&#x8D77;&#x4F86;&#xFF0C;/&#x958B;&#x982D;&#x7684;&#x8ACB;&#x6C42;&#x5176;&#x5BE6;&#x5C31;&#x662F;&#x6240;&#x6709;&#x767C;&#x9001;&#x5230;&#x7576;&#x524D;&#x7AD9;&#x9EDE;&#x4E0A;&#x7684;&#x8ACB;&#x6C42;&#xFF0C;&#x6211;&#x5011;&#x7684;&#x670D;&#x52D9;&#x8DD1;&#x5728;&#x4E86;8000&#x7AEF;&#x53E3;&#x4E0A;&#x3002;&#x767C;&#x9001;&#x5230;&#x9019;&#x500B;&#x670D;&#x52D9;&#x7684;&#x201C;&#x8ACB;&#x6C42;&#x201D;&#x662F;&#x4E00;&#x500B;http.Request&#x985E;&#x578B;&#x7684;&#x5C0D;&#x8C61;&#xFF0C;&#x9019;&#x500B;&#x5C0D;&#x8C61;&#x4E2D;&#x5305;&#x542B;&#x4E86;&#x8ACB;&#x6C42;&#x4E2D;&#x7684;&#x4E00;&#x7E6B;&#x5217;&#x76F8;&#x95DC;&#x5B57;&#x6BB5;&#xFF0C;&#x5176;&#x4E2D;&#x5C31;&#x5305;&#x62EC;&#x6211;&#x5011;&#x9700;&#x8981;&#x7684;URL&#x3002;&#x7576;&#x8ACB;&#x6C42;&#x5230;&#x9054;&#x670D;&#x52D9;&#x5668;&#x6642;&#xFF0C;&#x9019;&#x500B;&#x8ACB;&#x6C42;&#x6703;&#x88AB;&#x50B3;&#x7D66;handler&#x51FD;&#x6578;&#x4F86;&#x8655;&#x7406;&#xFF0C;&#x9019;&#x500B;&#x51FD;&#x6578;&#x6703;&#x5C07;/hello&#x9019;&#x500B;&#x8DEF;&#x5F91;&#x5F9E;&#x8ACB;&#x6C42;&#x7684;URL&#x4E2D;&#x89E3;&#x6790;&#x9F63;&#x4F86;&#xFF0C;&#x7136;&#x5F8C;&#x628A;&#x5176;&#x767C;&#x9001;&#x5230;&#x97FF;&#x61C9;&#x4E2D;&#xFF0C;&#x9019;&#x91CC;&#x6211;&#x5011;&#x7528;&#x7684;&#x662F;&#x6A19;&#x6E96;&#x8F38;&#x9F63;&#x6D41;&#x7684;fmt.Fprintf&#x3002;Web&#x670D;&#x52D9;&#x6703;&#x5728;&#x7B2C;7.7&#x7BC0;&#x4E2D;&#x8A73;&#x7D30;&#x95E1;&#x8FF0;&#x3002;</p>
<p>&#x6211;&#x5011;&#x96BB;&#x7528;&#x4E86;&#x516B;&#x4E5D;&#x884C;&#x4EE3;&#x78BC;&#x5C31;&#x5BE6;&#x73FE;&#x4E86;&#x4E00;&#x500B;&#x500B;Web&#x670D;&#x52D9;&#x7A0B;&#x5E8F;&#xFF0C;&#x9019;&#x90FD;&#x662F;&#x591A;&#x8667;&#x4E86;&#x6A19;&#x6E96;&#x5EAB;&#x91CC;&#x7684;&#x65B9;&#x6CD5;&#x5DF2;&#x7D93;&#x5E6B;&#x6211;&#x5011;&#x8655;&#x7406;&#x4E86;&#x5927;&#x91CF;&#x7684;&#x5DE5;&#x4F5C;&#x3002;main&#x51FD;&#x6578;&#x6703;&#x5C07;&#x6240;&#x6709;&#x767C;&#x9001;&#x5230;/&#x8DEF;&#x5F91;&#x4E0B;&#x7684;&#x8ACB;&#x6C42;&#x548C;handler&#x51FD;&#x6578;&#x95DC;&#x806F;&#x8D77;&#x4F86;&#xFF0C;/&#x958B;&#x982D;&#x7684;&#x8ACB;&#x6C42;&#x5176;&#x5BE6;&#x5C31;&#x662F;&#x6240;&#x6709;&#x767C;&#x9001;&#x5230;&#x7576;&#x524D;&#x7AD9;&#x9EDE;&#x4E0A;&#x7684;&#x8ACB;&#x6C42;&#xFF0C;&#x6211;&#x5011;&#x7684;&#x670D;&#x52D9;&#x8DD1;&#x5728;&#x4E86;8000&#x7AEF;&#x53E3;&#x4E0A;&#x3002;&#x767C;&#x9001;&#x5230;&#x9019;&#x500B;&#x670D;&#x52D9;&#x7684;&#x201C;&#x8ACB;&#x6C42;&#x201D;&#x662F;&#x4E00;&#x500B;http.Request&#x985E;&#x578B;&#x7684;&#x5C0D;&#x8C61;&#xFF0C;&#x9019;&#x500B;&#x5C0D;&#x8C61;&#x4E2D;&#x5305;&#x542B;&#x4E86;&#x8ACB;&#x6C42;&#x4E2D;&#x7684;&#x4E00;&#x7E6B;&#x5217;&#x76F8;&#x95DC;&#x5B57;&#x6BB5;&#xFF0C;&#x5176;&#x4E2D;&#x5C31;&#x5305;&#x62EC;&#x6211;&#x5011;&#x9700;&#x8981;&#x7684;URL&#x3002;&#x7576;&#x8ACB;&#x6C42;&#x5230;&#x9054;&#x670D;&#x52D9;&#x5668;&#x6642;&#xFF0C;&#x9019;&#x500B;&#x8ACB;&#x6C42;&#x6703;&#x88AB;&#x50B3;&#x7D66;handler&#x51FD;&#x6578;&#x4F86;&#x8655;&#x7406;&#xFF0C;&#x9019;&#x500B;&#x51FD;&#x6578;&#x6703;&#x5C07;/hello&#x9019;&#x500B;&#x8DEF;&#x5F91;&#x5F9E;&#x8ACB;&#x6C42;&#x7684;URL&#x4E2D;&#x89E3;&#x6790;&#x9F63;&#x4F86;&#xFF0C;&#x7136;&#x5F8C;&#x628A;&#x5176;&#x767C;&#x9001;&#x5230;&#x97FF;&#x61C9;&#x4E2D;&#xFF0C;&#x9019;&#x91CC;&#x6211;&#x5011;&#x7528;&#x7684;&#x662F;&#x6A19;&#x6E96;&#x8F38;&#x9F63;&#x6D41;&#x7684;fmt.Fprintf&#x3002;Web&#x670D;&#x52D9;&#x6703;&#x5728;&#x7B2C;7.7&#x7BC0;&#x4E2D;&#x8A73;&#x7D30;&#x95E1;&#x8FF0;&#x3002;</p>
<p>&#x8B93;&#x6211;&#x5011;&#x5728;&#x5F8C;&#x98B1;&#x904B;&#x884C;&#x9019;&#x500B;&#x670D;&#x52D9;&#x7A0B;&#x5E8F;&#x3002;&#x5982;&#x679C;&#x4F60;&#x7684;&#x64CD;&#x4F5C;&#x7E6B;&#x7D71;&#x662F;Mac OS X&#x6216;&#x8005;Linux&#xFF0C;&#x90A3;&#x9EBD;&#x5728;&#x904B;&#x884C;&#x547D;&#x4EE4;&#x7684;&#x672B;&#x5C3E;&#x52A0;&#x4E0A;&#x4E00;&#x500B;&amp;&#x7B26;&#x865F;&#xFF0C;&#x537D;&#x53EF;&#x8B93;&#x7A0B;&#x5E8F;&#x7C21;&#x55AE;&#x5730;&#x8DD1;&#x5728;&#x5F8C;&#x98B1;&#xFF0C;&#x800C;&#x5728;windows&#x4E0B;&#xFF0C;&#x4F60;&#x9700;&#x8981;&#x5728;&#x53E6;&#x5916;&#x4E00;&#x500B;&#x547D;&#x4EE4;&#x884C;&#x7A97;&#x53E3;&#x53BB;&#x904B;&#x884C;&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#x4E86;&#x3002;</p>
<pre><code>$ go run src/gopl.io/ch1/server1/main.go &amp;
</code></pre><p>&#x73FE;&#x5728;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x901A;&#x904E;&#x547D;&#x4EE4;&#x884C;&#x4F86;&#x767C;&#x9001;&#x5BA2;&#x6236;&#x7AEF;&#x8ACB;&#x6C42;&#x4E86;&#xFF1A;</p>
@@ -2054,8 +2054,8 @@ $ ./fetch http://localhost:8000
URL.Path = &quot;/&quot;
$ ./fetch http://localhost:8000/help
URL.Path = &quot;/help&quot;
</code></pre><p>&#x53E6;&#x5916;&#x6211;&#x5011;&#x9084;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x5728;&#x700F;&#x89BD;&#x5668;&#x91CC;&#x8A2A;&#x554F;&#x9019;&#x500B;URL&#xFF0C;&#x7136;&#x5F8C;&#x5F97;&#x5230;&#x8FD4;&#x8FF4;&#x7D50;&#x679C;&#xFF0C;&#x5982;&#x5716;1.2&#xFF1A;
<img src="../images/ch1-02.png" alt=""></p>
</code></pre><p>&#x53E6;&#x5916;&#x6211;&#x5011;&#x9084;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x5728;&#x700F;&#x89BD;&#x5668;&#x91CC;&#x8A2A;&#x554F;&#x9019;&#x500B;URL&#xFF0C;&#x7136;&#x5F8C;&#x5F97;&#x5230;&#x8FD4;&#x8FF4;&#x7D50;&#x679C;&#xFF0C;&#x5982;&#x5716;1.2&#xFF1A;</p>
<p><img src="../images/ch1-02.png" alt=""></p>
<p>&#x5728;&#x9019;&#x500B;&#x670D;&#x52D9;&#x7684;&#x57FA;&#x790E;&#x4E0A;&#x758A;&#x52A0;&#x7279;&#x6027;&#x662F;&#x5F88;&#x5BB9;&#x6613;&#x7684;&#x3002;&#x4E00;&#x7A2E;&#x6BD4;&#x8F03;&#x5BE6;&#x7528;&#x7684;&#x8129;&#x6539;&#x662F;&#x7232;&#x8A2A;&#x554F;&#x7684;url&#x6DFB;&#x52A0;&#x67D0;&#x7A2E;&#x72C0;&#x614B;&#x3002;&#x6BD4;&#x5982;&#xFF0C;&#x4E0B;&#x9762;&#x9019;&#x500B;&#x7248;&#x672C;&#x8F38;&#x9F63;&#x4E86;&#x540C;&#x6A23;&#x7684;&#x5167;&#x5BB9;&#xFF0C;&#x4F46;&#x662F;&#x6703;&#x5C0D;&#x8ACB;&#x6C42;&#x7684;&#x6B21;&#x6578;&#x9032;&#x884C;&#x8A08;&#x7B97;&#xFF1B;&#x5C0D;URL&#x7684;&#x8ACB;&#x6C42;&#x7D50;&#x679C;&#x6703;&#x5305;&#x542B;&#x5404;&#x7A2E;URL&#x88AB;&#x8A2A;&#x554F;&#x7684;&#x7E3D;&#x6B21;&#x6578;&#xFF0C;&#x76F4;&#x63A5;&#x5C0D;/count&#x9019;&#x500B;URL&#x7684;&#x8A2A;&#x554F;&#x8981;&#x9664;&#x5916;&#x3002;</p>
<pre><code class="lang-go">gopl.io/ch1/server2
<span class="hljs-comment">// Server2 is a minimal &quot;echo&quot; and counter server.</span>
@@ -2092,8 +2092,8 @@ URL.Path = &quot;/help&quot;
mu.Unlock()
}
</code></pre>
<p>&#x9019;&#x500B;&#x670D;&#x52D9;&#x5668;&#x6709;&#x5169;&#x500B;&#x8ACB;&#x6C42;&#x8655;&#x7406;&#x51FD;&#x6578;&#xFF0C;&#x8ACB;&#x6C42;&#x7684;url&#x6703;&#x6C7A;&#x5B9A;&#x5177;&#x9AD4;&#x8ABF;&#x7528;&#x54EA;&#x4E00;&#x500B;&#xFF1A;&#x5C0D;/count&#x9019;&#x500B;url&#x7684;&#x8ACB;&#x6C42;&#x6703;&#x8ABF;&#x7528;&#x5230;count&#x9019;&#x500B;&#x51FD;&#x6578;&#xFF0C;&#x5176;&#x5B83;&#x6240;&#x6709;&#x7684;url&#x90FD;&#x6703;&#x8ABF;&#x7528;&#x9ED8;&#x8A8D;&#x7684;&#x8655;&#x7406;&#x51FD;&#x6578;&#x3002;&#x5982;&#x679C;&#x4F60;&#x7684;&#x8ACB;&#x6C42;pattern&#x662F;&#x4EE5;/&#x7D50;&#x5C3E;&#xFF0C;&#x90A3;&#x9EBD;&#x6240;&#x6709;&#x4EE5;&#x8A72;url&#x7232;&#x524D;&#x7DB4;&#x7684;url&#x90FD;&#x6703;&#x88AB;&#x9019;&#x689D;&#x898F;&#x5247;&#x5339;&#x914D;&#x3002;&#x5728;&#x9019;&#x4E9B;&#x4EE3;&#x78BC;&#x7684;&#x80CC;&#x5F8C;&#xFF0C;&#x670D;&#x52D9;&#x5668;&#x6BCF;&#x4E00;&#x6B21;&#x63A5;&#x6536;&#x8ACB;&#x6C42;&#x8655;&#x7406;&#x6642;&#x90FD;&#x6703;&#x53E6;&#x8D77;&#x4E00;&#x500B;goroutine&#xFF0C;&#x9019;&#x6A23;&#x670D;&#x52D9;&#x5668;&#x5C31;&#x53EF;&#x4EE5;&#x540C;&#x4E00;&#x6642;&#x9593;&#x8655;&#x7406;&#x591A;&#x6578;&#x8ACB;&#x6C42;&#x3002;&#x7136;&#x800C;&#x5728;&#x4F75;&#x767C;&#x60C5;&#x6CC1;&#x4E0B;&#xFF0C;&#x5047;&#x5982;&#x771E;&#x7684;&#x6709;&#x5169;&#x500B;&#x8ACB;&#x6C42;&#x540C;&#x4E00;&#x6642;&#x523B;&#x53BB;&#x66F4;&#x65B0;count&#xFF0C;&#x90A3;&#x9EBD;&#x9019;&#x500B;&#x503C;&#x53EF;&#x80FD;&#x4F75;&#x4E0D;&#x6703;&#x88AB;&#x6B63;&#x78BA;&#x5730;&#x589E;&#x52A0;&#xFF1B;&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#x53EF;&#x80FD;&#x6703;&#x88AB;&#x5F15;&#x767C;&#x4E00;&#x500B;&#x56B4;&#x91CD;&#x7684;bug&#xFF1A;&#x7AF6;&#x614B;&#x689D;&#x4EF6;(&#x53C3;&#x898B;9.1)&#x3002;&#x7232;&#x4E86;&#x907F;&#x514D;&#x9019;&#x500B;&#x554F;&#x984C;&#xFF0C;&#x6211;&#x5011;&#x5FC5;&#x9B1A;&#x4FDD;&#x8B49;&#x6BCF;&#x6B21;&#x8129;&#x6539;&#x8B8A;&#x91CF;&#x7684;&#x6700;&#x591A;&#x96BB;&#x80FD;&#x6709;&#x4E00;&#x500B;goroutine&#xFF0C;&#x9019;&#x4E5F;&#x5C31;&#x662F;&#x4EE3;&#x78BC;&#x91CC;&#x7684;mu.Lock()&#x548C;mu.Unlock()&#x8ABF;&#x7528;&#x5C07;&#x8129;&#x6539;count&#x7684;&#x6240;&#x6709;&#x884C;&#x7232;&#x5305;&#x5728;&#x4E2D;&#x9593;&#x7684;&#x76EE;&#x7684;&#x3002;&#x7B2C;&#x4E5D;&#x7AE0;&#x4E2D;&#x6211;&#x5011;&#x6703;&#x9032;&#x4E00;&#x6B65;&#x8B1B;&#x89E3;&#x5171;&#x4EAB;&#x8B8A;&#x91CF;&#x3002;</p>
<p>&#x4E0B;&#x9762;&#x662F;&#x4E00;&#x500B;&#x66F4;&#x7232;&#x8C50;&#x5BCC;&#x7684;&#x4F8B;&#x5B50;&#xFF0C;handler&#x51FD;&#x6578;&#x6703;&#x628A;&#x8ACB;&#x6C42;&#x7684;http&#x982D;&#x548C;&#x8ACB;&#x6C42;&#x7684;form&#x6578;&#x64DA;&#x90FD;&#x6253;&#x5370;&#x9F63;&#x4F86;&#xFF0C;&#x9019;&#x6A23;&#x53EF;&#x4EE5;&#x8B93;&#x6AA2;&#x67FB;&#x548C;&#x8ABF;&#x8A66;&#x9019;&#x500B;&#x670D;&#x52D9;&#x66F4;&#x7232;&#x65B9;&#x4FBF;</p>
<p>&#x9019;&#x500B;&#x670D;&#x52D9;&#x5668;&#x6709;&#x5169;&#x500B;&#x8ACB;&#x6C42;&#x8655;&#x7406;&#x51FD;&#x6578;&#xFF0C;&#x8ACB;&#x6C42;&#x7684;url&#x6703;&#x6C7A;&#x5B9A;&#x5177;&#x9AD4;&#x8ABF;&#x7528;&#x54EA;&#x4E00;&#x500B;&#xFF1A;&#x5C0D;/count&#x9019;&#x500B;url&#x7684;&#x8ACB;&#x6C42;&#x6703;&#x8ABF;&#x7528;&#x5230;count&#x9019;&#x500B;&#x51FD;&#x6578;&#xFF0C;&#x5176;&#x5B83;&#x6240;&#x6709;&#x7684;url&#x90FD;&#x6703;&#x8ABF;&#x7528;&#x9ED8;&#x8A8D;&#x7684;&#x8655;&#x7406;&#x51FD;&#x6578;&#x3002;&#x5982;&#x679C;&#x4F60;&#x7684;&#x8ACB;&#x6C42;pattern&#x662F;&#x4EE5;/&#x7D50;&#x5C3E;&#xFF0C;&#x90A3;&#x9EBD;&#x6240;&#x6709;&#x4EE5;&#x8A72;url&#x7232;&#x524D;&#x7DB4;&#x7684;url&#x90FD;&#x6703;&#x88AB;&#x9019;&#x689D;&#x898F;&#x5247;&#x5339;&#x914D;&#x3002;&#x5728;&#x9019;&#x4E9B;&#x4EE3;&#x78BC;&#x7684;&#x80CC;&#x5F8C;&#xFF0C;&#x670D;&#x52D9;&#x5668;&#x6BCF;&#x4E00;&#x6B21;&#x63A5;&#x6536;&#x8ACB;&#x6C42;&#x8655;&#x7406;&#x6642;&#x90FD;&#x6703;&#x53E6;&#x8D77;&#x4E00;&#x500B;goroutine&#xFF0C;&#x9019;&#x6A23;&#x670D;&#x52D9;&#x5668;&#x5C31;&#x53EF;&#x4EE5;&#x540C;&#x4E00;&#x6642;&#x9593;&#x8655;&#x7406;&#x591A;&#x6578;&#x8ACB;&#x6C42;&#x3002;&#x7136;&#x800C;&#x5728;&#x4F75;&#x767C;&#x60C5;&#x6CC1;&#x4E0B;&#xFF0C;&#x5047;&#x5982;&#x771E;&#x7684;&#x6709;&#x5169;&#x500B;&#x8ACB;&#x6C42;&#x540C;&#x4E00;&#x6642;&#x523B;&#x53BB;&#x66F4;&#x65B0;count&#xFF0C;&#x90A3;&#x9EBD;&#x9019;&#x500B;&#x503C;&#x53EF;&#x80FD;&#x4F75;&#x4E0D;&#x6703;&#x88AB;&#x6B63;&#x78BA;&#x5730;&#x589E;&#x52A0;&#xFF1B;&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#x53EF;&#x80FD;&#x6703;&#x88AB;&#x5F15;&#x767C;&#x4E00;&#x500B;&#x56B4;&#x91CD;&#x7684;bug&#xFF1A;&#x7AF6;&#x614B;&#x689D;&#x4EF6;&#xFF08;&#x53C3;&#x898B;9.1&#xFF09;&#x3002;&#x7232;&#x4E86;&#x907F;&#x514D;&#x9019;&#x500B;&#x554F;&#x984C;&#xFF0C;&#x6211;&#x5011;&#x5FC5;&#x9B1A;&#x4FDD;&#x8B49;&#x6BCF;&#x6B21;&#x8129;&#x6539;&#x8B8A;&#x91CF;&#x7684;&#x6700;&#x591A;&#x96BB;&#x80FD;&#x6709;&#x4E00;&#x500B;goroutine&#xFF0C;&#x9019;&#x4E5F;&#x5C31;&#x662F;&#x4EE3;&#x78BC;&#x91CC;&#x7684;mu.Lock()&#x548C;mu.Unlock()&#x8ABF;&#x7528;&#x5C07;&#x8129;&#x6539;count&#x7684;&#x6240;&#x6709;&#x884C;&#x7232;&#x5305;&#x5728;&#x4E2D;&#x9593;&#x7684;&#x76EE;&#x7684;&#x3002;&#x7B2C;&#x4E5D;&#x7AE0;&#x4E2D;&#x6211;&#x5011;&#x6703;&#x9032;&#x4E00;&#x6B65;&#x8B1B;&#x89E3;&#x5171;&#x4EAB;&#x8B8A;&#x91CF;&#x3002;</p>
<p>&#x4E0B;&#x9762;&#x662F;&#x4E00;&#x500B;&#x66F4;&#x7232;&#x8C50;&#x5BCC;&#x7684;&#x4F8B;&#x5B50;&#xFF0C;handler&#x51FD;&#x6578;&#x6703;&#x628A;&#x8ACB;&#x6C42;&#x7684;http&#x982D;&#x548C;&#x8ACB;&#x6C42;&#x7684;form&#x6578;&#x64DA;&#x90FD;&#x6253;&#x5370;&#x9F63;&#x4F86;&#xFF0C;&#x9019;&#x6A23;&#x53EF;&#x4EE5;&#x8B93;&#x6AA2;&#x67FB;&#x548C;&#x8ABF;&#x8A66;&#x9019;&#x500B;&#x670D;&#x52D9;&#x66F4;&#x7232;&#x65B9;&#x4FBF;&#xFF1A;</p>
<pre><code class="lang-go">gopl.io/ch1/server3
<span class="hljs-comment">// handler echoes the HTTP request.</span>
<span class="hljs-keyword">func</span> handler(w http.ResponseWriter, r *http.Request) {
@@ -2107,7 +2107,7 @@ URL.Path = &quot;/help&quot;
log.Print(err)
}
<span class="hljs-keyword">for</span> k, v := <span class="hljs-keyword">range</span> r.Form {
fmt.Fprintf(w, <span class="hljs-string">&quot;Form[%q] = %q\n&quot;</span>, k, v)
fmt.Fprintf(w, <span class="hljs-string">&quot;Form[%q] = %q\n&quot;</span>, k, v)
}
}
</code></pre>
@@ -2118,7 +2118,7 @@ Header[&quot;Connection&quot;] = [&quot;keep-alive&quot;]
Header[&quot;Accept&quot;] = [&quot;text/html,application/xhtml+xml,application/xml;...&quot;] Header[&quot;User-Agent&quot;] = [&quot;Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5)...&quot;] Host = &quot;localhost:8000&quot;
RemoteAddr = &quot;127.0.0.1:59911&quot;
Form[&quot;q&quot;] = [&quot;query&quot;]
</code></pre><p>&#x53EF;&#x4EE5;&#x770B;&#x5230;&#x9019;&#x91CC;&#x7684;ParseForm&#x88AB;&#x5D4C;&#x5957;&#x5728;&#x4E86;if&#x8A9E;&#x53E5;&#x4E2D;&#x3002;Go&#x8A9E;&#x8A00;&#x5141;&#x8A31;&#x9019;&#x6A23;&#x7684;&#x4E00;&#x500B;&#x7C21;&#x55AE;&#x7684;&#x8A9E;&#x53E5;&#x7D50;&#x679C;&#x4F5C;&#x7232;&#x5FAA;&#x74B0;&#x7684;&#x8B8A;&#x91CF;&#x8072;&#x660E;&#x9F63;&#x73FE;&#x5728;if&#x8A9E;&#x53E5;&#x7684;&#x6700;&#x524D;&#x9762;&#xFF0C;&#x9019;&#x4E00;&#x9EDE;&#x5C0D;&#x932F;&#x8AA4;&#x8655;&#x7406;&#x5F88;&#x6709;&#x7528;&#x8655;&#x3002;&#x6211;&#x5011;&#x9084;&#x53EF;&#x4EE5;&#x50CF;&#x4E0B;&#x9762;&#x9019;&#x6A23;&#x5BEB;(&#x7576;&#x7136;&#x770B;&#x8D77;&#x4F86;&#x5C31;&#x9577;&#x4E86;&#x4E00;&#x4E9B;)&#xFF1A;</p>
</code></pre><p>&#x53EF;&#x4EE5;&#x770B;&#x5230;&#x9019;&#x91CC;&#x7684;ParseForm&#x88AB;&#x5D4C;&#x5957;&#x5728;&#x4E86;if&#x8A9E;&#x53E5;&#x4E2D;&#x3002;Go&#x8A9E;&#x8A00;&#x5141;&#x8A31;&#x9019;&#x6A23;&#x7684;&#x4E00;&#x500B;&#x7C21;&#x55AE;&#x7684;&#x8A9E;&#x53E5;&#x7D50;&#x679C;&#x4F5C;&#x7232;&#x5FAA;&#x74B0;&#x7684;&#x8B8A;&#x91CF;&#x8072;&#x660E;&#x9F63;&#x73FE;&#x5728;if&#x8A9E;&#x53E5;&#x7684;&#x6700;&#x524D;&#x9762;&#xFF0C;&#x9019;&#x4E00;&#x9EDE;&#x5C0D;&#x932F;&#x8AA4;&#x8655;&#x7406;&#x5F88;&#x6709;&#x7528;&#x8655;&#x3002;&#x6211;&#x5011;&#x9084;&#x53EF;&#x4EE5;&#x50CF;&#x4E0B;&#x9762;&#x9019;&#x6A23;&#x5BEB;&#xFF08;&#x7576;&#x7136;&#x770B;&#x8D77;&#x4F86;&#x5C31;&#x9577;&#x4E86;&#x4E00;&#x4E9B;&#xFF09;&#xFF1A;</p>
<pre><code class="lang-go">err := r.ParseForm()
<span class="hljs-keyword">if</span> err != <span class="hljs-constant">nil</span> {
log.Print(err)
@@ -2127,19 +2127,21 @@ Form[&quot;q&quot;] = [&quot;query&quot;]
<p>&#x7528;if&#x548C;ParseForm&#x7D50;&#x5408;&#x53EF;&#x4EE5;&#x8B93;&#x4EE3;&#x78BC;&#x66F4;&#x52A0;&#x7C21;&#x55AE;&#xFF0C;&#x4F75;&#x4E14;&#x53EF;&#x4EE5;&#x9650;&#x88FD;err&#x9019;&#x500B;&#x8B8A;&#x91CF;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#xFF0C;&#x9019;&#x9EBD;&#x505A;&#x662F;&#x5F88;&#x4E0D;&#x932F;&#x7684;&#x3002;&#x6211;&#x5011;&#x6703;&#x5728;2.7&#x7BC0;&#x4E2D;&#x8B1B;&#x89E3;&#x4F5C;&#x7528;&#x57DF;&#x3002;</p>
<p>&#x5728;&#x9019;&#x4E9B;&#x7A0B;&#x5E8F;&#x4E2D;&#xFF0C;&#x6211;&#x5011;&#x770B;&#x5230;&#x4E86;&#x5F88;&#x591A;&#x4E0D;&#x540C;&#x7684;&#x985E;&#x578B;&#x88AB;&#x8F38;&#x9F63;&#x5230;&#x6A19;&#x6E96;&#x8F38;&#x9F63;&#x6D41;&#x4E2D;&#x3002;&#x6BD4;&#x5982;&#x524D;&#x9762;&#x7684;fetch&#x7A0B;&#x5E8F;&#xFF0C;&#x5C31;&#x628A;HTTP&#x7684;&#x97FF;&#x61C9;&#x6578;&#x64DA;&#x62F7;&#x8C9D;&#x5230;&#x4E86;os.Stdout&#xFF0C;&#x6216;&#x8005;&#x5728;lissajous&#x7A0B;&#x5E8F;&#x91CC;&#x6211;&#x5011;&#x8F38;&#x9F63;&#x7684;&#x662F;&#x4E00;&#x500B;&#x6587;&#x4EF6;&#x3002;fetchall&#x7A0B;&#x5E8F;&#x5247;&#x5B8C;&#x5168;&#x5FFD;&#x7565;&#x5230;&#x4E86;HTTP&#x7684;&#x97FF;&#x61C9;&#x9AD4;&#xFF0C;&#x96BB;&#x662F;&#x8A08;&#x7B97;&#x4E86;&#x4E00;&#x4E0B;&#x97FF;&#x61C9;&#x9AD4;&#x7684;&#x5927;&#x5C0F;&#xFF0C;&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#x4E2D;&#x628A;&#x97FF;&#x61C9;&#x9AD4;&#x62F7;&#x8C9D;&#x5230;&#x4E86;ioutil.Discard&#x3002;&#x5728;&#x672C;&#x7BC0;&#x7684;web&#x670D;&#x52D9;&#x5668;&#x7A0B;&#x5E8F;&#x4E2D;&#x5247;&#x662F;&#x7528;fmt.Fprintf&#x76F4;&#x63A5;&#x5BEB;&#x5230;&#x4E86;http.ResponseWriter&#x4E2D;&#x3002;</p>
<p>&#x76E1;&#x7BA1;&#x9019;&#x4E09;&#x7A2E;&#x5177;&#x9AD4;&#x7684;&#x5BE6;&#x73FE;&#x6D41;&#x7A0B;&#x4F75;&#x4E0D;&#x592A;&#x4E00;&#x6A23;&#xFF0C;&#x4ED6;&#x5011;&#x90FD;&#x5BE6;&#x73FE;&#x4E00;&#x500B;&#x5171;&#x540C;&#x7684;&#x63A5;&#x53E3;&#xFF0C;&#x537D;&#x7576;&#x5B83;&#x5011;&#x88AB;&#x8ABF;&#x7528;&#x9700;&#x8981;&#x4E00;&#x500B;&#x6A19;&#x6E96;&#x6D41;&#x8F38;&#x9F63;&#x6642;&#x90FD;&#x53EF;&#x4EE5;&#x6EFF;&#x8DB3;&#x3002;&#x9019;&#x500B;&#x63A5;&#x53E3;&#x53EB;&#x4F5C;io.Writer&#xFF0C;&#x5728;7.1&#x7BC0;&#x4E2D;&#x6703;&#x8A73;&#x7D30;&#x8A0E;&#x8AD6;&#x3002;</p>
<p>Go&#x7684;&#x63A5;&#x53E3;&#x6A5F;&#x88FD;&#x6703;&#x5728;&#x7B2C;7&#x7AE0;&#x4E2D;&#x8B1B;&#x89E3;&#xFF0C;&#x7232;&#x4E86;&#x5728;&#x9019;&#x91CC;&#x7C21;&#x55AE;&#x8AAC;&#x660E;&#x63A5;&#x53E3;&#x80FD;&#x505A;&#x4EC0;&#x9EBD;&#xFF0C;&#x8B93;&#x6211;&#x5011;&#x7C21;&#x55AE;&#x5730;&#x5C07;&#x9019;&#x91CC;&#x7684;web&#x670D;&#x52D9;&#x5668;&#x548C;&#x4E4B;&#x524D;&#x5BEB;&#x7684;lissajous&#x51FD;&#x6578;&#x7D50;&#x5408;&#x8D77;&#x4F86;&#xFF0C;&#x9019;&#x6A23;GIF&#x52D5;&#x7575;&#x53EF;&#x4EE5;&#x88AB;&#x5BEB;&#x5230;HTTP&#x7684;&#x5BA2;&#x6236;&#x7AEF;&#xFF0C;&#x800C;&#x4E0D;&#x662F;&#x4E4B;&#x524D;&#x7684;&#x6A19;&#x6E96;&#x8F38;&#x9F63;&#x6D41;&#x3002;&#x96BB;&#x8981;&#x5728;web&#x670D;&#x52D9;&#x5668;&#x7684;&#x4EE3;&#x78BC;&#x91CC;&#x52A0;&#x5165;&#x4E0B;&#x9762;&#x9019;&#x5E7E;&#x884C;&#x3002;</p>
<pre><code>handler := func(w http.ResponseWriter, r *http.Request) {
lissajous(w)
<p>Go&#x8A9E;&#x8A00;&#x7684;&#x63A5;&#x53E3;&#x6A5F;&#x88FD;&#x6703;&#x5728;&#x7B2C;7&#x7AE0;&#x4E2D;&#x8B1B;&#x89E3;&#xFF0C;&#x7232;&#x4E86;&#x5728;&#x9019;&#x91CC;&#x7C21;&#x55AE;&#x8AAC;&#x660E;&#x63A5;&#x53E3;&#x80FD;&#x505A;&#x4EC0;&#x9EBD;&#xFF0C;&#x8B93;&#x6211;&#x5011;&#x7C21;&#x55AE;&#x5730;&#x5C07;&#x9019;&#x91CC;&#x7684;web&#x670D;&#x52D9;&#x5668;&#x548C;&#x4E4B;&#x524D;&#x5BEB;&#x7684;lissajous&#x51FD;&#x6578;&#x7D50;&#x5408;&#x8D77;&#x4F86;&#xFF0C;&#x9019;&#x6A23;GIF&#x52D5;&#x7575;&#x53EF;&#x4EE5;&#x88AB;&#x5BEB;&#x5230;HTTP&#x7684;&#x5BA2;&#x6236;&#x7AEF;&#xFF0C;&#x800C;&#x4E0D;&#x662F;&#x4E4B;&#x524D;&#x7684;&#x6A19;&#x6E96;&#x8F38;&#x9F63;&#x6D41;&#x3002;&#x96BB;&#x8981;&#x5728;web&#x670D;&#x52D9;&#x5668;&#x7684;&#x4EE3;&#x78BC;&#x91CC;&#x52A0;&#x5165;&#x4E0B;&#x9762;&#x9019;&#x5E7E;&#x884C;&#x3002;</p>
<pre><code class="lang-Go">handler := <span class="hljs-keyword">func</span>(w http.ResponseWriter, r *http.Request) {
lissajous(w)
}
http.HandleFunc(&quot;/&quot;, handler)
</code></pre><p>&#x6216;&#x8005;&#x53E6;&#x4E00;&#x7A2E;&#x7B49;&#x50F9;&#x5F62;&#x5F0F;&#xFF1A;</p>
<pre><code>http.HandleFunc(&quot;/&quot;, func(w http.ResponseWriter, r *http.Request) {
http.HandleFunc(<span class="hljs-string">&quot;/&quot;</span>, handler)
</code></pre>
<p>&#x6216;&#x8005;&#x53E6;&#x4E00;&#x7A2E;&#x7B49;&#x50F9;&#x5F62;&#x5F0F;&#xFF1A;</p>
<pre><code class="lang-Go">http.HandleFunc(<span class="hljs-string">&quot;/&quot;</span>, <span class="hljs-keyword">func</span>(w http.ResponseWriter, r *http.Request) {
lissajous(w)
})
</code></pre><p>HandleFunc&#x51FD;&#x6578;&#x7684;&#x7B2C;&#x4E8C;&#x500B;&#x53C3;&#x6578;&#x662F;&#x4E00;&#x500B;&#x51FD;&#x6578;&#x7684;&#x5B57;&#x9762;&#x503C;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x4E00;&#x500B;&#x5728;&#x4F7F;&#x7528;&#x6642;&#x5B9A;&#x7FA9;&#x7684;&#x533F;&#x540D;&#x51FD;&#x6578;&#x3002;&#x9019;&#x4E9B;&#x5167;&#x5BB9;&#x6211;&#x5011;&#x6703;&#x5728;5.6&#x7BC0;&#x4E2D;&#x8B1B;&#x89E3;&#x3002;</p>
<p>&#x505A;&#x5B8C;&#x9019;&#x4E9B;&#x8129;&#x6539;&#x4E4B;&#x5F8C;&#xFF0C;&#x5728;&#x700F;&#x89BD;&#x5668;&#x91CC;&#x8A2A;&#x554F;<a href="http://localhost:8000&#x3002;&#x6BCF;&#x6B21;&#x4F60;&#x8F09;&#x5165;&#x9019;&#x500B;&#x9801;&#x9762;&#x90FD;&#x53EF;&#x4EE5;&#x770B;&#x5230;&#x4E00;&#x500B;&#x50CF;&#x5716;1.3&#x90A3;&#x6A23;&#x7684;&#x52D5;&#x7575;&#x3002;" target="_blank">http://localhost:8000&#x3002;&#x6BCF;&#x6B21;&#x4F60;&#x8F09;&#x5165;&#x9019;&#x500B;&#x9801;&#x9762;&#x90FD;&#x53EF;&#x4EE5;&#x770B;&#x5230;&#x4E00;&#x500B;&#x50CF;&#x5716;1.3&#x90A3;&#x6A23;&#x7684;&#x52D5;&#x7575;&#x3002;</a></p>
<pre><code>Exercise 1.12:&#x8129;&#x6539;Lissajour&#x670D;&#x52D9;&#xFF0C;&#x5F9E;URL&#x8B80;&#x53D6;&#x8B8A;&#x91CF;&#xFF0C;&#x6BD4;&#x5982;&#x4F60;&#x53EF;&#x4EE5;&#x8A2A;&#x554F;http://localhost:8000/?cycles=20&#x9019;&#x500B;URL&#xFF0C;&#x9019;&#x6A23;&#x8A2A;&#x554F;&#x53EF;&#x4EE5;&#x5C07;&#x7A0B;&#x5E8F;&#x91CC;&#x7684;cycles&#x9ED8;&#x8A8D;&#x7684;5&#x8129;&#x6539;&#x7232;20&#x3002;&#x5B57;&#x7B26;&#x4E32;&#x8F49;&#x63DB;&#x7232;&#x6578;&#x5B57;&#x53EF;&#x4EE5;&#x8ABF;&#x7528;strconv.Atoi&#x51FD;&#x6578;&#x3002;&#x4F60;&#x53EF;&#x4EE5;&#x5728;dodoc&#x91CC;&#x67FB;&#x770B;strconv.Atoi&#x7684;&#x8A73;&#x7D30;&#x8AAC;&#x660E;&#x3002;
</code></pre><p><img src="../images/ch1-03.png" alt=""></p>
</code></pre>
<p>HandleFunc&#x51FD;&#x6578;&#x7684;&#x7B2C;&#x4E8C;&#x500B;&#x53C3;&#x6578;&#x662F;&#x4E00;&#x500B;&#x51FD;&#x6578;&#x7684;&#x5B57;&#x9762;&#x503C;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x4E00;&#x500B;&#x5728;&#x4F7F;&#x7528;&#x6642;&#x5B9A;&#x7FA9;&#x7684;&#x533F;&#x540D;&#x51FD;&#x6578;&#x3002;&#x9019;&#x4E9B;&#x5167;&#x5BB9;&#x6211;&#x5011;&#x6703;&#x5728;5.6&#x7BC0;&#x4E2D;&#x8B1B;&#x89E3;&#x3002;</p>
<p>&#x505A;&#x5B8C;&#x9019;&#x4E9B;&#x8129;&#x6539;&#x4E4B;&#x5F8C;&#xFF0C;&#x5728;&#x700F;&#x89BD;&#x5668;&#x91CC;&#x8A2A;&#x554F; <a href="http://localhost:8000" target="_blank">http://localhost:8000</a> &#x3002;&#x6BCF;&#x6B21;&#x4F60;&#x8F09;&#x5165;&#x9019;&#x500B;&#x9801;&#x9762;&#x90FD;&#x53EF;&#x4EE5;&#x770B;&#x5230;&#x4E00;&#x500B;&#x50CF;&#x5716;1.3&#x90A3;&#x6A23;&#x7684;&#x52D5;&#x7575;&#x3002;</p>
<p><strong>&#x7DF4;&#x7FD2; 1.12&#xFF1A;</strong> &#x8129;&#x6539;Lissajour&#x670D;&#x52D9;&#xFF0C;&#x5F9E;URL&#x8B80;&#x53D6;&#x8B8A;&#x91CF;&#xFF0C;&#x6BD4;&#x5982;&#x4F60;&#x53EF;&#x4EE5;&#x8A2A;&#x554F; <a href="http://localhost:8000/?cycles=20" target="_blank">http://localhost:8000/?cycles=20</a> &#x9019;&#x500B;URL&#xFF0C;&#x9019;&#x6A23;&#x8A2A;&#x554F;&#x53EF;&#x4EE5;&#x5C07;&#x7A0B;&#x5E8F;&#x91CC;&#x7684;cycles&#x9ED8;&#x8A8D;&#x7684;5&#x8129;&#x6539;&#x7232;20&#x3002;&#x5B57;&#x7B26;&#x4E32;&#x8F49;&#x63DB;&#x7232;&#x6578;&#x5B57;&#x53EF;&#x4EE5;&#x8ABF;&#x7528;strconv.Atoi&#x51FD;&#x6578;&#x3002;&#x4F60;&#x53EF;&#x4EE5;&#x5728;dodoc&#x91CC;&#x67FB;&#x770B;strconv.Atoi&#x7684;&#x8A73;&#x7D30;&#x8AAC;&#x660E;&#x3002;</p>
<p><img src="../images/ch1-03.png" alt=""></p>
</section>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="1.8" data-chapter-title="本章要點" data-filepath="ch1/ch1-08.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="1.8" data-chapter-title="本章要點" data-filepath="ch1/ch1-08.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>
@@ -2024,52 +2024,52 @@
<section class="normal" id="section-">
<h2 id="18-&#x672C;&#x7AE0;&#x8981;&#x9EDE;">1.8. &#x672C;&#x7AE0;&#x8981;&#x9EDE;</h2>
<p>&#x672C;&#x7AE0;&#x4E2D;&#x5C0D;Go&#x8A9E;&#x8A00;&#x505A;&#x4E86;&#x4E00;&#x4E9B;&#x4ECB;&#x7D39;&#xFF0C;&#x5BE6;&#x969B;&#x4E0A;Go&#x8A9E;&#x8A00;&#x9084;&#x6709;&#x5F88;&#x591A;&#x65B9;&#x9762;&#x5728;&#x9019;&#x6709;&#x9650;&#x7684;&#x7BC7;&#x5E45;&#x4E2D;&#x9084;&#x6C92;&#x6709;&#x8986;&#x84CB;&#x5230;&#x3002;&#x9019;&#x91CC;&#x6211;&#x5011;&#x6703;&#x628A;&#x6C92;&#x6709;&#x8B1B;&#x5230;&#x7684;&#x5167;&#x5BB9;&#x4E5F;&#x505A;&#x4E00;&#x4E9B;&#x7C21;&#x55AE;&#x7684;&#x4ECB;&#x7D39;&#xFF0C;&#x9019;&#x6A23;&#x8B80;&#x8005;&#x5728;&#x4E4B;&#x5F8C;&#x770B;&#x5230;&#x5B8C;&#x6574;&#x7684;&#x5167;&#x5BB9;&#x4E4B;&#x524D;&#xFF0C;&#x4E5F;&#x53EF;&#x4EE5;&#x7C21;&#x55AE;&#x6709;&#x500B;&#x5370;&#x8C61;&#x3002;</p>
<p>&#x63A7;&#x88FD;&#x6D41;&#xFF1A;&#x5728;&#x672C;&#x7AE0;&#x6211;&#x5011;&#x96BB;&#x4ECB;&#x7D39;&#x4E86;if&#x63A7;&#x88FD;&#x548C;for&#xFF0C;&#x4F46;&#x662F;&#x6C92;&#x6709;&#x63D0;&#x5230;switch&#x591A;&#x8DEF;&#x9078;&#x64C7;&#x3002;&#x9019;&#x91CC;&#x662F;&#x4E00;&#x500B;&#x7C21;&#x55AE;&#x7684;switch&#x7684;&#x4F8B;&#x5B50;&#xFF1A;</p>
<p>&#x672C;&#x7AE0;&#x4E2D;&#x5C0D;Go&#x8A9E;&#x8A00;&#x505A;&#x4E86;&#x4E00;&#x4E9B;&#x4ECB;&#x7D39;&#xFF0C;&#x5BE6;&#x969B;&#x4E0A;Go&#x8A9E;&#x8A00;&#x9084;&#x6709;&#x5F88;&#x591A;&#x65B9;&#x9762;&#x5728;&#x9019;&#x6709;&#x9650;&#x7684;&#x7BC7;&#x5E45;&#x4E2D;&#x9084;&#x6C92;&#x6709;&#x8986;&#x84CB;&#x5230;&#x3002;&#x9019;&#x91CC;&#x6211;&#x5011;&#x6703;&#x628A;&#x6C92;&#x6709;&#x8B1B;&#x5230;&#x7684;&#x5167;&#x5BB9;&#x4E5F;&#x505A;&#x4E00;&#x4E9B;&#x7C21;&#x55AE;&#x7684;&#x4ECB;&#x7D39;&#xFF0C;&#x9019;&#x6A23;&#x8B80;&#x8005;&#x5728;&#x4E4B;&#x5F8C;&#x770B;&#x5230;&#x5B8C;&#x6574;&#x7684;&#x5167;&#x5BB9;&#x4E4B;&#x524D;&#xFF0C;&#x4E5F;&#x53EF;&#x4EE5;&#x6709;&#x500B;&#x7C21;&#x55AE;&#x5370;&#x8C61;&#x3002;</p>
<p><strong>&#x63A7;&#x88FD;&#x6D41;&#xFF1A;</strong> &#x5728;&#x672C;&#x7AE0;&#x6211;&#x5011;&#x96BB;&#x4ECB;&#x7D39;&#x4E86;if&#x63A7;&#x88FD;&#x548C;for&#xFF0C;&#x4F46;&#x662F;&#x6C92;&#x6709;&#x63D0;&#x5230;switch&#x591A;&#x8DEF;&#x9078;&#x64C7;&#x3002;&#x9019;&#x91CC;&#x662F;&#x4E00;&#x500B;&#x7C21;&#x55AE;&#x7684;switch&#x7684;&#x4F8B;&#x5B50;&#xFF1A;</p>
<pre><code class="lang-go"><span class="hljs-keyword">switch</span> coinflip() {
<span class="hljs-keyword">case</span> <span class="hljs-string">&quot;heads&quot;</span>:
heads++
<span class="hljs-keyword">case</span> <span class="hljs-string">&quot;tails&quot;</span>:
tails++
<span class="hljs-keyword">default</span>:
fmt.Println(<span class="hljs-string">&quot;landed on edge!&quot;</span>)
<span class="hljs-keyword">case</span> <span class="hljs-string">&quot;heads&quot;</span>:
heads++
<span class="hljs-keyword">case</span> <span class="hljs-string">&quot;tails&quot;</span>:
tails++
<span class="hljs-keyword">default</span>:
fmt.Println(<span class="hljs-string">&quot;landed on edge!&quot;</span>)
}
</code></pre>
<p>&#x5728;&#x7FFB;&#x8F49;&#x786C;&#x5E63;&#x7684;&#x6642;&#x5019;&#xFF0C;&#x4F8B;&#x5B50;&#x91CC;&#x7684;coinflip&#x51FD;&#x6578;&#x8FD4;&#x8FF4;&#x5E7E;&#x7A2E;&#x4E0D;&#x540C;&#x7684;&#x7D50;&#x679C;&#xFF0C;&#x6BCF;&#x4E00;&#x500B;case&#x90FD;&#x6703;&#x5C0D;&#x61C9;&#x500B;&#x8FD4;&#x8FF4;&#x7D50;&#x679C;&#xFF0C;&#x9019;&#x91CC;&#x9700;&#x8981;&#x8A3B;&#x610F;&#xFF0C;Go&#x8A9E;&#x8A00;&#x4F75;&#x4E0D;&#x9700;&#x8981;&#x986F;&#x5F0F;&#x5730;&#x53BB;&#x5728;&#x6BCF;&#x4E00;&#x500B;case&#x5F8C;&#x5BEB;break&#xFF0C;&#x8A9E;&#x8A00;&#x9ED8;&#x8A8D;&#x57F7;&#x884C;&#x5B8C;case&#x5F8C;&#x7684;&#x908F;&#x8F2F;&#x8A9E;&#x53E5;&#x6703;&#x81EA;&#x52D5;&#x9000;&#x9F63;&#x3002;&#x7576;&#x7136;&#x4E86;&#xFF0C;&#x5982;&#x679C;&#x4F60;&#x60F3;&#x8981;&#x76F8;&#x9130;&#x7684;&#x5E7E;&#x500B;case&#x90FD;&#x57F7;&#x884C;&#x540C;&#x4E00;&#x908F;&#x8F2F;&#x7684;&#x8A71;&#xFF0C;&#x9700;&#x8981;&#x81EA;&#x5DF1;&#x986F;&#x5F0F;&#x5730;&#x5BEB;&#x4E0A;&#x4E00;&#x500B;fallthrough&#x8A9E;&#x53E5;&#x4F86;&#x8986;&#x84CB;&#x9019;&#x7A2E;&#x9ED8;&#x8A8D;&#x884C;&#x7232;&#x3002;&#x4E0D;&#x904E;fallthrough&#x8A9E;&#x53E5;&#x5728;&#x4E00;&#x822C;&#x7684;&#x7DE8;&#x7A0B;&#x4E2D;&#x7528;&#x5230;&#x5F97;&#x5F88;&#x5C11;&#x3002;</p>
<p>go&#x91CC;&#x7684;switch&#x9084;&#x53EF;&#x4EE5;&#x4E0D;&#x5E36;&#x64CD;&#x4F5C;&#x5C0D;&#x8C61;&#xFF1B;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x7F85;&#x5217;&#x591A;&#x7A2E;&#x689D;&#x4EF6;&#xFF0C;&#x50CF;&#x5176;&#x5B83;&#x8A9E;&#x8A00;&#x91CC;&#x9762;&#x7684;&#x591A;&#x500B;if else&#x4E00;&#x6A23;&#xFF0C;&#x4E0B;&#x9762;&#x662F;&#x4E00;&#x500B;&#x4F8B;&#x5B50;&#xFF1A;</p>
<p>Go&#x8A9E;&#x8A00;&#x91CC;&#x7684;switch&#x9084;&#x53EF;&#x4EE5;&#x4E0D;&#x5E36;&#x64CD;&#x4F5C;&#x5C0D;&#x8C61;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;switch&#x4E0D;&#x5E36;&#x64CD;&#x4F5C;&#x5C0D;&#x8C61;&#x6642;&#x9ED8;&#x8A8D;&#x7528;true&#x503C;&#x4EE3;&#x66FF;&#xFF0C;&#x7136;&#x5F8C;&#x5C07;&#x6BCF;&#x500B;case&#x7684;&#x8868;&#x9054;&#x5F0F;&#x548C;true&#x503C;&#x9032;&#x884C;&#x6BD4;&#x8F03;&#xFF09;&#xFF1B;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x7F85;&#x5217;&#x591A;&#x7A2E;&#x689D;&#x4EF6;&#xFF0C;&#x50CF;&#x5176;&#x5B83;&#x8A9E;&#x8A00;&#x91CC;&#x9762;&#x7684;&#x591A;&#x500B;if else&#x4E00;&#x6A23;&#xFF0C;&#x4E0B;&#x9762;&#x662F;&#x4E00;&#x500B;&#x4F8B;&#x5B50;&#xFF1A;</p>
<pre><code class="lang-go"><span class="hljs-keyword">func</span> Signum(x <span class="hljs-typename">int</span>) <span class="hljs-typename">int</span> {
<span class="hljs-keyword">switch</span> {
<span class="hljs-keyword">case</span> x &gt; <span class="hljs-number">0</span>:
<span class="hljs-keyword">return</span> +<span class="hljs-number">1</span>
<span class="hljs-keyword">default</span>:
<span class="hljs-keyword">return</span> <span class="hljs-number">0</span>
<span class="hljs-keyword">case</span> x &lt; <span class="hljs-number">0</span>:
<span class="hljs-keyword">return</span> -<span class="hljs-number">1</span>
<span class="hljs-keyword">case</span> x &gt; <span class="hljs-number">0</span>:
<span class="hljs-keyword">return</span> +<span class="hljs-number">1</span>
<span class="hljs-keyword">default</span>:
<span class="hljs-keyword">return</span> <span class="hljs-number">0</span>
<span class="hljs-keyword">case</span> x &lt; <span class="hljs-number">0</span>:
<span class="hljs-keyword">return</span> -<span class="hljs-number">1</span>
}
}
</code></pre>
<p>&#x9019;&#x7A2E;&#x5F62;&#x5F0F;&#x53EB;&#x505A;&#x7121;tag switch(tagless switch)&#xFF1B;&#x9019;&#x548C;switch true&#x662F;&#x7B49;&#x50F9;&#x7684;&#x3002;</p>
<p>&#x50CF;for&#x548C;if&#x63A7;&#x88FD;&#x8A9E;&#x53E5;&#x4E00;&#x6A23;&#xFF0C;switch&#x4E5F;&#x53EF;&#x4EE5;&#x7DCA;&#x8DDF;&#x4E00;&#x500B;&#x7C21;&#x77ED;&#x7684;&#x8B8A;&#x91CF;&#x8072;&#x660E;&#xFF0C;&#x4E00;&#x500B;&#x81EA;&#x589E;&#x8868;&#x9054;&#x5F0F;&#x3001;&#x8CE6;&#x503C;&#x8A9E;&#x53E5;&#xFF0C;&#x6216;&#x8005;&#x4E00;&#x500B;&#x51FD;&#x6578;&#x8ABF;&#x7528;&#x3002;</p>
<p>break&#x548C;continue&#x8A9E;&#x53E5;&#x6703;&#x6539;&#x8B8A;&#x63A7;&#x88FD;&#x6D41;&#x3002;&#x548C;&#x5176;&#x5B83;&#x8A9E;&#x8A00;&#x4E2D;&#x7684;break&#x548C;continue&#x4E00;&#x6A23;&#xFF0C;break&#x6703;&#x4E2D;&#x65B7;&#x7576;&#x524D;&#x7684;&#x5FAA;&#x74B0;&#xFF0C;&#x4F75;&#x958B;&#x59CB;&#x57F7;&#x884C;&#x5FAA;&#x74B0;&#x4E4B;&#x5F8C;&#x7684;&#x5167;&#x5BB9;&#xFF0C;&#x800C;continue&#x6703;&#x4E2D;&#x8DF3;&#x904E;&#x7576;&#x524D;&#x5FAA;&#x74B0;&#xFF0C;&#x4F75;&#x958B;&#x59CB;&#x57F7;&#x884C;&#x4E0B;&#x4E00;&#x6B21;&#x5FAA;&#x74B0;&#x3002;&#x9019;&#x5169;&#x500B;&#x8A9E;&#x53E5;&#x9664;&#x4E86;&#x53EF;&#x4EE5;&#x63A7;&#x88FD;for&#x5FAA;&#x74B0;&#xFF0C;&#x9084;&#x53EF;&#x4EE5;&#x7528;&#x4F86;&#x63A7;&#x88FD;switch&#x548C;select&#x8A9E;&#x53E5;(&#x4E4B;&#x5F8C;&#x6703;&#x8B1B;&#x5230;)&#xFF0C;&#x5728;1.3&#x7BC0;&#x4E2D;&#x6211;&#x5011;&#x770B;&#x5230;&#xFF0C;continue&#x6703;&#x8DF3;&#x904E;&#x662F;&#x5167;&#x5C64;&#x7684;&#x5FAA;&#x74B0;&#xFF0C;&#x5982;&#x679C;&#x6211;&#x5011;&#x60F3;&#x8DF3;&#x904E;&#x7684;&#x662F;&#x66F4;&#x5916;&#x5C64;&#x7684;&#x5FAA;&#x74B0;&#x7684;&#x8A71;&#xFF0C;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x5728;&#x76F8;&#x61C9;&#x7684;&#x4F4D;&#x7F6E;&#x52A0;&#x4E0A;label&#xFF0C;&#x9019;&#x6A23;break&#x548C;continue&#x5C31;&#x53EF;&#x4EE5;&#x6839;&#x64DA;&#x6211;&#x5011;&#x7684;&#x60F3;&#x6CD5;&#x4F86;continue&#x548C;break&#x4EFB;&#x610F;&#x5FAA;&#x74B0;&#x3002;&#x9019;&#x770B;&#x8D77;&#x4F86;&#x751A;&#x81F3;&#x6709;&#x9EDE;&#x50CF;goto&#x8A9E;&#x53E5;&#x7684;&#x4F5C;&#x7528;&#x4E86;&#x3002;&#x7576;&#x7136;&#xFF0C;&#x4E00;&#x822C;&#x7A0B;&#x5E8F;&#x54E1;&#x4E5F;&#x4E0D;&#x6703;&#x7528;&#x5230;&#x9019;&#x7A2E;&#x64CD;&#x4F5C;&#x3002;&#x9019;&#x5169;&#x7A2E;&#x884C;&#x7232;&#x66F4;&#x591A;&#x5730;&#x88AB;&#x7528;&#x5230;&#x6A5F;&#x5668;&#x751F;&#x6210;&#x7684;&#x4EE3;&#x78BC;&#x4E2D;&#x3002;</p>
<p>&#x547D;&#x540D;&#x985E;&#x578B;&#xFF1A;&#x985E;&#x578B;&#x8072;&#x660E;&#x4F7F;&#x5F97;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x5F88;&#x65B9;&#x4FBF;&#x5730;&#x7D66;&#x4E00;&#x500B;&#x7279;&#x6B8A;&#x985E;&#x578B;&#x4E00;&#x500B;&#x540D;&#x5B57;&#x3002;&#x56E0;&#x7232;struct&#x985E;&#x578B;&#x8072;&#x660E;&#x901A;&#x5E38;&#x975E;&#x5E38;&#x5730;&#x9577;&#xFF0C;&#x6240;&#x4EE5;&#x6211;&#x5011;&#x7E3D;&#x8981;&#x7D66;&#x9019;&#x7A2E;struct&#x53D6;&#x4E00;&#x500B;&#x540D;&#x5B57;&#x3002;&#x672C;&#x7AE0;&#x4E2D;&#x5C31;&#x6709;&#x9019;&#x6A23;&#x4E00;&#x500B;&#x4F8B;&#x5B50;&#xFF0C;2d&#x9EDE;&#x985E;&#x578B;&#xFF1A;</p>
<p><strong>&#x547D;&#x540D;&#x985E;&#x578B;&#xFF1A;</strong> &#x985E;&#x578B;&#x8072;&#x660E;&#x4F7F;&#x5F97;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x5F88;&#x65B9;&#x4FBF;&#x5730;&#x7D66;&#x4E00;&#x500B;&#x7279;&#x6B8A;&#x985E;&#x578B;&#x4E00;&#x500B;&#x540D;&#x5B57;&#x3002;&#x56E0;&#x7232;struct&#x985E;&#x578B;&#x8072;&#x660E;&#x901A;&#x5E38;&#x975E;&#x5E38;&#x5730;&#x9577;&#xFF0C;&#x6240;&#x4EE5;&#x6211;&#x5011;&#x7E3D;&#x8981;&#x7D66;&#x9019;&#x7A2E;struct&#x53D6;&#x4E00;&#x500B;&#x540D;&#x5B57;&#x3002;&#x672C;&#x7AE0;&#x4E2D;&#x5C31;&#x6709;&#x9019;&#x6A23;&#x4E00;&#x500B;&#x4F8B;&#x5B50;&#xFF0C;&#x4E8C;&#x7DAD;&#x9EDE;&#x985E;&#x578B;&#xFF1A;</p>
<pre><code class="lang-go"><span class="hljs-keyword">type</span> Point <span class="hljs-keyword">struct</span> {
X, Y <span class="hljs-typename">int</span>
}
<span class="hljs-keyword">var</span> p Point
</code></pre>
<p>&#x985E;&#x578B;&#x8072;&#x660E;&#x548C;&#x547D;&#x540D;&#x985E;&#x578B;&#x6703;&#x5728;&#x7B2C;&#x4E8C;&#x7AE0;&#x4E2D;&#x4ECB;&#x7D39;&#x3002;</p>
<p>&#x6307;&#x91DD;&#xFF1A;Go&#x8A9E;&#x8A00;&#x63D0;&#x4F9B;&#x4E86;&#x6307;&#x91DD;&#x3002;&#x6307;&#x91DD;&#x662F;&#x4E00;&#x7A2E;&#x76F4;&#x63A5;&#x5B58;&#x5132;&#x4E86;&#x8B8A;&#x91CF;&#x7684;&#x5167;&#x5B58;&#x5730;&#x5740;&#x7684;&#x6578;&#x64DA;&#x7D50;&#x69CB;&#x3002;&#x5728;&#x5176;&#x5B83;&#x8A9E;&#x8A00;&#x4E2D;&#xFF0C;&#x6BD4;&#x5982;C&#x8A9E;&#x8A00;&#xFF0C;&#x6307;&#x91DD;&#x662F;&#x5B8C;&#x5168;&#x4E0D;&#x53D7;&#x7D04;&#x675F;&#x7684;&#x3002;&#x5728;&#x53E6;&#x5916;&#x4E00;&#x4E9B;&#x8A9E;&#x8A00;&#x4E2D;&#xFF0C;&#x6307;&#x91DD;&#x4E00;&#x822C;&#x88AB;&#x7A31;&#x7232;&#x201C;&#x5F15;&#x7528;&#x201D;&#xFF0C;&#x9664;&#x4E86;&#x5230;&#x8655;&#x50B3;&#x905E;&#x9019;&#x4E9B;&#x6307;&#x91DD;&#x4E4B;&#x5916;&#xFF0C;&#x4F75;&#x4E0D;&#x80FD;&#x5C0D;&#x9019;&#x4E9B;&#x6307;&#x91DD;&#x505A;&#x592A;&#x591A;&#x4E8B;&#x60C5;&#x3002;go&#x5728;&#x9019;&#x5169;&#x7A2E;&#x8303;&#x570D;&#x4E2D;&#x53D6;&#x5F97;&#x4E86;&#x4E00;&#x500B;&#x5E73;&#x8861;&#x3002;&#x6307;&#x91DD;&#x662F;&#x53EF;&#x898B;&#x7684;&#x5167;&#x5B58;&#x5730;&#x5740;&#xFF0C;&amp;&#x64CD;&#x4F5C;&#x7B26;&#x53EF;&#x4EE5;&#x8FD4;&#x8FF4;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#x7684;&#x5167;&#x5B58;&#x5730;&#x5740;&#xFF0C;&#x4F75;&#x4E14;*&#x64CD;&#x4F5C;&#x7B26;&#x53EF;&#x4EE5;&#x7A6B;&#x53D6;&#x6307;&#x91DD;&#x6307;&#x5411;&#x7684;&#x8B8A;&#x91CF;&#x5167;&#x5BB9;&#xFF0C;&#x4F46;&#x662F;&#x5728;go&#x8A9E;&#x8A00;&#x91CC;&#x6C92;&#x6709;&#x6307;&#x91DD;&#x904B;&#x7B97;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x4E0D;&#x50CF;c&#x8A9E;&#x8A00;&#x91CC;&#x53EF;&#x4EE5;&#x5C0D;&#x6307;&#x91DD;&#x9032;&#x884C;&#x52A0;&#x6216;&#x6E1B;&#x64CD;&#x4F5C;&#x3002;&#x6211;&#x5011;&#x6703;&#x5728;2.3.2&#x4E2D;&#x9032;&#x884C;&#x8A73;&#x7D30;&#x4ECB;&#x7D39;&#x3002;</p>
<p>&#x65B9;&#x6CD5;&#x548C;&#x63A5;&#x53E3;&#xFF1A;&#x65B9;&#x6CD5;&#x662F;&#x548C;&#x547D;&#x540D;&#x985E;&#x578B;&#x95DC;&#x806F;&#x7684;&#x4E00;&#x985E;&#x51FD;&#x6578;&#x3002;Go&#x8A9E;&#x8A00;&#x91CC;&#x6BD4;&#x8F03;&#x7279;&#x6B8A;&#x7684;&#x662F;&#x65B9;&#x6CD5;&#x53EF;&#x4EE5;&#x88AB;&#x95DC;&#x806F;&#x5230;&#x4EFB;&#x610F;&#x4E00;&#x7A2E;&#x547D;&#x540D;&#x985E;&#x578B;&#x3002;&#x5728;&#x7B2C;&#x516D;&#x7AE0;&#x6211;&#x5011;&#x6703;&#x8A73;&#x7D30;&#x5730;&#x8B1B;&#x65B9;&#x6CD5;&#x3002;&#x63A5;&#x53E3;&#x662F;&#x4E00;&#x7A2E;&#x62BD;&#x8C61;&#x985E;&#x578B;&#xFF0C;&#x9019;&#x7A2E;&#x985E;&#x578B;&#x53EF;&#x4EE5;&#x8B93;&#x6211;&#x5011;&#x4EE5;&#x540C;&#x6A23;&#x7684;&#x65B9;&#x5F0F;&#x4F86;&#x8655;&#x7406;&#x4E0D;&#x540C;&#x7684;&#x56FA;&#x6709;&#x985E;&#x578B;&#xFF0C;&#x4E0D;&#x7528;&#x95DC;&#x5FC3;&#x5B83;&#x5011;&#x7684;&#x5177;&#x9AD4;&#x5BE6;&#x73FE;&#xFF0C;&#x800C;&#x96BB;&#x9700;&#x8981;&#x95DC;&#x8A3B;&#x5B83;&#x5011;&#x63D0;&#x4F9B;&#x7684;&#x65B9;&#x6CD5;&#x3002;&#x7B2C;&#x4E03;&#x7AE0;&#x4E2D;&#x6703;&#x8A73;&#x7D30;&#x8AAC;&#x660E;&#x9019;&#x4E9B;&#x5167;&#x5BB9;&#x3002;</p>
<p>&#x5305;(packages)&#xFF1A;Go&#x8A9E;&#x8A00;&#x63D0;&#x4F9B;&#x4E86;&#x4E00;&#x4E9B;&#x5F88;&#x597D;&#x7528;&#x7684;package&#xFF0C;&#x4F75;&#x4E14;&#x9019;&#x4E9B;package&#x662F;&#x53EF;&#x4EE5;&#x64F4;&#x5C55;&#x7684;&#x3002;Go&#x8A9E;&#x8A00;&#x793E;&#x5340;&#x5DF2;&#x7D93;&#x5275;&#x9020;&#x4F75;&#x4E14;&#x5206;&#x4EAB;&#x4E86;&#x5F88;&#x591A;&#x5F88;&#x591A;&#x3002;&#x6240;&#x4EE5;Go&#x8A9E;&#x8A00;&#x7DE8;&#x7A0B;&#x5927;&#x591A;&#x6578;&#x60C5;&#x6CC1;&#x4E0B;&#x5C31;&#x662F;&#x7528;&#x5DF2;&#x6709;&#x7684;package&#x4F86;&#x5BEB;&#x6211;&#x5011;&#x81EA;&#x5DF1;&#x7684;&#x4EE3;&#x78BC;&#x3002;&#x901A;&#x904E;&#x9019;&#x672C;&#x66F8;&#xFF0C;&#x6211;&#x5011;&#x6703;&#x8B1B;&#x89E3;&#x4E00;&#x4E9B;&#x91CD;&#x8981;&#x7684;&#x6A19;&#x6E96;&#x5EAB;&#x5167;&#x7684;package&#xFF0C;&#x4F46;&#x662F;&#x9084;&#x662F;&#x6709;&#x5F88;&#x591A;&#x6211;&#x5011;&#x6C92;&#x6709;&#x7BC7;&#x5E45;&#x53BB;&#x8AAC;&#x660E;&#xFF0C;&#x56E0;&#x7232;&#x6211;&#x5011;&#x6C92;&#x6CD5;&#x5728;&#x9019;&#x6A23;&#x7684;&#x539A;&#x5EA6;&#x7684;&#x66F8;&#x91CC;&#x53BB;&#x505A;&#x4E00;&#x90E8;&#x4EE3;&#x78BC;&#x5927;&#x5168;&#x3002;</p>
<p>&#x5728;&#x4F60;&#x958B;&#x59CB;&#x5BEB;&#x4E00;&#x500B;&#x65B0;&#x7A0B;&#x5E8F;&#x4E4B;&#x524D;&#xFF0C;&#x6700;&#x597D;&#x5148;&#x53BB;&#x6AA2;&#x67FB;&#x4E00;&#x4E0B;&#x662F;&#x4E0D;&#x662F;&#x5DF2;&#x7D93;&#x6709;&#x4E86;&#x73FE;&#x6210;&#x7684;&#x5EAB;&#x53EF;&#x4EE5;&#x5E6B;&#x52A9;&#x4F60;&#x66F4;&#x9AD8;&#x6548;&#x5730;&#x5B8C;&#x6210;&#x9019;&#x4EF6;&#x4E8B;&#x60C5;&#x3002;&#x4F60;&#x53EF;&#x4EE5;&#x5728;<a href="https://golang.org/pkg" target="_blank">https://golang.org/pkg</a> &#x548C; <a href="https://godoc.org" target="_blank">https://godoc.org</a> &#x4E2D;&#x627E;&#x5230;&#x6A19;&#x6E96;&#x5EAB;&#x548C;&#x793E;&#x5340;&#x5BEB;&#x7684;package&#x3002;godoc&#x9019;&#x500B;&#x5DE5;&#x5177;&#x53EF;&#x4EE5;&#x8B93;&#x4F60;&#x76F4;&#x63A5;&#x5728;&#x672C;&#x5730;&#x547D;&#x4EE4;&#x884C;&#x95B2;&#x8B80;&#x6A19;&#x6E96;&#x5EAB;&#x7684;&#x6587;&#x6A94;&#x3002;&#x6BD4;&#x5982;&#x4E0B;&#x9762;&#x9019;&#x500B;&#x4F8B;&#x5B50;&#x3002;</p>
<p><strong>&#x6307;&#x91DD;&#xFF1A;</strong> Go&#x8A9E;&#x8A00;&#x63D0;&#x4F9B;&#x4E86;&#x6307;&#x91DD;&#x3002;&#x6307;&#x91DD;&#x662F;&#x4E00;&#x7A2E;&#x76F4;&#x63A5;&#x5B58;&#x5132;&#x4E86;&#x8B8A;&#x91CF;&#x7684;&#x5167;&#x5B58;&#x5730;&#x5740;&#x7684;&#x6578;&#x64DA;&#x985E;&#x578B;&#x3002;&#x5728;&#x5176;&#x5B83;&#x8A9E;&#x8A00;&#x4E2D;&#xFF0C;&#x6BD4;&#x5982;C&#x8A9E;&#x8A00;&#xFF0C;&#x6307;&#x91DD;&#x64CD;&#x4F5C;&#x662F;&#x5B8C;&#x5168;&#x4E0D;&#x53D7;&#x7D04;&#x675F;&#x7684;&#x3002;&#x5728;&#x53E6;&#x5916;&#x4E00;&#x4E9B;&#x8A9E;&#x8A00;&#x4E2D;&#xFF0C;&#x6307;&#x91DD;&#x4E00;&#x822C;&#x88AB;&#x8655;&#x7406;&#x7232;&#x201C;&#x5F15;&#x7528;&#x201D;&#xFF0C;&#x9664;&#x4E86;&#x5230;&#x8655;&#x50B3;&#x905E;&#x9019;&#x4E9B;&#x6307;&#x91DD;&#x4E4B;&#x5916;&#xFF0C;&#x4F75;&#x4E0D;&#x80FD;&#x5C0D;&#x9019;&#x4E9B;&#x6307;&#x91DD;&#x505A;&#x592A;&#x591A;&#x4E8B;&#x60C5;&#x3002;Go&#x8A9E;&#x8A00;&#x5728;&#x9019;&#x5169;&#x7A2E;&#x8303;&#x570D;&#x4E2D;&#x53D6;&#x4E86;&#x4E00;&#x7A2E;&#x5E73;&#x8861;&#x3002;&#x6307;&#x91DD;&#x662F;&#x53EF;&#x898B;&#x7684;&#x5167;&#x5B58;&#x5730;&#x5740;&#xFF0C;&amp;&#x64CD;&#x4F5C;&#x7B26;&#x53EF;&#x4EE5;&#x8FD4;&#x8FF4;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#x7684;&#x5167;&#x5B58;&#x5730;&#x5740;&#xFF0C;&#x4F75;&#x4E14;*&#x64CD;&#x4F5C;&#x7B26;&#x53EF;&#x4EE5;&#x7A6B;&#x53D6;&#x6307;&#x91DD;&#x6307;&#x5411;&#x7684;&#x8B8A;&#x91CF;&#x5167;&#x5BB9;&#xFF0C;&#x4F46;&#x662F;&#x5728;Go&#x8A9E;&#x8A00;&#x91CC;&#x6C92;&#x6709;&#x6307;&#x91DD;&#x904B;&#x7B97;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x4E0D;&#x80FD;&#x50CF;c&#x8A9E;&#x8A00;&#x91CC;&#x53EF;&#x4EE5;&#x5C0D;&#x6307;&#x91DD;&#x9032;&#x884C;&#x52A0;&#x6216;&#x6E1B;&#x64CD;&#x4F5C;&#x3002;&#x6211;&#x5011;&#x6703;&#x5728;2.3.2&#x4E2D;&#x9032;&#x884C;&#x8A73;&#x7D30;&#x4ECB;&#x7D39;&#x3002;</p>
<p><strong>&#x65B9;&#x6CD5;&#x548C;&#x63A5;&#x53E3;&#xFF1A;</strong> &#x65B9;&#x6CD5;&#x662F;&#x548C;&#x547D;&#x540D;&#x985E;&#x578B;&#x95DC;&#x806F;&#x7684;&#x4E00;&#x985E;&#x51FD;&#x6578;&#x3002;Go&#x8A9E;&#x8A00;&#x91CC;&#x6BD4;&#x8F03;&#x7279;&#x6B8A;&#x7684;&#x662F;&#x65B9;&#x6CD5;&#x53EF;&#x4EE5;&#x88AB;&#x95DC;&#x806F;&#x5230;&#x4EFB;&#x610F;&#x4E00;&#x7A2E;&#x547D;&#x540D;&#x985E;&#x578B;&#x3002;&#x5728;&#x7B2C;&#x516D;&#x7AE0;&#x6211;&#x5011;&#x6703;&#x8A73;&#x7D30;&#x5730;&#x8B1B;&#x65B9;&#x6CD5;&#x3002;&#x63A5;&#x53E3;&#x662F;&#x4E00;&#x7A2E;&#x62BD;&#x8C61;&#x985E;&#x578B;&#xFF0C;&#x9019;&#x7A2E;&#x985E;&#x578B;&#x53EF;&#x4EE5;&#x8B93;&#x6211;&#x5011;&#x4EE5;&#x540C;&#x6A23;&#x7684;&#x65B9;&#x5F0F;&#x4F86;&#x8655;&#x7406;&#x4E0D;&#x540C;&#x7684;&#x56FA;&#x6709;&#x985E;&#x578B;&#xFF0C;&#x4E0D;&#x7528;&#x95DC;&#x5FC3;&#x5B83;&#x5011;&#x7684;&#x5177;&#x9AD4;&#x5BE6;&#x73FE;&#xFF0C;&#x800C;&#x96BB;&#x9700;&#x8981;&#x95DC;&#x8A3B;&#x5B83;&#x5011;&#x63D0;&#x4F9B;&#x7684;&#x65B9;&#x6CD5;&#x3002;&#x7B2C;&#x4E03;&#x7AE0;&#x4E2D;&#x6703;&#x8A73;&#x7D30;&#x8AAC;&#x660E;&#x9019;&#x4E9B;&#x5167;&#x5BB9;&#x3002;</p>
<p><strong>&#x5305;&#xFF08;packages&#xFF09;&#xFF1A;</strong> Go&#x8A9E;&#x8A00;&#x63D0;&#x4F9B;&#x4E86;&#x4E00;&#x4E9B;&#x5F88;&#x597D;&#x7528;&#x7684;package&#xFF0C;&#x4F75;&#x4E14;&#x9019;&#x4E9B;package&#x662F;&#x53EF;&#x4EE5;&#x64F4;&#x5C55;&#x7684;&#x3002;Go&#x8A9E;&#x8A00;&#x793E;&#x5340;&#x5DF2;&#x7D93;&#x5275;&#x9020;&#x4F75;&#x4E14;&#x5206;&#x4EAB;&#x4E86;&#x5F88;&#x591A;&#x5F88;&#x591A;&#x3002;&#x6240;&#x4EE5;Go&#x8A9E;&#x8A00;&#x7DE8;&#x7A0B;&#x5927;&#x591A;&#x6578;&#x60C5;&#x6CC1;&#x4E0B;&#x5C31;&#x662F;&#x7528;&#x5DF2;&#x6709;&#x7684;package&#x4F86;&#x5BEB;&#x6211;&#x5011;&#x81EA;&#x5DF1;&#x7684;&#x4EE3;&#x78BC;&#x3002;&#x901A;&#x904E;&#x9019;&#x672C;&#x66F8;&#xFF0C;&#x6211;&#x5011;&#x6703;&#x8B1B;&#x89E3;&#x4E00;&#x4E9B;&#x91CD;&#x8981;&#x7684;&#x6A19;&#x6E96;&#x5EAB;&#x5167;&#x7684;package&#xFF0C;&#x4F46;&#x662F;&#x9084;&#x662F;&#x6709;&#x5F88;&#x591A;&#x6211;&#x5011;&#x6C92;&#x6709;&#x7BC7;&#x5E45;&#x53BB;&#x8AAC;&#x660E;&#xFF0C;&#x56E0;&#x7232;&#x6211;&#x5011;&#x6C92;&#x6CD5;&#x5728;&#x9019;&#x6A23;&#x7684;&#x539A;&#x5EA6;&#x7684;&#x66F8;&#x91CC;&#x53BB;&#x505A;&#x4E00;&#x90E8;&#x4EE3;&#x78BC;&#x5927;&#x5168;&#x3002;</p>
<p>&#x5728;&#x4F60;&#x958B;&#x59CB;&#x5BEB;&#x4E00;&#x500B;&#x65B0;&#x7A0B;&#x5E8F;&#x4E4B;&#x524D;&#xFF0C;&#x6700;&#x597D;&#x5148;&#x53BB;&#x6AA2;&#x67FB;&#x4E00;&#x4E0B;&#x662F;&#x4E0D;&#x662F;&#x5DF2;&#x7D93;&#x6709;&#x4E86;&#x73FE;&#x6210;&#x7684;&#x5EAB;&#x53EF;&#x4EE5;&#x5E6B;&#x52A9;&#x4F60;&#x66F4;&#x9AD8;&#x6548;&#x5730;&#x5B8C;&#x6210;&#x9019;&#x4EF6;&#x4E8B;&#x60C5;&#x3002;&#x4F60;&#x53EF;&#x4EE5;&#x5728; <a href="https://golang.org/pkg" target="_blank">https://golang.org/pkg</a> &#x548C; <a href="https://godoc.org" target="_blank">https://godoc.org</a> &#x4E2D;&#x627E;&#x5230;&#x6A19;&#x6E96;&#x5EAB;&#x548C;&#x793E;&#x5340;&#x5BEB;&#x7684;package&#x3002;godoc&#x9019;&#x500B;&#x5DE5;&#x5177;&#x53EF;&#x4EE5;&#x8B93;&#x4F60;&#x76F4;&#x63A5;&#x5728;&#x672C;&#x5730;&#x547D;&#x4EE4;&#x884C;&#x95B2;&#x8B80;&#x6A19;&#x6E96;&#x5EAB;&#x7684;&#x6587;&#x6A94;&#x3002;&#x6BD4;&#x5982;&#x4E0B;&#x9762;&#x9019;&#x500B;&#x4F8B;&#x5B50;&#x3002;</p>
<pre><code>$ go doc http.ListenAndServe
package http // import &quot;net/http&quot;
func ListenAndServe(addr string, handler Handler) error
ListenAndServe listens on the TCP network address addr and then
calls Serve with handler to handle requests on incoming connections.
...
</code></pre><p>&#x8A3B;&#x91CB;&#xFF1A;&#x6211;&#x5011;&#x4E4B;&#x524D;&#x5DF2;&#x7D93;&#x63D0;&#x5230;&#x904E;&#x4E86;&#x5728;&#x6E90;&#x6587;&#x4EF6;&#x7684;&#x958B;&#x982D;&#x5BEB;&#x7684;&#x8A3B;&#x91CB;&#x662F;&#x9019;&#x500B;&#x6E90;&#x6587;&#x4EF6;&#x7684;&#x6587;&#x6A94;&#x3002;&#x5728;&#x6BCF;&#x4E00;&#x500B;&#x51FD;&#x6578;&#x4E4B;&#x524D;&#x5BEB;&#x4E00;&#x500B;&#x8AAC;&#x660E;&#x51FD;&#x6578;&#x884C;&#x7232;&#x7684;&#x8A3B;&#x91CB;&#x4E5F;&#x662F;&#x4E00;&#x500B;&#x597D;&#x7FD2;&#x6163;&#x3002;&#x9019;&#x4E9B;&#x6163;&#x4F8B;&#x5F88;&#x91CD;&#x8981;&#xFF0C;&#x56E0;&#x7232;&#x9019;&#x4E9B;&#x5167;&#x5BB9;&#x6703;&#x88AB;&#x50CF;godoc&#x9019;&#x6A23;&#x7684;&#x5DE5;&#x5177;&#x6AA2;&#x6E2C;&#x5230;&#xFF0C;&#x4F75;&#x4E14;&#x5728;&#x57F7;&#x884C;&#x547D;&#x4EE4;&#x6642;&#x986F;&#x793A;&#x9019;&#x4E9B;&#x8A3B;&#x91CB;&#x3002;&#x5177;&#x9AD4;&#x53EF;&#x4EE5;&#x53C3;&#x8003;10.7.4&#x3002;</p>
<p>&#x591A;&#x884C;&#x8A3B;&#x91CB;&#x53EF;&#x4EE5;&#x7528;/<em> ... </em>/&#x4F86;&#x5305;&#x88F9;&#xFF0C;&#x548C;&#x5176;&#x5B83;&#x5927;&#x591A;&#x6578;&#x8A9E;&#x8A00;&#x4E00;&#x6A23;&#x3002;&#x5728;&#x6587;&#x4EF6;&#x4E00;&#x958B;&#x982D;&#x7684;&#x8A3B;&#x91CB;&#x4E00;&#x822C;&#x90FD;&#x662F;&#x9019;&#x7A2E;&#x5F62;&#x5F0F;&#xFF0C;&#x6216;&#x8005;&#x4E00;&#x5927;&#x6BB5;&#x7684;&#x89E3;&#x91CB;&#x6027;&#x7684;&#x8A3B;&#x91CB;&#x6587;&#x5B57;&#x4E5F;&#x6703;&#x88AB;&#x9019;&#x7B26;&#x865F;&#x5305;&#x4F4F;&#xFF0C;&#x4F86;&#x907F;&#x514D;&#x6BCF;&#x4E00;&#x884C;&#x90FD;&#x9700;&#x8981;&#x52A0;//&#x3002;&#x5728;&#x8A3B;&#x91CB;&#x4E2D;//&#x548C;/*&#x662F;&#x6C92;&#x4EC0;&#x9EBD;&#x610F;&#x7FA9;&#x7684;&#xFF0C;&#x6240;&#x4EE5;&#x4E0D;&#x8981;&#x5728;&#x8A3B;&#x91CB;&#x4E2D;&#x518D;&#x5D4C;&#x5165;&#x8A3B;&#x91CB;&#x3002;</p>
</code></pre><p><strong>&#x8A3B;&#x91CB;&#xFF1A;</strong> &#x6211;&#x5011;&#x4E4B;&#x524D;&#x5DF2;&#x7D93;&#x63D0;&#x5230;&#x904E;&#x4E86;&#x5728;&#x6E90;&#x6587;&#x4EF6;&#x7684;&#x958B;&#x982D;&#x5BEB;&#x7684;&#x8A3B;&#x91CB;&#x662F;&#x9019;&#x500B;&#x6E90;&#x6587;&#x4EF6;&#x7684;&#x6587;&#x6A94;&#x3002;&#x5728;&#x6BCF;&#x4E00;&#x500B;&#x51FD;&#x6578;&#x4E4B;&#x524D;&#x5BEB;&#x4E00;&#x500B;&#x8AAC;&#x660E;&#x51FD;&#x6578;&#x884C;&#x7232;&#x7684;&#x8A3B;&#x91CB;&#x4E5F;&#x662F;&#x4E00;&#x500B;&#x597D;&#x7FD2;&#x6163;&#x3002;&#x9019;&#x4E9B;&#x6163;&#x4F8B;&#x5F88;&#x91CD;&#x8981;&#xFF0C;&#x56E0;&#x7232;&#x9019;&#x4E9B;&#x5167;&#x5BB9;&#x6703;&#x88AB;&#x50CF;godoc&#x9019;&#x6A23;&#x7684;&#x5DE5;&#x5177;&#x6AA2;&#x6E2C;&#x5230;&#xFF0C;&#x4F75;&#x4E14;&#x5728;&#x57F7;&#x884C;&#x547D;&#x4EE4;&#x6642;&#x986F;&#x793A;&#x9019;&#x4E9B;&#x8A3B;&#x91CB;&#x3002;&#x5177;&#x9AD4;&#x53EF;&#x4EE5;&#x53C3;&#x8003;10.7.4&#x3002;</p>
<p>&#x591A;&#x884C;&#x8A3B;&#x91CB;&#x53EF;&#x4EE5;&#x7528; <code>/* ... */</code> &#x4F86;&#x5305;&#x88F9;&#xFF0C;&#x548C;&#x5176;&#x5B83;&#x5927;&#x591A;&#x6578;&#x8A9E;&#x8A00;&#x4E00;&#x6A23;&#x3002;&#x5728;&#x6587;&#x4EF6;&#x4E00;&#x958B;&#x982D;&#x7684;&#x8A3B;&#x91CB;&#x4E00;&#x822C;&#x90FD;&#x662F;&#x9019;&#x7A2E;&#x5F62;&#x5F0F;&#xFF0C;&#x6216;&#x8005;&#x4E00;&#x5927;&#x6BB5;&#x7684;&#x89E3;&#x91CB;&#x6027;&#x7684;&#x8A3B;&#x91CB;&#x6587;&#x5B57;&#x4E5F;&#x6703;&#x88AB;&#x9019;&#x7B26;&#x865F;&#x5305;&#x4F4F;&#xFF0C;&#x4F86;&#x907F;&#x514D;&#x6BCF;&#x4E00;&#x884C;&#x90FD;&#x9700;&#x8981;&#x52A0;//&#x3002;&#x5728;&#x8A3B;&#x91CB;&#x4E2D;//&#x548C;/*&#x662F;&#x6C92;&#x4EC0;&#x9EBD;&#x610F;&#x7FA9;&#x7684;&#xFF0C;&#x6240;&#x4EE5;&#x4E0D;&#x8981;&#x5728;&#x8A3B;&#x91CB;&#x4E2D;&#x518D;&#x5D4C;&#x5165;&#x8A3B;&#x91CB;&#x3002;</p>
</section>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="1" data-chapter-title="入門" data-filepath="ch1/ch1.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="1" data-chapter-title="入門" data-filepath="ch1/ch1.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>
@@ -2024,8 +2024,8 @@
<section class="normal" id="section-">
<h1 id="&#x7B2C;1&#x7AE0;-&#x5165;&#x9580;">&#x7B2C;1&#x7AE0; &#x5165;&#x9580;</h1>
<p>&#x672C;&#x7AE0;&#x6703;&#x4ECB;&#x7D39;Go&#x8A9E;&#x8A00;&#x91CC;&#x7684;&#x4E00;&#x4E9B;&#x57FA;&#x672C;&#x7D44;&#x4EF6;&#x3002;&#x6211;&#x5011;&#x5E0C;&#x671B;&#x7528;&#x4FE1;&#x606F;&#x548C;&#x4F8B;&#x5B50;&#x76E1;&#x5FEB;&#x5E36;&#x4F60;&#x5165;&#x9580;&#x3002;&#x672C;&#x7AE0;&#x548C;&#x4E4B;&#x5F8C;&#x7AE0;&#x7BC0;&#x7684;&#x4F8B;&#x5B50;&#x90FD;&#x662F;&#x91DD;&#x5C0D;&#x771E;&#x5BE6;&#x7684;&#x958B;&#x767C;&#x6848;&#x4F8B;&#x7D66;&#x9F63;&#x3002;&#x672C;&#x7AE0;&#x6211;&#x5011;&#x96BB;&#x662F;&#x7C21;&#x55AE;&#x5730;&#x7232;&#x4F60;&#x4ECB;&#x7D39;&#x4E00;&#x4E9B;Go&#x7684;&#x5165;&#x9580;&#x4F8B;&#x5B50;&#xFF0C;&#x5F9E;&#x7C21;&#x55AE;&#x7684;&#x6587;&#x4EF6;&#x8655;&#x7406;&#x3001;&#x5716;&#x50CF;&#x8655;&#x7406;&#x5230;&#x4E92;&#x806F;&#x7DB2;&#x4F75;&#x767C;&#x5BA2;&#x6236;&#x7AEF;&#x548C;&#x670D;&#x52D9;&#x7AEF;&#x7A0B;&#x5E8F;&#x3002;&#x7576;&#x7136;&#xFF0C;&#x5728;&#x7B2C;&#x4E00;&#x7AE0;&#x6211;&#x5011;&#x4E0D;&#x6703;&#x8A73;&#x76E1;&#x5730;&#x4E00;&#x4E00;&#x53BB;&#x8AAC;&#x660E;&#x7D30;&#x679D;&#x672B;&#x7BC0;&#xFF0C;&#x4E0D;&#x904E;&#x7528;&#x9019;&#x4E9B;&#x7A0B;&#x5E8F;&#x4F86;&#x5B78;&#x7FD2;&#x4E00;&#x9580;&#x65B0;&#x8A9E;&#x8A00;&#x80AF;&#x5B9A;&#x662F;&#x5F88;&#x6709;&#x6548;&#x7684;&#x3002;
&#x7576;&#x4F60;&#x5B78;&#x7FD2;&#x4E00;&#x9580;&#x65B0;&#x8A9E;&#x8A00;&#x6642;&#xFF0C;&#x4F60;&#x6703;&#x6709;&#x53BB;&#x7528;&#x9019;&#x9580;&#x65B0;&#x8A9E;&#x8A00;&#x53BB;&#x91CD;&#x5BEB;&#x81EA;&#x5DF1;&#x4EE5;&#x524D;&#x719F;&#x6089;&#x8A9E;&#x8A00;&#x4F8B;&#x5B50;&#x7684;&#x50BE;&#x5411;&#x3002;&#x5728;&#x5B78;&#x7FD2;Go&#x7684;&#x904E;&#x7A0B;&#x4E2D;&#xFF0C;&#x76E1;&#x91CF;&#x907F;&#x514D;&#x9019;&#x9EBD;&#x505A;&#x3002;&#x6211;&#x5011;&#x6703;&#x5411;&#x4F60;&#x6F14;&#x793A;&#x5982;&#x4F55;&#x7E94;&#x80FD;&#x5BEB;&#x9F63;&#x597D;&#x7684;Go&#x7A0B;&#x5E8F;&#xFF0C;&#x6240;&#x4EE5;&#x8ACB;&#x4F7F;&#x7528;&#x9019;&#x91CC;&#x7684;&#x4EE3;&#x78BC;&#x4F5C;&#x7232;&#x4F60;&#x5BEB;&#x81EA;&#x5DF1;&#x7684;Go&#x7A0B;&#x5E8F;&#x6642;&#x7684;&#x6307;&#x5357;&#x3002;</p>
<p>&#x672C;&#x7AE0;&#x6703;&#x4ECB;&#x7D39;Go&#x8A9E;&#x8A00;&#x91CC;&#x7684;&#x4E00;&#x4E9B;&#x57FA;&#x672C;&#x7D44;&#x4EF6;&#x3002;&#x6211;&#x5011;&#x5E0C;&#x671B;&#x7528;&#x4FE1;&#x606F;&#x548C;&#x4F8B;&#x5B50;&#x76E1;&#x5FEB;&#x5E36;&#x4F60;&#x5165;&#x9580;&#x3002;&#x672C;&#x7AE0;&#x548C;&#x4E4B;&#x5F8C;&#x7AE0;&#x7BC0;&#x7684;&#x4F8B;&#x5B50;&#x90FD;&#x662F;&#x91DD;&#x5C0D;&#x771E;&#x5BE6;&#x7684;&#x958B;&#x767C;&#x6848;&#x4F8B;&#x7D66;&#x9F63;&#x3002;&#x672C;&#x7AE0;&#x6211;&#x5011;&#x96BB;&#x662F;&#x7C21;&#x55AE;&#x5730;&#x7232;&#x4F60;&#x4ECB;&#x7D39;&#x4E00;&#x4E9B;Go&#x8A9E;&#x8A00;&#x7684;&#x5165;&#x9580;&#x4F8B;&#x5B50;&#xFF0C;&#x5F9E;&#x7C21;&#x55AE;&#x7684;&#x6587;&#x4EF6;&#x8655;&#x7406;&#x3001;&#x5716;&#x50CF;&#x8655;&#x7406;&#x5230;&#x4E92;&#x806F;&#x7DB2;&#x4F75;&#x767C;&#x5BA2;&#x6236;&#x7AEF;&#x548C;&#x670D;&#x52D9;&#x7AEF;&#x7A0B;&#x5E8F;&#x3002;&#x7576;&#x7136;&#xFF0C;&#x5728;&#x7B2C;&#x4E00;&#x7AE0;&#x6211;&#x5011;&#x4E0D;&#x6703;&#x8A73;&#x76E1;&#x5730;&#x4E00;&#x4E00;&#x53BB;&#x8AAC;&#x660E;&#x7D30;&#x679D;&#x672B;&#x7BC0;&#xFF0C;&#x4E0D;&#x904E;&#x7528;&#x9019;&#x4E9B;&#x7A0B;&#x5E8F;&#x4F86;&#x5B78;&#x7FD2;&#x4E00;&#x9580;&#x65B0;&#x8A9E;&#x8A00;&#x80AF;&#x5B9A;&#x662F;&#x5F88;&#x6709;&#x6548;&#x7684;&#x3002;</p>
<p>&#x7576;&#x4F60;&#x5B78;&#x7FD2;&#x4E00;&#x9580;&#x65B0;&#x8A9E;&#x8A00;&#x6642;&#xFF0C;&#x4F60;&#x6703;&#x7528;&#x9019;&#x9580;&#x65B0;&#x8A9E;&#x8A00;&#x53BB;&#x91CD;&#x5BEB;&#x81EA;&#x5DF1;&#x4EE5;&#x524D;&#x719F;&#x6089;&#x8A9E;&#x8A00;&#x4F8B;&#x5B50;&#x7684;&#x50BE;&#x5411;&#x3002;&#x5728;&#x5B78;&#x7FD2;Go&#x8A9E;&#x8A00;&#x7684;&#x904E;&#x7A0B;&#x4E2D;&#xFF0C;&#x76E1;&#x91CF;&#x907F;&#x514D;&#x9019;&#x9EBD;&#x505A;&#x3002;&#x6211;&#x5011;&#x6703;&#x5411;&#x4F60;&#x6F14;&#x793A;&#x5982;&#x4F55;&#x7E94;&#x80FD;&#x5BEB;&#x9F63;&#x597D;&#x7684;Go&#x8A9E;&#x8A00;&#x7A0B;&#x5E8F;&#xFF0C;&#x6240;&#x4EE5;&#x8ACB;&#x4F7F;&#x7528;&#x9019;&#x91CC;&#x7684;&#x4EE3;&#x78BC;&#x4F5C;&#x7232;&#x4F60;&#x5BEB;&#x81EA;&#x5DF1;&#x7684;Go&#x7A0B;&#x5E8F;&#x6642;&#x7684;&#x6307;&#x5357;&#x3002;</p>
</section>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="10.1" data-chapter-title="簡介" data-filepath="ch10/ch10-01.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="10.1" data-chapter-title="簡介" data-filepath="ch10/ch10-01.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="10.2" data-chapter-title="導入路徑" data-filepath="ch10/ch10-02.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="10.2" data-chapter-title="導入路徑" data-filepath="ch10/ch10-02.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="10.3" data-chapter-title="包聲明" data-filepath="ch10/ch10-03.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="10.3" data-chapter-title="包聲明" data-filepath="ch10/ch10-03.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="10.4" data-chapter-title="導入聲明" data-filepath="ch10/ch10-04.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="10.4" data-chapter-title="導入聲明" data-filepath="ch10/ch10-04.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="10.5" data-chapter-title="匿名導入" data-filepath="ch10/ch10-05.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="10.5" data-chapter-title="匿名導入" data-filepath="ch10/ch10-05.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="10.6" data-chapter-title="包和命名" data-filepath="ch10/ch10-06.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="10.6" data-chapter-title="包和命名" data-filepath="ch10/ch10-06.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="10.7" data-chapter-title="工具" data-filepath="ch10/ch10-07.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="10.7" data-chapter-title="工具" data-filepath="ch10/ch10-07.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="10" data-chapter-title="包和工具" data-filepath="ch10/ch10.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="10" data-chapter-title="包和工具" data-filepath="ch10/ch10.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="11.1" data-chapter-title="go test" data-filepath="ch11/ch11-01.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="11.1" data-chapter-title="go test" data-filepath="ch11/ch11-01.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="11.2" data-chapter-title="測試函數" data-filepath="ch11/ch11-02.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="11.2" data-chapter-title="測試函數" data-filepath="ch11/ch11-02.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="11.3" data-chapter-title="測試覆蓋率" data-filepath="ch11/ch11-03.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="11.3" data-chapter-title="測試覆蓋率" data-filepath="ch11/ch11-03.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="11.4" data-chapter-title="基準測試" data-filepath="ch11/ch11-04.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="11.4" data-chapter-title="基準測試" data-filepath="ch11/ch11-04.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="11.5" data-chapter-title="剖析" data-filepath="ch11/ch11-05.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="11.5" data-chapter-title="剖析" data-filepath="ch11/ch11-05.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="11.6" data-chapter-title="示例函數" data-filepath="ch11/ch11-06.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="11.6" data-chapter-title="示例函數" data-filepath="ch11/ch11-06.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="11" data-chapter-title="測試" data-filepath="ch11/ch11.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="11" data-chapter-title="測試" data-filepath="ch11/ch11.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="12.1" data-chapter-title="爲何需要反射?" data-filepath="ch12/ch12-01.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="12.1" data-chapter-title="爲何需要反射?" data-filepath="ch12/ch12-01.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="12.2" data-chapter-title="reflect.Type和reflect.Value" data-filepath="ch12/ch12-02.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="12.2" data-chapter-title="reflect.Type和reflect.Value" data-filepath="ch12/ch12-02.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="12.3" data-chapter-title="Display遞歸打印" data-filepath="ch12/ch12-03.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="12.3" data-chapter-title="Display遞歸打印" data-filepath="ch12/ch12-03.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="12.4" data-chapter-title="示例: 編碼S表達式" data-filepath="ch12/ch12-04.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="12.4" data-chapter-title="示例: 編碼S表達式" data-filepath="ch12/ch12-04.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="12.5" data-chapter-title="通過reflect.Value脩改值" data-filepath="ch12/ch12-05.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="12.5" data-chapter-title="通過reflect.Value脩改值" data-filepath="ch12/ch12-05.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="12.6" data-chapter-title="示例: 解碼S表達式" data-filepath="ch12/ch12-06.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="12.6" data-chapter-title="示例: 解碼S表達式" data-filepath="ch12/ch12-06.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="12.7" data-chapter-title="穫取結構體字段標識" data-filepath="ch12/ch12-07.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="12.7" data-chapter-title="穫取結構體字段標識" data-filepath="ch12/ch12-07.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="12.8" data-chapter-title="顯示一個類型的方法集" data-filepath="ch12/ch12-08.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="12.8" data-chapter-title="顯示一個類型的方法集" data-filepath="ch12/ch12-08.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="12.9" data-chapter-title="幾點忠告" data-filepath="ch12/ch12-09.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="12.9" data-chapter-title="幾點忠告" data-filepath="ch12/ch12-09.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="12" data-chapter-title="反射" data-filepath="ch12/ch12.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="12" data-chapter-title="反射" data-filepath="ch12/ch12.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="13.1" data-chapter-title="unsafe.Sizeof, Alignof 和 Offsetof" data-filepath="ch13/ch13-01.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="13.1" data-chapter-title="unsafe.Sizeof, Alignof 和 Offsetof" data-filepath="ch13/ch13-01.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>
@@ -2024,15 +2024,13 @@
<section class="normal" id="section-">
<h2 id="131-unsafesizeof-alignof-&#x548C;-offsetof">13.1. unsafe.Sizeof, Alignof &#x548C; Offsetof</h2>
<p><code>unsafe.Sizeof</code> &#x51FD;&#x6578;&#x8FD4;&#x8FF4;&#x64CD;&#x4F5C;&#x6578;&#x5728;&#x5167;&#x5B58;&#x7684;&#x5B57;&#x7BC0;&#x5927;&#x5C0F;, &#x53EF;&#x4EE5;&#x662F;&#x4EFB;&#x610F;&#x985E;&#x578B;&#x7684;&#x8868;&#x9054;&#x5F0F;, &#x4F46;&#x662F;&#x4F75;&#x4E0D;&#x6703;&#x5C0D;&#x8868;&#x9054;&#x5F0F;&#x9032;&#x884C;&#x6C42;&#x503C;. <code>Sizeof</code> &#x662F;&#x4E00;&#x500B; uintptr &#x985E;&#x578B;&#x7684;&#x5E38;&#x91CF;&#x8868;&#x9054;&#x5F0F;, &#x56E0;&#x6B64;&#x8FD4;&#x8FF4;&#x7684;&#x7D50;&#x679C;&#x53EF;&#x4EE5;&#x7528;&#x7740;&#x6578;&#x64DA;&#x7684;&#x5927;&#x5C0F;, &#x6216;&#x8005;&#x7528;&#x4F5C;&#x8A08;&#x7B97;&#x5176;&#x4ED6;&#x7684;&#x5E38;&#x91CF;.</p>
<p>unsafe.Sizeof&#x51FD;&#x6578;&#x8FD4;&#x8FF4;&#x64CD;&#x4F5C;&#x6578;&#x5728;&#x5167;&#x5B58;&#x4E2D;&#x7684;&#x5B57;&#x7BC0;&#x5927;&#x5C0F;&#xFF0C;&#x53C3;&#x6578;&#x53EF;&#x4EE5;&#x662F;&#x4EFB;&#x610F;&#x985E;&#x578B;&#x7684;&#x8868;&#x9054;&#x5F0F;&#xFF0C;&#x4F46;&#x662F;&#x5B83;&#x4F75;&#x4E0D;&#x6703;&#x5C0D;&#x8868;&#x9054;&#x5F0F;&#x9032;&#x884C;&#x6C42;&#x503C;&#x3002;&#x4E00;&#x500B;Sizeof&#x51FD;&#x6578;&#x8ABF;&#x7528;&#x662F;&#x4E00;&#x500B;&#x5C0D;&#x61C9;uintptr&#x985E;&#x578B;&#x7684;&#x5E38;&#x91CF;&#x8868;&#x9054;&#x5F0F;&#xFF0C;&#x56E0;&#x6B64;&#x8FD4;&#x8FF4;&#x7684;&#x7D50;&#x679C;&#x53EF;&#x4EE5;&#x7528;&#x4F5C;&#x6578;&#x7D44;&#x985E;&#x578B;&#x7684;&#x9577;&#x5EA6;&#x5927;&#x5C0F;&#xFF0C;&#x6216;&#x8005;&#x7528;&#x4F5C;&#x8A08;&#x7B97;&#x5176;&#x4ED6;&#x7684;&#x5E38;&#x91CF;&#x3002;</p>
<pre><code class="lang-Go"><span class="hljs-keyword">import</span> <span class="hljs-string">&quot;unsafe&quot;</span>
fmt.Println(unsafe.Sizeof(<span class="hljs-typename">float64</span>(<span class="hljs-number">0</span>))) <span class="hljs-comment">// &quot;8&quot;</span>
</code></pre>
<p><code>Sizeof</code> &#x96BB;&#x8FD4;&#x8FF4;&#x6578;&#x64DA;&#x7D50;&#x69CB;&#x4E2D;&#x56FA;&#x5B9A;&#x7684;&#x90E8;&#x5206;, &#x4F8B;&#x5982;&#x5B57;&#x7B26;&#x4E32;&#x4E2D;&#x6307;&#x91DD;&#x548C;&#x5B57;&#x7B26;&#x4E32;&#x9577;&#x5EA6;&#x90E8;&#x5206;, &#x4F46;&#x662F;&#x4F75;&#x4E0D;&#x5305;&#x542B;&#x5B57;&#x7B26;&#x4E32;&#x7684;&#x5167;&#x5BB9;. Go&#x4E2D;&#x975E;&#x805A;&#x5408;&#x985E;&#x578B;&#x901A;&#x5E38;&#x6709;&#x4E00;&#x500B;&#x56FA;&#x5B9A;&#x7684;&#x5C3A;&#x5BF8;, &#x76E1;&#x7BA1;&#x4E0D;&#x540C;&#x5DE5;&#x5177;&#x93C8;&#x7684;&#x5177;&#x9AD4;&#x5927;&#x5C0F;&#x53EF;&#x80FD;&#x6703;&#x6709;&#x6240;&#x4E0D;&#x540C;. &#x8003;&#x616E;&#x5230;&#x53EF;&#x79FB;&#x690D;&#x6027;, &#x5F15;&#x7528;&#x985E;&#x578B;&#x6216;&#x5305;&#x542B;&#x5F15;&#x7528;&#x985E;&#x578B;&#x7684;&#x5927;&#x5C0F;&#x5728;32&#x4F4D;&#x5E73;&#x98B1;&#x4E0A;&#x662F;4&#x500B;&#x5B57;&#x7BC0;, &#x5728;64&#x4F4D;&#x5E73;&#x98B1;&#x4E0A;&#x662F;8&#x500B;&#x5B57;&#x7BC0;.</p>
<p>&#x8A08;&#x7B97;&#x6A5F;&#x52A0;&#x8F09;&#x548C;&#x4FDD;&#x5B58;&#x6578;&#x64DA;&#x6642;, &#x5982;&#x679C;&#x5167;&#x5B58;&#x5730;&#x5740;&#x5408;&#x7406;&#x5730;&#x5C0D;&#x9F4A;&#x7684;&#x5C07;&#x6703;&#x66F4;&#x6709;&#x6548;&#x7387;.
&#x4F8B;&#x5982; 2 &#x5B57;&#x7BC0;&#x5927;&#x5C0F;&#x7684; int16 &#x985E;&#x578B;&#x61C9;&#x8A72;&#x662F;&#x5076;&#x6578;, &#x4E00;&#x500B;4 &#x5B57;&#x7BC0;&#x5927;&#x5C0F;&#x7684; rune &#x985E;&#x578B;&#x5730;&#x5740;&#x61C9;&#x8A72;&#x662F; 4 &#x7684;&#x500D;&#x6578;, &#x4E00;&#x500B; 8 &#x5B57;&#x7BC0;&#x5927;&#x5C0F;&#x7684; float64, uint64 &#x6216; 64-bit &#x6307;&#x91DD; &#x7684;&#x5730;&#x5740;&#x61C9;&#x8A72;&#x662F; 8 &#x5B57;&#x7BC0;&#x5C0D;&#x9F4A;&#x7684;. &#x4F46;&#x662F;&#x5C0D;&#x65BC;&#x518D;&#x5927;&#x7684;&#x5730;&#x5740;&#x5C0D;&#x9F4A;&#x500D;&#x6578;&#x5247;&#x662F;&#x4E0D;&#x9700;&#x8981;&#x7684;,
&#x537D;&#x4F7F;&#x662F; complex128 &#x7B49;&#x8F03;&#x5927;&#x7684;&#x6578;&#x64DA;&#x985E;&#x578B;.</p>
<p>&#x7531;&#x65BC;&#x9019;&#x500B;&#x56E0;&#x7D20;,&#x4E00;&#x500B;&#x805A;&#x5408;&#x985E;&#x578B;(&#x7D50;&#x69CB;&#x9AD4;&#x6216;&#x6578;&#x7D44;)&#x7684;&#x5927;&#x5C0F;&#x81F3;&#x5C11;&#x662F;&#x6240;&#x6709;&#x5B57;&#x6BB5;&#x6216;&#x5143;&#x7D20;&#x5927;&#x5C0F;&#x7684;&#x7E3D;&#x548C;, &#x6216;&#x8005;&#x66F4;&#x5927;&#x56E0;&#x7232;&#x53EF;&#x80FD;&#x5B58;&#x5728;&#x7A7A;&#x6D1E;. &#x7A7A;&#x6D1E;&#x662F;&#x7DE8;&#x8B6F;&#x5668;&#x81EA;&#x52D5;&#x6DFB;&#x52A0;&#x7684;&#x6C92;&#x6709;&#x88AB;&#x4F7F;&#x7528;&#x7684;&#x7A7A;&#x9593;, &#x7528;&#x65BC;&#x4FDD;&#x8B49;&#x5F8C;&#x9762;&#x6BCF;&#x500B;&#x5B57;&#x6BB5;&#x6216;&#x5143;&#x7D20;&#x7684;&#x5730;&#x5740;&#x76F8;&#x5C0D;&#x65BC;&#x7D50;&#x69CB;&#x6216;&#x6578;&#x7D44;&#x7684;&#x958B;&#x59CB;&#x5730;&#x5740;&#x80FD;&#x5920;&#x5408;&#x7406;&#x5730;&#x5C0D;&#x9F4A;.</p>
<p>Sizeof&#x51FD;&#x6578;&#x8FD4;&#x8FF4;&#x7684;&#x5927;&#x5C0F;&#x96BB;&#x5305;&#x62EC;&#x6578;&#x64DA;&#x7D50;&#x69CB;&#x4E2D;&#x56FA;&#x5B9A;&#x7684;&#x90E8;&#x5206;&#xFF0C;&#x4F8B;&#x5982;&#x5B57;&#x7B26;&#x4E32;&#x5C0D;&#x61C9;&#x7D50;&#x69CB;&#x9AD4;&#x4E2D;&#x7684;&#x6307;&#x91DD;&#x548C;&#x5B57;&#x7B26;&#x4E32;&#x9577;&#x5EA6;&#x90E8;&#x5206;&#xFF0C;&#x4F46;&#x662F;&#x4F75;&#x4E0D;&#x5305;&#x542B;&#x6307;&#x91DD;&#x6307;&#x5411;&#x7684;&#x5B57;&#x7B26;&#x4E32;&#x7684;&#x5167;&#x5BB9;&#x3002;Go&#x8A9E;&#x8A00;&#x4E2D;&#x975E;&#x805A;&#x5408;&#x985E;&#x578B;&#x901A;&#x5E38;&#x6709;&#x4E00;&#x500B;&#x56FA;&#x5B9A;&#x7684;&#x5927;&#x5C0F;&#xFF0C;&#x76E1;&#x7BA1;&#x5728;&#x4E0D;&#x540C;&#x5DE5;&#x5177;&#x93C8;&#x4E0B;&#x751F;&#x6210;&#x7684;&#x5BE6;&#x969B;&#x5927;&#x5C0F;&#x53EF;&#x80FD;&#x6703;&#x6709;&#x6240;&#x4E0D;&#x540C;&#x3002;&#x8003;&#x616E;&#x5230;&#x53EF;&#x79FB;&#x690D;&#x6027;&#xFF0C;&#x5F15;&#x7528;&#x985E;&#x578B;&#x6216;&#x5305;&#x542B;&#x5F15;&#x7528;&#x985E;&#x578B;&#x7684;&#x5927;&#x5C0F;&#x5728;32&#x4F4D;&#x5E73;&#x98B1;&#x4E0A;&#x662F;4&#x500B;&#x5B57;&#x7BC0;&#xFF0C;&#x5728;64&#x4F4D;&#x5E73;&#x98B1;&#x4E0A;&#x662F;8&#x500B;&#x5B57;&#x7BC0;&#x3002;</p>
<p>&#x8A08;&#x7B97;&#x6A5F;&#x5728;&#x52A0;&#x8F09;&#x548C;&#x4FDD;&#x5B58;&#x6578;&#x64DA;&#x6642;&#xFF0C;&#x5982;&#x679C;&#x5167;&#x5B58;&#x5730;&#x5740;&#x5408;&#x7406;&#x5730;&#x5C0D;&#x9F4A;&#x7684;&#x5C07;&#x6703;&#x66F4;&#x6709;&#x6548;&#x7387;&#x3002;&#x4F8B;&#x5982;2&#x5B57;&#x7BC0;&#x5927;&#x5C0F;&#x7684;int16&#x985E;&#x578B;&#x7684;&#x8B8A;&#x91CF;&#x5730;&#x5740;&#x61C9;&#x8A72;&#x662F;&#x5076;&#x6578;&#xFF0C;&#x4E00;&#x500B;4&#x5B57;&#x7BC0;&#x5927;&#x5C0F;&#x7684;rune&#x985E;&#x578B;&#x8B8A;&#x91CF;&#x7684;&#x5730;&#x5740;&#x61C9;&#x8A72;&#x662F;4&#x7684;&#x500D;&#x6578;&#xFF0C;&#x4E00;&#x500B;8&#x5B57;&#x7BC0;&#x5927;&#x5C0F;&#x7684;float64&#x3001;uint64&#x6216;64-bit&#x6307;&#x91DD;&#x985E;&#x578B;&#x8B8A;&#x91CF;&#x7684;&#x5730;&#x5740;&#x61C9;&#x8A72;&#x662F;8&#x5B57;&#x7BC0;&#x5C0D;&#x9F4A;&#x7684;&#x3002;&#x4F46;&#x662F;&#x5C0D;&#x65BC;&#x518D;&#x5927;&#x7684;&#x5730;&#x5740;&#x5C0D;&#x9F4A;&#x500D;&#x6578;&#x5247;&#x662F;&#x4E0D;&#x9700;&#x8981;&#x7684;&#xFF0C;&#x537D;&#x4F7F;&#x662F;complex128&#x7B49;&#x8F03;&#x5927;&#x7684;&#x6578;&#x64DA;&#x985E;&#x578B;&#x6700;&#x591A;&#x4E5F;&#x96BB;&#x662F;8&#x5B57;&#x7BC0;&#x5C0D;&#x9F4A;&#x3002;</p>
<p>&#x7531;&#x65BC;&#x5730;&#x5740;&#x5C0D;&#x9F4A;&#x9019;&#x500B;&#x56E0;&#x7D20;&#xFF0C;&#x4E00;&#x500B;&#x805A;&#x5408;&#x985E;&#x578B;&#xFF08;&#x7D50;&#x69CB;&#x9AD4;&#x6216;&#x6578;&#x7D44;&#xFF09;&#x7684;&#x5927;&#x5C0F;&#x81F3;&#x5C11;&#x662F;&#x6240;&#x6709;&#x5B57;&#x6BB5;&#x6216;&#x5143;&#x7D20;&#x5927;&#x5C0F;&#x7684;&#x7E3D;&#x548C;&#xFF0C;&#x6216;&#x8005;&#x66F4;&#x5927;&#x56E0;&#x7232;&#x53EF;&#x80FD;&#x5B58;&#x5728;&#x5167;&#x5B58;&#x7A7A;&#x6D1E;&#x3002;&#x5167;&#x5B58;&#x7A7A;&#x6D1E;&#x662F;&#x7DE8;&#x8B6F;&#x5668;&#x81EA;&#x52D5;&#x6DFB;&#x52A0;&#x7684;&#x6C92;&#x6709;&#x88AB;&#x4F7F;&#x7528;&#x7684;&#x5167;&#x5B58;&#x7A7A;&#x9593;&#xFF0C;&#x7528;&#x65BC;&#x4FDD;&#x8B49;&#x5F8C;&#x9762;&#x6BCF;&#x500B;&#x5B57;&#x6BB5;&#x6216;&#x5143;&#x7D20;&#x7684;&#x5730;&#x5740;&#x76F8;&#x5C0D;&#x65BC;&#x7D50;&#x69CB;&#x6216;&#x6578;&#x7D44;&#x7684;&#x958B;&#x59CB;&#x5730;&#x5740;&#x80FD;&#x5920;&#x5408;&#x7406;&#x5730;&#x5C0D;&#x9F4A;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;&#x5167;&#x5B58;&#x7A7A;&#x6D1E;&#x53EF;&#x80FD;&#x6703;&#x5B58;&#x5728;&#x4E00;&#x4E9B;&#x96A8;&#x6A5F;&#x6578;&#x64DA;&#xFF0C;&#x53EF;&#x80FD;&#x6703;&#x5C0D;&#x7528;unsafe&#x5305;&#x76F4;&#x63A5;&#x64CD;&#x4F5C;&#x5167;&#x5B58;&#x7684;&#x8655;&#x7406;&#x7523;&#x751F;&#x5F71;&#x97FF;&#xFF09;&#x3002;</p>
<table>
<thead>
<tr>
@@ -2043,11 +2041,11 @@ fmt.Println(unsafe.Sizeof(<span class="hljs-typename">float64</span>(<span class
<tbody>
<tr>
<td>bool</td>
<td>1&#x5B57;&#x7BC0;</td>
<td>1&#x500B;&#x5B57;&#x7BC0;</td>
</tr>
<tr>
<td>intN, uintN, floatN, complexN</td>
<td>N/8&#x5B57;&#x7BC0; (&#x4F8B;&#x5982; float64 &#x662F; 8&#x5B57;&#x7BC0;)</td>
<td>N/8&#x500B;&#x5B57;&#x7BC0;(&#x4F8B;&#x5982;float64&#x662F;8&#x500B;&#x5B57;&#x7BC0;)</td>
</tr>
<tr>
<td>int, uint, uintptr</td>
@@ -2063,7 +2061,7 @@ fmt.Println(unsafe.Sizeof(<span class="hljs-typename">float64</span>(<span class
</tr>
<tr>
<td>[]T</td>
<td>3&#x500B;&#x6A5F;&#x5668;&#x5B57;(data,len, cap)</td>
<td>3&#x500B;&#x6A5F;&#x5668;&#x5B57;(data,len,cap)</td>
</tr>
<tr>
<td>map</td>
@@ -2083,13 +2081,13 @@ fmt.Println(unsafe.Sizeof(<span class="hljs-typename">float64</span>(<span class
</tr>
</tbody>
</table>
<p>Go&#x7684;&#x8A9E;&#x8A00;&#x898F;&#x8303;&#x4F75;&#x6C92;&#x6709;&#x4FDD;&#x8B49;&#x4E00;&#x500B;&#x5B57;&#x6BB5;&#x7684;&#x8072;&#x660E;&#x9806;&#x5E8F;&#x548C;&#x5167;&#x5B58;&#x4E2D;&#x7684;&#x9806;&#x5E8F;&#x662F;&#x4E00;&#x81F4;&#x7684;, &#x6240;&#x4EE5;&#x7406;&#x8AD6;&#x4E0A;&#x4E00;&#x500B;&#x7DE8;&#x8B6F;&#x5668;&#x53EF;&#x4EE5;&#x96A8;&#x610F;&#x5730;&#x91CD;&#x65B0;&#x6392;&#x5217;&#x6BCF;&#x500B;&#x5B57;&#x6BB5;&#x7684;&#x5167;&#x5B58;&#x5E03;&#x5C40;, &#x96A8;&#x7740;&#x5728;&#x5BEB;&#x4F5C;&#x672C;&#x66F8;&#x7684;&#x6642;&#x5019;&#x7DE8;&#x8B6F;&#x5668;&#x9084;&#x6C92;&#x6709;&#x9019;&#x9EBD;&#x505A;. &#x4E0B;&#x9762;&#x7684;&#x4E09;&#x500B;&#x7D50;&#x69CB;&#x9AD4;&#x6709;&#x7740;&#x76F8;&#x540C;&#x7684;&#x5B57;&#x6BB5;, &#x4F46;&#x662F;&#x7B2C;&#x4E00;&#x500B;&#x6BD4;&#x53E6;&#x5916;&#x7684;&#x5169;&#x500B;&#x9700;&#x8981;&#x591A; 50% &#x7684;&#x5167;&#x5B58;.</p>
<pre><code class="lang-Go"> <span class="hljs-comment">// 64-bit 32-bit</span>
<p>Go&#x8A9E;&#x8A00;&#x7684;&#x898F;&#x8303;&#x4F75;&#x6C92;&#x6709;&#x8981;&#x6C42;&#x4E00;&#x500B;&#x5B57;&#x6BB5;&#x7684;&#x8072;&#x660E;&#x9806;&#x5E8F;&#x548C;&#x5167;&#x5B58;&#x4E2D;&#x7684;&#x9806;&#x5E8F;&#x662F;&#x4E00;&#x81F4;&#x7684;&#xFF0C;&#x6240;&#x4EE5;&#x7406;&#x8AD6;&#x4E0A;&#x4E00;&#x500B;&#x7DE8;&#x8B6F;&#x5668;&#x53EF;&#x4EE5;&#x96A8;&#x610F;&#x5730;&#x91CD;&#x65B0;&#x6392;&#x5217;&#x6BCF;&#x500B;&#x5B57;&#x6BB5;&#x7684;&#x5167;&#x5B58;&#x4F4D;&#x7F6E;&#xFF0C;&#x96A8;&#x7136;&#x5728;&#x5BEB;&#x4F5C;&#x672C;&#x66F8;&#x7684;&#x6642;&#x5019;&#x7DE8;&#x8B6F;&#x5668;&#x9084;&#x6C92;&#x6709;&#x9019;&#x9EBD;&#x505A;&#x3002;&#x4E0B;&#x9762;&#x7684;&#x4E09;&#x500B;&#x7D50;&#x69CB;&#x9AD4;&#x96D6;&#x7136;&#x6709;&#x7740;&#x76F8;&#x540C;&#x7684;&#x5B57;&#x6BB5;&#xFF0C;&#x4F46;&#x662F;&#x7B2C;&#x4E00;&#x7A2E;&#x5BEB;&#x6CD5;&#x6BD4;&#x53E6;&#x5916;&#x7684;&#x5169;&#x500B;&#x9700;&#x8981;&#x591A;50%&#x7684;&#x5167;&#x5B58;&#x3002;</p>
<pre><code class="lang-Go"> <span class="hljs-comment">// 64-bit 32-bit</span>
<span class="hljs-keyword">struct</span>{ <span class="hljs-typename">bool</span>; <span class="hljs-typename">float64</span>; <span class="hljs-typename">int16</span> } <span class="hljs-comment">// 3 words 4words</span>
<span class="hljs-keyword">struct</span>{ <span class="hljs-typename">float64</span>; <span class="hljs-typename">int16</span>; <span class="hljs-typename">bool</span> } <span class="hljs-comment">// 2 words 3words</span>
<span class="hljs-keyword">struct</span>{ <span class="hljs-typename">bool</span>; <span class="hljs-typename">int16</span>; <span class="hljs-typename">float64</span> } <span class="hljs-comment">// 2 words 3words</span>
</code></pre>
<p>&#x96D6;&#x7136;&#x95DC;&#x65BC;&#x5C0D;&#x9F4A;&#x7B97;&#x6CD5;&#x7684;&#x7D30;&#x7BC0;&#x8D85;&#x9F63;&#x4E86;&#x672C;&#x66F8;&#x7684;&#x8303;&#x570D;, &#x4E5F;&#x4E0D;&#x662F;&#x6BCF;&#x4E00;&#x500B;&#x7D50;&#x69CB;&#x9AD4;&#x90FD;&#x9700;&#x8981;&#x64D4;&#x5FC3;&#x9019;&#x500B;&#x554F;&#x984C;, &#x4E0D;&#x904E;&#x6709;&#x6548;&#x7684;&#x5305;&#x88DD;&#x53EF;&#x4EE5;&#x4F7F;&#x6578;&#x64DA;&#x7D50;&#x69CB;&#x66F4;&#x52A0;&#x7DCA;&#x6E4A;, &#x5167;&#x5B58;&#x4F7F;&#x7528;&#x7387;&#x548C;&#x6027;&#x80FD;&#x90FD;&#x53EF;&#x80FD;&#x53D7;&#x76CA;.</p>
<p>&#x95DC;&#x65BC;&#x5167;&#x5B58;&#x5730;&#x5740;&#x5C0D;&#x9F4A;&#x7B97;&#x6CD5;&#x7684;&#x7D30;&#x7BC0;&#x8D85;&#x9F63;&#x4E86;&#x672C;&#x66F8;&#x7684;&#x8303;&#x570D;&#xFF0C;&#x4E5F;&#x4E0D;&#x662F;&#x6BCF;&#x4E00;&#x500B;&#x7D50;&#x69CB;&#x9AD4;&#x90FD;&#x9700;&#x8981;&#x64D4;&#x5FC3;&#x9019;&#x500B;&#x554F;&#x984C;&#xFF0C;&#x4E0D;&#x904E;&#x6709;&#x6548;&#x7684;&#x5305;&#x88DD;&#x53EF;&#x4EE5;&#x4F7F;&#x6578;&#x64DA;&#x7D50;&#x69CB;&#x66F4;&#x52A0;&#x7DCA;&#x6E4A;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;&#x672A;&#x4F86;&#x7684;Go&#x8A9E;&#x8A00;&#x7DE8;&#x8B6F;&#x5668;&#x61C9;&#x8A72;&#x6703;&#x9ED8;&#x8A8D;&#x512A;&#x5316;&#x7D50;&#x69CB;&#x9AD4;&#x7684;&#x9806;&#x5E8F;&#xFF0C;&#x7576;&#x7136;&#x7528;&#x65BC;&#x61C9;&#x8A72;&#x4E5F;&#x80FD;&#x5920;&#x6307;&#x5B9A;&#x5177;&#x9AD4;&#x7684;&#x5167;&#x5B58;&#x5E03;&#x5C40;&#xFF0C;&#x76F8;&#x540C;&#x8A0E;&#x8AD6;&#x8ACB;&#x53C3;&#x8003; <a href="https://github.com/golang/go/issues/10014" target="_blank">Issue10014</a> &#xFF09;&#xFF0C;&#x5167;&#x5B58;&#x4F7F;&#x7528;&#x7387;&#x548C;&#x6027;&#x80FD;&#x90FD;&#x53EF;&#x80FD;&#x6703;&#x53D7;&#x76CA;&#x3002;</p>
<p><code>unsafe.Alignof</code> &#x51FD;&#x6578;&#x8FD4;&#x8FF4;&#x5C0D;&#x61C9;&#x53C3;&#x6578;&#x7684;&#x985E;&#x578B;&#x9700;&#x8981;&#x5C0D;&#x9F4A;&#x7684;&#x500D;&#x6578;. &#x548C; Sizeof &#x985E;&#x4F3C;, Alignof &#x4E5F;&#x662F;&#x8FD4;&#x8FF4;&#x4E00;&#x500B;&#x5E38;&#x91CF;&#x8868;&#x9054;&#x5F0F;, &#x5C0D;&#x61C9;&#x4E00;&#x500B;&#x5E38;&#x91CF;. &#x901A;&#x5E38;&#x60C5;&#x6CC1;&#x4E0B;&#x5E03;&#x723E;&#x548C;&#x6578;&#x5B57;&#x985E;&#x578B;&#x9700;&#x8981;&#x5C0D;&#x9F4A;&#x5230;&#x5B83;&#x5011;&#x672C;&#x8EAB;&#x7684;&#x5927;&#x5C0F;(&#x6700;&#x591A;8&#x500B;&#x5B57;&#x7BC0;), &#x5176;&#x5B83;&#x7684;&#x985E;&#x578B;&#x5C0D;&#x9F4A;&#x5230;&#x6A5F;&#x5668;&#x5B57;&#x5927;&#x5C0F;.</p>
<p><code>unsafe.Offsetof</code> &#x51FD;&#x6578;&#x7684;&#x53C3;&#x6578;&#x5FC5;&#x9B1A;&#x662F;&#x4E00;&#x500B;&#x5B57;&#x6BB5; <code>x.f</code>, &#x7136;&#x5F8C;&#x8FD4;&#x8FF4; <code>f</code> &#x5B57;&#x6BB5;&#x76F8;&#x5C0D;&#x65BC; <code>x</code> &#x8D77;&#x59CB;&#x5730;&#x5740;&#x7684;&#x504F;&#x79FB;&#x91CF;, &#x5305;&#x62EC;&#x53EF;&#x80FD;&#x7684;&#x7A7A;&#x6D1E;.</p>
<p>&#x5716; 13.1 &#x986F;&#x793A;&#x4E86;&#x4E00;&#x500B;&#x7D50;&#x69CB;&#x9AD4;&#x8B8A;&#x91CF; x &#x4EE5;&#x53CA;&#x5176;&#x5728;32&#x4F4D;&#x548C;64&#x4F4D;&#x6A5F;&#x5668;&#x4E0A;&#x7684;&#x5178;&#x578B;&#x7684;&#x5167;&#x5B58;. &#x7070;&#x8272;&#x5340;&#x57DF;&#x662F;&#x7A7A;&#x6D1E;.</p>
@@ -2099,21 +2097,19 @@ fmt.Println(unsafe.Sizeof(<span class="hljs-typename">float64</span>(<span class
c []<span class="hljs-typename">int</span>
}
</code></pre>
<p>The table below shows the results of applying the three unsafe functions to x itself and to each of its three &#xFB01;elds:</p>
<p>&#x4E0B;&#x9762;&#x986F;&#x793A;&#x4E86;&#x61C9;&#x7528;&#x4E09;&#x500B;&#x51FD;&#x6578;&#x5C0D; x &#x548C;&#x5B83;&#x7684;&#x4E09;&#x500B;&#x5B57;&#x6BB5;&#x8A08;&#x7B97;&#x7684;&#x7D50;&#x679C;:</p>
<p>&#x4E0B;&#x9762;&#x986F;&#x793A;&#x4E86;&#x5C0D;x&#x548C;&#x5B83;&#x7684;&#x4E09;&#x500B;&#x5B57;&#x6BB5;&#x8ABF;&#x7528;unsafe&#x5305;&#x76F8;&#x95DC;&#x51FD;&#x6578;&#x7684;&#x8A08;&#x7B97;&#x7D50;&#x679C;&#xFF1A;</p>
<p><img src="../images/ch13-01.png" alt=""></p>
<p>32&#x4F4D;&#x7E6B;&#x7D71;:</p>
<p>32&#x4F4D;&#x7E6B;&#x7D71;&#xFF1A;</p>
<pre><code>Sizeof(x) = 16 Alignof(x) = 4
Sizeof(x.a) = 1 Alignof(x.a) = 1 Offsetof(x.a) = 0
Sizeof(x.b) = 2 Alignof(x.b) = 2 Offsetof(x.b) = 2
Sizeof(x.c) = 12 Alignof(x.c) = 4 Offsetof(x.c) = 4
</code></pre><p>64&#x4F4D;&#x7E6B;&#x7D71;:</p>
</code></pre><p>64&#x4F4D;&#x7E6B;&#x7D71;&#xFF1A;</p>
<pre><code>Sizeof(x) = 32 Alignof(x) = 8
Sizeof(x.a) = 1 Alignof(x.a) = 1 Offsetof(x.a) = 0
Sizeof(x.b) = 2 Alignof(x.b) = 2 Offsetof(x.b) = 2
Sizeof(x.c) = 24 Alignof(x.c) = 8 Offsetof(x.c) = 8
</code></pre><p>&#x96D6;&#x7136;&#x5B83;&#x5011;&#x5728;&#x4E0D;&#x5B89;&#x5168;&#x7684; unsafe &#x5305;, &#x4F46;&#x662F;&#x9019;&#x5E7E;&#x500B;&#x51FD;&#x6578;&#x4F75;&#x4E0D;&#x662F;&#x771E;&#x7684;&#x4E0D;&#x5B89;&#x5168;,
&#x7279;&#x522B;&#x5728;&#x9700;&#x8981;&#x512A;&#x5316;&#x5167;&#x5B58;&#x7A7A;&#x9593;&#x6642;&#x5B83;&#x5011;&#x5C0D;&#x65BC;&#x7406;&#x89E3;&#x539F;&#x751F;&#x7684;&#x5167;&#x5B58;&#x5E03;&#x5C40;&#x5F88;&#x6709;&#x5E6B;&#x52A9;.</p>
</code></pre><p>&#x96D6;&#x7136;&#x9019;&#x5E7E;&#x500B;&#x51FD;&#x6578;&#x5728;&#x4E0D;&#x5B89;&#x5168;&#x7684;unsafe&#x5305;&#xFF0C;&#x4F46;&#x662F;&#x9019;&#x5E7E;&#x500B;&#x51FD;&#x6578;&#x8ABF;&#x7528;&#x4F75;&#x4E0D;&#x662F;&#x771E;&#x7684;&#x4E0D;&#x5B89;&#x5168;&#xFF0C;&#x7279;&#x522B;&#x5728;&#x9700;&#x8981;&#x512A;&#x5316;&#x5167;&#x5B58;&#x7A7A;&#x9593;&#x6642;&#x5B83;&#x5011;&#x8FD4;&#x8FF4;&#x7684;&#x7D50;&#x679C;&#x5C0D;&#x65BC;&#x7406;&#x89E3;&#x539F;&#x751F;&#x7684;&#x5167;&#x5B58;&#x5E03;&#x5C40;&#x5F88;&#x6709;&#x5E6B;&#x52A9;&#x3002;</p>
</section>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="13.2" data-chapter-title="unsafe.Pointer" data-filepath="ch13/ch13-02.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="13.2" data-chapter-title="unsafe.Pointer" data-filepath="ch13/ch13-02.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>
@@ -2024,19 +2024,17 @@
<section class="normal" id="section-">
<h2 id="132-unsafepointer">13.2. unsafe.Pointer</h2>
<p>&#x5927;&#x591A;&#x6578;&#x6307;&#x91DD;&#x985E;&#x578B;&#x5BEB;&#x6210; <em>T, &#x542B;&#x7FA9;&#x662F; &quot;&#x4E00;&#x500B;&#x6307;&#x5411;T&#x985E;&#x578B;&#x8B8A;&#x91CF;&#x7684;&#x6307;&#x91DD;&quot;. <code>unsafe.Pointer</code> &#x662F;&#x7279;&#x522B;&#x5B9A;&#x7FA9;&#x7684;&#x4E00;&#x7A2E;&#x6307;&#x91DD;&#x985E;&#x578B;, &#x5B83;&#x53EF;&#x4EE5;&#x5305;&#x542B;&#x4EFB;&#x610F;&#x985E;&#x578B;&#x8B8A;&#x91CF;&#x7684;&#x5730;&#x5740;. &#x7576;&#x7136;, &#x6211;&#x5011;&#x4E0D;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x4F7F;&#x7528; </em>p &#x7A6B;&#x53D6; <code>unsafe.Pointer</code> &#x6307;&#x91DD;&#x6307;&#x5411;&#x7684;&#x771E;&#x5BE6;&#x8B8A;&#x91CF;, &#x56E0;&#x7232;&#x6211;&#x5011;&#x4F75;&#x4E0D;&#x77E5;&#x9053;&#x8B8A;&#x91CF;&#x7684;&#x985E;&#x578B;. &#x548C;&#x666E;&#x901A;&#x6307;&#x91DD;&#x4E00;&#x6A23;, <code>unsafe.Pointer</code> &#x6307;&#x91DD;&#x662F;&#x53EF;&#x4EE5;&#x6BD4;&#x8F03;&#x7684;, &#x652F;&#x6301;&#x548C; nil &#x6BD4;&#x8F03;&#x5224;&#x65B7;&#x662F;&#x5426;&#x7232;&#x7A7A;&#x6307;&#x91DD;.</p>
<p>&#x4E00;&#x500B;&#x666E;&#x901A;&#x7684; <em>T &#x985E;&#x578B;&#x6307;&#x91DD;&#x53EF;&#x4EE5;&#x88AB;&#x8F49;&#x5316;&#x7232; <code>unsafe.Pointer</code> &#x985E;&#x578B;&#x6307;&#x91DD;, &#x4F75;&#x4E14;&#x4E00;&#x500B; <code>unsafe.Pointer</code> &#x985E;&#x578B;&#x6307;&#x91DD;&#x4E5F;&#x53EF;&#x4EE5;&#x88AB;&#x8F49;&#x8FF4;&#x666E;&#x901A;&#x6307;&#x91DD;, &#x4E5F;&#x53EF;&#x4EE5;&#x662F;&#x548C; </em>T &#x4E0D;&#x540C;&#x985E;&#x578B;&#x7684;&#x6307;&#x91DD;. &#x901A;&#x904E;&#x5C07; <code>*float64</code> &#x985E;&#x578B;&#x6307;&#x91DD; &#x8F49;&#x5316;&#x7232; <code>*uint64</code> &#x985E;&#x578B;&#x6307;&#x91DD;, &#x6211;&#x5011;&#x53EF;&#x4EE5;&#x6AA2;&#x67FB;&#x4E00;&#x500B;&#x6D6E;&#x9EDE;&#x6578;&#x8B8A;&#x91CF;&#x7684;&#x4F4D;&#x6A21;&#x5F0F;.</p>
<p>&#x5927;&#x591A;&#x6578;&#x6307;&#x91DD;&#x985E;&#x578B;&#x6703;&#x5BEB;&#x6210;<code>*T</code>&#xFF0C;&#x8868;&#x793A;&#x662F;&#x201C;&#x4E00;&#x500B;&#x6307;&#x5411;T&#x985E;&#x578B;&#x8B8A;&#x91CF;&#x7684;&#x6307;&#x91DD;&#x201D;&#x3002;unsafe.Pointer&#x662F;&#x7279;&#x522B;&#x5B9A;&#x7FA9;&#x7684;&#x4E00;&#x7A2E;&#x6307;&#x91DD;&#x985E;&#x578B;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;&#x985E;&#x4F3C;C&#x8A9E;&#x8A00;&#x4E2D;&#x7684;<code>void*</code>&#x985E;&#x578B;&#x7684;&#x6307;&#x91DD;&#xFF09;&#xFF0C;&#x5B83;&#x53EF;&#x4EE5;&#x5305;&#x542B;&#x4EFB;&#x610F;&#x985E;&#x578B;&#x8B8A;&#x91CF;&#x7684;&#x5730;&#x5740;&#x3002;&#x7576;&#x7136;&#xFF0C;&#x6211;&#x5011;&#x4E0D;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x901A;&#x904E;<code>*p</code>&#x4F86;&#x7A6B;&#x53D6;unsafe.Pointer&#x6307;&#x91DD;&#x6307;&#x5411;&#x7684;&#x771E;&#x5BE6;&#x8B8A;&#x91CF;&#x7684;&#x503C;&#xFF0C;&#x56E0;&#x7232;&#x6211;&#x5011;&#x4F75;&#x4E0D;&#x77E5;&#x9053;&#x8B8A;&#x91CF;&#x7684;&#x5177;&#x9AD4;&#x985E;&#x578B;&#x3002;&#x548C;&#x666E;&#x901A;&#x6307;&#x91DD;&#x4E00;&#x6A23;&#xFF0C;unsafe.Pointer&#x6307;&#x91DD;&#x4E5F;&#x662F;&#x53EF;&#x4EE5;&#x6BD4;&#x8F03;&#x7684;&#xFF0C;&#x4F75;&#x4E14;&#x652F;&#x6301;&#x548C;nil&#x5E38;&#x91CF;&#x6BD4;&#x8F03;&#x5224;&#x65B7;&#x662F;&#x5426;&#x7232;&#x7A7A;&#x6307;&#x91DD;&#x3002;</p>
<p>&#x4E00;&#x500B;&#x666E;&#x901A;&#x7684;<code>*T</code>&#x985E;&#x578B;&#x6307;&#x91DD;&#x53EF;&#x4EE5;&#x88AB;&#x8F49;&#x5316;&#x7232;unsafe.Pointer&#x985E;&#x578B;&#x6307;&#x91DD;&#xFF0C;&#x4F75;&#x4E14;&#x4E00;&#x500B;unsafe.Pointer&#x985E;&#x578B;&#x6307;&#x91DD;&#x4E5F;&#x53EF;&#x4EE5;&#x88AB;&#x8F49;&#x8FF4;&#x666E;&#x901A;&#x7684;&#x6307;&#x91DD;&#xFF0C;&#x88AB;&#x8F49;&#x8FF4;&#x666E;&#x901A;&#x7684;&#x6307;&#x91DD;&#x985E;&#x578B;&#x4F75;&#x4E0D;&#x9700;&#x8981;&#x548C;&#x539F;&#x59CB;&#x7684;<code>*T</code>&#x985E;&#x578B;&#x76F8;&#x540C;&#x3002;&#x901A;&#x904E;&#x5C07;<code>*float64</code>&#x985E;&#x578B;&#x6307;&#x91DD;&#x8F49;&#x5316;&#x7232;<code>*uint64</code>&#x985E;&#x578B;&#x6307;&#x91DD;&#xFF0C;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x67FB;&#x770B;&#x4E00;&#x500B;&#x6D6E;&#x9EDE;&#x6578;&#x8B8A;&#x91CF;&#x7684;&#x4F4D;&#x6A21;&#x5F0F;&#x3002;</p>
<pre><code class="lang-Go"><span class="hljs-keyword">package</span> math
<span class="hljs-keyword">func</span> Float64bits(f <span class="hljs-typename">float64</span>) <span class="hljs-typename">uint64</span> { <span class="hljs-keyword">return</span> *(*<span class="hljs-typename">uint64</span>)(unsafe.Pointer(&amp;f)) }
fmt.Printf(<span class="hljs-string">&quot;%#016x\n&quot;</span>, Float64bits(<span class="hljs-number">1.0</span>)) <span class="hljs-comment">// &quot;0x3ff0000000000000&quot;</span>
</code></pre>
<p>&#x901A;&#x904E;&#x65B0;&#x6307;&#x91DD;, &#x6211;&#x5011;&#x53EF;&#x4EE5;&#x66F4;&#x65B0;&#x6D6E;&#x9EDE;&#x6578;&#x7684;&#x4F4D;&#x6A21;&#x5F0F;. &#x901A;&#x904E;&#x4F4D;&#x6A21;&#x5F0F;&#x64CD;&#x4F5C;&#x6D6E;&#x9EDE;&#x6578;&#x662F;&#x53EF;&#x4EE5;&#x7684;, &#x4F46;&#x662F;&#x66F4;&#x91CD;&#x8981;&#x7684;&#x610F;&#x7FA9;&#x662F;&#x6307;&#x91DD;&#x8F49;&#x63DB;&#x8B93;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x5728;&#x4E0D;&#x7834;&#x58DE;&#x985E;&#x578B;&#x7E6B;&#x7D71;&#x7684;&#x524D;&#x63D0;&#x4E0B;&#x5411;&#x5167;&#x5B58;&#x5BEB;&#x5165;&#x4EFB;&#x610F;&#x7684;&#x503C;.</p>
<p>&#x4E00;&#x500B; <code>unsafe.Pointer</code> &#x6307;&#x91DD;&#x4E5F;&#x53EF;&#x4EE5;&#x88AB;&#x8F49;&#x5316;&#x7232; uintptr &#x985E;&#x4F3C;, &#x7136;&#x5F8C;&#x4FDD;&#x5B58;&#x5230;&#x6307;&#x91DD;&#x578B;&#x6578;&#x503C;&#x8B8A;&#x91CF;&#x4E2D;, &#x7528;&#x4EE5;&#x505A;&#x5FC5;&#x8981;&#x7684;&#x6307;&#x91DD;&#x904B;&#x7B97;.
(&#x7B2C;&#x4E09;&#x7AE0;&#x5167;&#x5BB9;, uintptr&#x662F;&#x4E00;&#x500B;&#x7121;&#x7B26;&#x865F;&#x7684;&#x6574;&#x578B;&#x6578;, &#x8DB3;&#x6709;&#x4FDD;&#x5B58;&#x4E00;&#x500B;&#x5730;&#x5740;.)
&#x9019;&#x7A2E;&#x8F49;&#x63DB;&#x4E5F;&#x662F;&#x53EF;&#x9006;&#x7684;, &#x4F46;&#x662F;, &#x5C07; uintptr &#x8F49;&#x7232; <code>unsafe.Pointer</code> &#x6307;&#x91DD;&#x53EF;&#x80FD;&#x7834;&#x58DE;&#x985E;&#x578B;&#x7E6B;&#x7D71;, &#x56E0;&#x7232;&#x4F75;&#x4E0D;&#x662F;&#x6240;&#x6709;&#x7684;&#x6578;&#x5B57;&#x90FD;&#x662F;&#x6709;&#x6548;&#x7684;&#x5167;&#x5B58;&#x5730;&#x5740;.</p>
<p>&#x8A31;&#x591A;&#x5C07; <code>unsafe.Pointer</code> &#x6307;&#x91DD; &#x8F49;&#x7232;&#x539F;&#x751F;&#x6578;&#x5B57;, &#x7136;&#x5F8C;&#x518D;&#x8F49;&#x7232; <code>unsafe.Pointer</code> &#x6307;&#x91DD;&#x7684;&#x64CD;&#x4F5C;&#x662F;&#x4E0D;&#x5B89;&#x5168;&#x7684;. &#x4E0B;&#x9762;&#x7684;&#x4F8B;&#x5B50;&#x9700;&#x8981;&#x5C07;&#x8B8A;&#x91CF; x &#x7684;&#x5730;&#x5740;&#x52A0;&#x4E0A; b &#x5B57;&#x6BB5;&#x7684;&#x504F;&#x79FB;&#x8F49;&#x5316;&#x7232; *int16 &#x985E;&#x578B;&#x6307;&#x91DD;, &#x7136;&#x5F8C;&#x901A;&#x904E;&#x8A72;&#x6307;&#x91DD;&#x66F4;&#x65B0; <code>x.b</code>:</p>
<p>&#x901A;&#x904E;&#x8F49;&#x7232;&#x65B0;&#x985E;&#x578B;&#x6307;&#x91DD;&#xFF0C;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x66F4;&#x65B0;&#x6D6E;&#x9EDE;&#x6578;&#x7684;&#x4F4D;&#x6A21;&#x5F0F;&#x3002;&#x901A;&#x904E;&#x4F4D;&#x6A21;&#x5F0F;&#x64CD;&#x4F5C;&#x6D6E;&#x9EDE;&#x6578;&#x662F;&#x53EF;&#x4EE5;&#x7684;&#xFF0C;&#x4F46;&#x662F;&#x66F4;&#x91CD;&#x8981;&#x7684;&#x610F;&#x7FA9;&#x662F;&#x6307;&#x91DD;&#x8F49;&#x63DB;&#x8A9E;&#x6CD5;&#x8B93;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x5728;&#x4E0D;&#x7834;&#x58DE;&#x985E;&#x578B;&#x7E6B;&#x7D71;&#x7684;&#x524D;&#x63D0;&#x4E0B;&#x5411;&#x5167;&#x5B58;&#x5BEB;&#x5165;&#x4EFB;&#x610F;&#x7684;&#x503C;&#x3002;</p>
<p>&#x4E00;&#x500B;unsafe.Pointer&#x6307;&#x91DD;&#x4E5F;&#x53EF;&#x4EE5;&#x88AB;&#x8F49;&#x5316;&#x7232;uintptr&#x985E;&#x578B;&#xFF0C;&#x7136;&#x5F8C;&#x4FDD;&#x5B58;&#x5230;&#x6307;&#x91DD;&#x578B;&#x6578;&#x503C;&#x8B8A;&#x91CF;&#x4E2D;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;&#x9019;&#x96BB;&#x662F;&#x548C;&#x7576;&#x524D;&#x6307;&#x91DD;&#x76F8;&#x540C;&#x7684;&#x4E00;&#x500B;&#x6578;&#x5B57;&#x503C;&#xFF0C;&#x4F75;&#x4E0D;&#x662F;&#x4E00;&#x500B;&#x6307;&#x91DD;&#xFF09;&#xFF0C;&#x7136;&#x5F8C;&#x7528;&#x4EE5;&#x505A;&#x5FC5;&#x8981;&#x7684;&#x6307;&#x91DD;&#x6578;&#x503C;&#x904B;&#x7B97;&#x3002;&#xFF08;&#x7B2C;&#x4E09;&#x7AE0;&#x5167;&#x5BB9;&#xFF0C;uintptr&#x662F;&#x4E00;&#x500B;&#x7121;&#x7B26;&#x865F;&#x7684;&#x6574;&#x578B;&#x6578;&#xFF0C;&#x8DB3;&#x4EE5;&#x4FDD;&#x5B58;&#x4E00;&#x500B;&#x5730;&#x5740;&#xFF09;&#x9019;&#x7A2E;&#x8F49;&#x63DB;&#x96D6;&#x7136;&#x4E5F;&#x662F;&#x53EF;&#x9006;&#x7684;&#xFF0C;&#x4F46;&#x662F;&#x5C07;uintptr&#x8F49;&#x7232;unsafe.Pointer&#x6307;&#x91DD;&#x53EF;&#x80FD;&#x6703;&#x7834;&#x58DE;&#x985E;&#x578B;&#x7E6B;&#x7D71;&#xFF0C;&#x56E0;&#x7232;&#x4F75;&#x4E0D;&#x662F;&#x6240;&#x6709;&#x7684;&#x6578;&#x5B57;&#x90FD;&#x662F;&#x6709;&#x6548;&#x7684;&#x5167;&#x5B58;&#x5730;&#x5740;&#x3002;</p>
<p>&#x8A31;&#x591A;&#x5C07;unsafe.Pointer&#x6307;&#x91DD;&#x8F49;&#x7232;&#x539F;&#x751F;&#x6578;&#x5B57;&#xFF0C;&#x7136;&#x5F8C;&#x518D;&#x8F49;&#x8FF4;&#x7232;unsafe.Pointer&#x985E;&#x578B;&#x6307;&#x91DD;&#x7684;&#x64CD;&#x4F5C;&#x4E5F;&#x662F;&#x4E0D;&#x5B89;&#x5168;&#x7684;&#x3002;&#x6BD4;&#x5982;&#x4E0B;&#x9762;&#x7684;&#x4F8B;&#x5B50;&#x9700;&#x8981;&#x5C07;&#x8B8A;&#x91CF;x&#x7684;&#x5730;&#x5740;&#x52A0;&#x4E0A;b&#x5B57;&#x6BB5;&#x5730;&#x5740;&#x504F;&#x79FB;&#x91CF;&#x8F49;&#x5316;&#x7232;<code>*int16</code>&#x985E;&#x578B;&#x6307;&#x91DD;&#xFF0C;&#x7136;&#x5F8C;&#x901A;&#x904E;&#x8A72;&#x6307;&#x91DD;&#x66F4;&#x65B0;x.b&#xFF1A;</p>
<pre><code class="lang-Go"><span class="hljs-comment">//gopl.io/ch13/unsafeptr</span>
<span class="hljs-keyword">var</span> x <span class="hljs-keyword">struct</span> {
@@ -2051,16 +2049,20 @@ pb := (*<span class="hljs-typename">int16</span>)(unsafe.Pointer(
*pb = <span class="hljs-number">42</span>
fmt.Println(x.b) <span class="hljs-comment">// &quot;42&quot;</span>
</code></pre>
<p>&#x76E1;&#x7BA1;&#x5BEB;&#x6CD5;&#x5F88;&#x7E41;&#x7463;, &#x4F46;&#x5728;&#x9019;&#x91CC;&#x4F75;&#x4E0D;&#x662F;&#x4E00;&#x4EF6;&#x58DE;&#x4E8B;, &#x56E0;&#x7232;&#x9019;&#x4E9B;&#x529F;&#x80FD;&#x61C9;&#x8A72;&#x5F88;&#x8B39;&#x614E;&#x5730;&#x4F7F;&#x7528;. &#x4E0D;&#x8981;&#x8A66;&#x5716;&#x5C07;&#x5F15;&#x5165;&#x53EF;&#x80FD;&#x800C;&#x7834;&#x58DE;&#x4EE3;&#x78BC;&#x7684;&#x6B63;&#x78BA;&#x6027;&#x7684; uintptr &#x81E8;&#x6642;&#x8B8A;&#x91CF;. &#x4E0B;&#x9762;&#x6BB5;&#x4EE3;&#x78BC;&#x662F;&#x4E0D;&#x6B63;&#x78BA;&#x7684;:</p>
<p>&#x932F;&#x8AA4;&#x7684;&#x539F;&#x56E0;&#x5F88;&#x5FAE;&#x5999;. &#x6709;&#x6642;&#x5019;&#x5783;&#x573E;&#x8FF4;&#x6536;&#x5668;&#x6703;&#x79FB;&#x52D5;&#x4E00;&#x4E9B;&#x8B8A;&#x91CF;&#x4EE5;&#x964D;&#x4F4E;&#x5167;&#x5B58;&#x788E;&#x7247;&#x7684;&#x554F;&#x984C;.&#x9019;&#x985E;&#x5783;&#x573E;&#x8FF4;&#x6536;&#x5668;&#x88AB;&#x7A31;&#x7232;&#x79FB;&#x52D5;GC. &#x7576;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#x88AB;&#x79FB;&#x52D5;, &#x6240;&#x6709;&#x7684;&#x4FDD;&#x5B58;&#x6539;&#x8B8A;&#x91CF;&#x820A;&#x5730;&#x5740;&#x7684;&#x6307;&#x91DD;&#x5FC5;&#x9B1A;&#x540C;&#x6642;&#x88AB;&#x66F4;&#x65B0;&#x7232;&#x8B8A;&#x91CF;&#x79FB;&#x52D5;&#x5F8C;&#x7684;&#x65B0;&#x5730;&#x5740;. &#x5F9E;&#x5783;&#x573E;&#x6536;&#x96C6;&#x5668;&#x7684;&#x8996;&#x89D2;&#x4F86;&#x770B;, &#x4E00;&#x500B; <code>unsafe.Pointer</code> &#x662F;&#x4E00;&#x500B;&#x6307;&#x91DD;, &#x56E0;&#x6B64;&#x7576;&#x8B8A;&#x91CF;&#x88AB;&#x79FB;&#x52D5;&#x662F;&#x5C0D;&#x61C9;&#x7684;&#x6307;&#x91DD;&#x5FC5;&#x9B1A;&#x88AB;&#x66F4;&#x65B0;, &#x4F46;&#x662F; <code>uintptr</code> &#x96BB;&#x662F;&#x4E00;&#x500B;&#x666E;&#x901A;&#x7684;&#x6578;&#x5B57;, &#x6240;&#x4EE5;&#x5176;&#x503C;&#x4E0D;&#x61C9;&#x8A72;&#x88AB;&#x6539;&#x8B8A;. &#x4E0A;&#x9762;&#x932F;&#x8AA4;&#x7684;&#x4EE3;&#x78BC;&#x56E0;&#x7232;&#x4E00;&#x500B;&#x975E;&#x6307;&#x91DD;&#x7684;&#x81E8;&#x6642;&#x8B8A;&#x91CF; <code>tmp</code>, &#x5C0E;&#x81F4;&#x5783;&#x573E;&#x6536;&#x96C6;&#x5668;&#x7121;&#x6CD5;&#x6B63;&#x78BA;&#x8B58;&#x522B;&#x9019;&#x500B;&#x662F;&#x4E00;&#x500B;&#x6307;&#x5411;&#x8B8A;&#x91CF; <code>x</code> &#x7684;&#x6307;&#x91DD;. &#x7B2C;&#x4E8C;&#x500B;&#x8A9E;&#x53E5;&#x57F7;&#x884C;&#x6642;, &#x8B8A;&#x91CF; <code>x</code> &#x53EF;&#x80FD;&#x5DF2;&#x7D93;&#x88AB;&#x8F49;&#x79FB;, &#x81E8;&#x6642;&#x8B8A;&#x91CF; <code>tmp</code> &#x4E5F;&#x5C31;&#x4E0D;&#x5728;&#x5C0D;&#x61C9;&#x73FE;&#x5728;&#x7684; <code>&amp;x.b</code>. &#x7B2C;&#x4E09;&#x500B;&#x8CE6;&#x503C;&#x8A9E;&#x53E5;&#x5C07;&#x5FB9;&#x5E95;&#x6467;&#x8B6D;&#x90A3;&#x500B;&#x4E4B;&#x524D;&#x7684;&#x90A3;&#x90E8;&#x5206;&#x5167;&#x5B58;&#x7A7A;&#x9593;.</p>
<p>&#x6709;&#x5F88;&#x591A;&#x985E;&#x4F3C;&#x539F;&#x56E0;&#x5C0E;&#x81F4;&#x7684;&#x932F;&#x8AA4;. &#x4F8B;&#x5982;&#x9019;&#x689D;&#x8A9E;&#x53E5;:</p>
<p>&#x4E0A;&#x9762;&#x7684;&#x5BEB;&#x6CD5;&#x76E1;&#x7BA1;&#x5F88;&#x7E41;&#x7463;&#xFF0C;&#x4F46;&#x5728;&#x9019;&#x91CC;&#x4F75;&#x4E0D;&#x662F;&#x4E00;&#x4EF6;&#x58DE;&#x4E8B;&#xFF0C;&#x56E0;&#x7232;&#x9019;&#x4E9B;&#x529F;&#x80FD;&#x61C9;&#x8A72;&#x5F88;&#x8B39;&#x614E;&#x5730;&#x4F7F;&#x7528;&#x3002;&#x4E0D;&#x8981;&#x8A66;&#x5716;&#x5F15;&#x5165;&#x4E00;&#x500B;uintptr&#x985E;&#x578B;&#x7684;&#x81E8;&#x6642;&#x8B8A;&#x91CF;&#xFF0C;&#x56E0;&#x7232;&#x5B83;&#x53EF;&#x80FD;&#x6703;&#x7834;&#x58DE;&#x4EE3;&#x78BC;&#x7684;&#x5B89;&#x5168;&#x6027;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;&#x9019;&#x662F;&#x771E;&#x6B63;&#x53EF;&#x4EE5;&#x9AD4;&#x6703;unsafe&#x5305;&#x7232;&#x4F55;&#x4E0D;&#x5B89;&#x5168;&#x7684;&#x4F8B;&#x5B50;&#xFF09;&#x3002;&#x4E0B;&#x9762;&#x6BB5;&#x4EE3;&#x78BC;&#x662F;&#x932F;&#x8AA4;&#x7684;&#xFF1A;</p>
<pre><code class="lang-Go"><span class="hljs-comment">// <span class="hljs-doctag">NOTE:</span> subtly incorrect! </span>
tmp := <span class="hljs-typename">uintptr</span>(unsafe.Pointer(&amp;x)) + unsafe.Offsetof(x.b)
pb := (*<span class="hljs-typename">int16</span>)(unsafe.Pointer(tmp))
*pb = <span class="hljs-number">42</span>
</code></pre>
<p>&#x7523;&#x751F;&#x932F;&#x8AA4;&#x7684;&#x539F;&#x56E0;&#x5F88;&#x5FAE;&#x5999;&#x3002;&#x6709;&#x6642;&#x5019;&#x5783;&#x573E;&#x8FF4;&#x6536;&#x5668;&#x6703;&#x79FB;&#x52D5;&#x4E00;&#x4E9B;&#x8B8A;&#x91CF;&#x4EE5;&#x964D;&#x4F4E;&#x5167;&#x5B58;&#x788E;&#x7247;&#x7B49;&#x554F;&#x984C;&#x3002;&#x9019;&#x985E;&#x5783;&#x573E;&#x8FF4;&#x6536;&#x5668;&#x88AB;&#x7A31;&#x7232;&#x79FB;&#x52D5;GC&#x3002;&#x7576;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#x88AB;&#x79FB;&#x52D5;&#xFF0C;&#x6240;&#x6709;&#x7684;&#x4FDD;&#x5B58;&#x6539;&#x8B8A;&#x91CF;&#x820A;&#x5730;&#x5740;&#x7684;&#x6307;&#x91DD;&#x5FC5;&#x9B1A;&#x540C;&#x6642;&#x88AB;&#x66F4;&#x65B0;&#x7232;&#x8B8A;&#x91CF;&#x79FB;&#x52D5;&#x5F8C;&#x7684;&#x65B0;&#x5730;&#x5740;&#x3002;&#x5F9E;&#x5783;&#x573E;&#x6536;&#x96C6;&#x5668;&#x7684;&#x8996;&#x89D2;&#x4F86;&#x770B;&#xFF0C;&#x4E00;&#x500B;unsafe.Pointer&#x662F;&#x4E00;&#x500B;&#x6307;&#x5411;&#x8B8A;&#x91CF;&#x7684;&#x6307;&#x91DD;&#xFF0C;&#x56E0;&#x6B64;&#x7576;&#x8B8A;&#x91CF;&#x88AB;&#x79FB;&#x52D5;&#x662F;&#x5C0D;&#x61C9;&#x7684;&#x6307;&#x91DD;&#x4E5F;&#x5FC5;&#x9B1A;&#x88AB;&#x66F4;&#x65B0;&#xFF1B;&#x4F46;&#x662F;uintptr&#x985E;&#x578B;&#x7684;&#x81E8;&#x6642;&#x8B8A;&#x91CF;&#x96BB;&#x662F;&#x4E00;&#x500B;&#x666E;&#x901A;&#x7684;&#x6578;&#x5B57;&#xFF0C;&#x6240;&#x4EE5;&#x5176;&#x503C;&#x4E0D;&#x61C9;&#x8A72;&#x88AB;&#x6539;&#x8B8A;&#x3002;&#x4E0A;&#x9762;&#x932F;&#x8AA4;&#x7684;&#x4EE3;&#x78BC;&#x56E0;&#x7232;&#x5F15;&#x5165;&#x4E00;&#x500B;&#x975E;&#x6307;&#x91DD;&#x7684;&#x81E8;&#x6642;&#x8B8A;&#x91CF;tmp&#xFF0C;&#x5C0E;&#x81F4;&#x5783;&#x573E;&#x6536;&#x96C6;&#x5668;&#x7121;&#x6CD5;&#x6B63;&#x78BA;&#x8B58;&#x522B;&#x9019;&#x500B;&#x662F;&#x4E00;&#x500B;&#x6307;&#x5411;&#x8B8A;&#x91CF;x&#x7684;&#x6307;&#x91DD;&#x3002;&#x7576;&#x7B2C;&#x4E8C;&#x500B;&#x8A9E;&#x53E5;&#x57F7;&#x884C;&#x6642;&#xFF0C;&#x8B8A;&#x91CF;x&#x53EF;&#x80FD;&#x5DF2;&#x7D93;&#x88AB;&#x8F49;&#x79FB;&#xFF0C;&#x9019;&#x6642;&#x5019;&#x81E8;&#x6642;&#x8B8A;&#x91CF;tmp&#x4E5F;&#x5C31;&#x4E0D;&#x518D;&#x662F;&#x73FE;&#x5728;&#x7684;<code>&amp;x.b</code>&#x5730;&#x5740;&#x3002;&#x7B2C;&#x4E09;&#x500B;&#x5411;&#x4E4B;&#x524D;&#x7121;&#x6548;&#x5730;&#x5740;&#x7A7A;&#x9593;&#x7684;&#x8CE6;&#x503C;&#x8A9E;&#x53E5;&#x5C07;&#x5FB9;&#x5E95;&#x6467;&#x8B6D;&#x6574;&#x500B;&#x7A0B;&#x5E8F;&#xFF01;</p>
<p>&#x9084;&#x6709;&#x5F88;&#x591A;&#x985E;&#x4F3C;&#x539F;&#x56E0;&#x5C0E;&#x81F4;&#x7684;&#x932F;&#x8AA4;&#x3002;&#x4F8B;&#x5982;&#x9019;&#x689D;&#x8A9E;&#x53E5;&#xFF1A;</p>
<pre><code class="lang-Go">pT := <span class="hljs-typename">uintptr</span>(unsafe.Pointer(<span class="hljs-built_in">new</span>(T))) <span class="hljs-comment">// &#x63D0;&#x793A;: &#x932F;&#x8AA4;!</span>
</code></pre>
<p>&#x9019;&#x91CC;&#x4F75;&#x6C92;&#x6709;&#x6307;&#x91DD;&#x5F15;&#x7528; <code>new</code> &#x65B0;&#x5275;&#x5EFA;&#x7684;&#x8B8A;&#x91CF;, &#x56E0;&#x6B64;&#x8A9E;&#x53E5;&#x57F7;&#x884C;&#x5B8C;&#x6210;&#x4E4B;&#x5F8C;, &#x5783;&#x573E;&#x6536;&#x96C6;&#x5668;&#x6709;&#x6B0A;&#x8FF4;&#x6536;&#x5176;&#x5167;&#x5B58;&#x7A7A;&#x9593;, &#x6240;&#x4EE5;&#x8FD4;&#x8FF4;&#x7684; <code>pT</code> &#x4FDD;&#x5B58;&#x5C07;&#x662F;&#x7121;&#x6548;&#x7684;&#x5730;&#x5740;.</p>
<p>&#x76EE;&#x524D;&#x7684;Go&#x8A9E;&#x8A00;&#x5BE6;&#x73FE;&#x9084;&#x6C92;&#x6709;&#x4F7F;&#x7528;&#x79FB;&#x52D5;GC(&#x672A;&#x4F86;&#x53EF;&#x80FD;&#x5BE6;&#x73FE;), &#x4F46;&#x9019;&#x4E0D;&#x8A72;&#x662F;&#x50E5;&#x5E78;&#x7684;&#x7406;&#x7531;: &#x7576;&#x524D;&#x7684;Go&#x5BE6;&#x73FE;&#x5DF2;&#x7D93;&#x6709;&#x79FB;&#x52D5;&#x8B8A;&#x91CF;&#x7684;&#x5834;&#x666F;. &#x5728;5.2&#x7BC0;&#x6211;&#x5011;&#x63D0;&#x5230;goroutine&#x7684;&#x68E7;&#x662F;&#x6839;&#x64DA;&#x9700;&#x8981;&#x52D5;&#x614B;&#x589E;&#x9577;&#x7684;. &#x7576;&#x9019;&#x500B;&#x6642;&#x5019;, &#x539F;&#x4F86;&#x68E7;&#x4E2D;&#x7684;&#x6240;&#x4EE5;&#x8B8A;&#x91CF;&#x53EF;&#x80FD;&#x9700;&#x8981;&#x88AB;&#x79FB;&#x52D5;&#x5230;&#x65B0;&#x7684;&#x66F4;&#x5927;&#x7684;&#x68E7;&#x4E2D;, &#x6240;&#x4EE5;&#x6211;&#x5011;&#x7121;&#x6CD5;&#x78BA;&#x4FDD;&#x8B8A;&#x91CF;&#x7684;&#x5730;&#x5740;&#x5728;&#x6574;&#x500B;&#x4F7F;&#x7528;&#x9031;&#x671F;&#x5167;&#x4FDD;&#x6301;&#x4E0D;&#x8B8A;.</p>
<p>&#x5728;&#x7DE8;&#x5BEB;&#x672C;&#x6587;&#x6642;, &#x9084;&#x6C92;&#x6709;&#x6E05;&#x6670;&#x7684;&#x539F;&#x5247;&#x5C31;&#x6307;&#x5F15;Go&#x7A0B;&#x5E8F;&#x54E1;, &#x4EC0;&#x9EBD;&#x6A23; <code>unsafe.Pointer</code> &#x548C; <code>uintptr</code> &#x7684;&#x8F49;&#x63DB;&#x662F;&#x4E0D;&#x5B89;&#x5168;&#x7684;(&#x53C3;&#x8003; <a href="https://github.com/golang/go/issues/7192" target="_blank">Go issue7192</a>. &#x8B6F;&#x8A3B;: &#x8A72;&#x554F;&#x984C;&#x5DF2;&#x7D93;&#x8129;&#x8907;.), &#x56E0;&#x6B64;&#x6211;&#x5011;&#x5F37;&#x70C8;&#x5EFA;&#x8B70;&#x6309;&#x7167;&#x6700;&#x58DE;&#x7684;&#x65B9;&#x5F0F;&#x8655;&#x7406;. &#x5C07;&#x6240;&#x6709;&#x5305;&#x542B;&#x8B8A;&#x91CF; <code>y</code> &#x5730;&#x5740;&#x7684; <code>uintptr</code> &#x985E;&#x578B;&#x8B8A;&#x91CF;&#x7576;&#x4F5C; BUG &#x8655;&#x7406;, &#x540C;&#x6642;&#x6E1B;&#x5C11;&#x4E0D;&#x5FC5;&#x8981;&#x7684; <code>unsafe.Pointer</code> &#x5230; <code>uintptr</code> &#x7684;&#x8F49;&#x63DB;. &#x5728;&#x7B2C;&#x4E00;&#x500B;&#x4F8B;&#x5B50;&#x4E2D;, &#x6709;&#x4E09;&#x500B;&#x5230; <code>uintptr</code> &#x7684;&#x8F49;&#x63DB;, &#x5B57;&#x6BB5;&#x504F;&#x79FB;&#x91CF;&#x7684;&#x904B;&#x7B97;, &#x6240;&#x6709;&#x7684;&#x8F49;&#x63DB;&#x5168;&#x5728;&#x4E00;&#x500B;&#x8868;&#x9054;&#x5F0F;&#x5B8C;&#x6210;.</p>
<p>&#x7576;&#x8ABF;&#x7528;&#x4E00;&#x500B;&#x5EAB;&#x51FD;&#x6578;, &#x4F75;&#x4E14;&#x8FD4;&#x8FF4;&#x7684;&#x662F; <code>uintptr</code> &#x985E;&#x578B;&#x662F;, &#x6BD4;&#x5982;&#x4E0B;&#x9762;&#x53CD;&#x5C04;&#x5305;&#x4E2D;&#x7684;&#x76F8;&#x95DC;&#x51FD;&#x6578;,
&#x8FD4;&#x8FF4;&#x7684;&#x7D50;&#x679C;&#x61C9;&#x8A72;&#x7ACB;&#x537D;&#x8F49;&#x63DB;&#x7232; <code>unsafe.Pointer</code> &#x4EE5;&#x78BA;&#x4FDD;&#x6307;&#x91DD;&#x6307;&#x5411;&#x7684;&#x662F;&#x76F8;&#x540C;&#x7684;&#x8B8A;&#x91CF;.</p>
<p>&#x9019;&#x91CC;&#x4F75;&#x6C92;&#x6709;&#x6307;&#x91DD;&#x5F15;&#x7528;<code>new</code>&#x65B0;&#x5275;&#x5EFA;&#x7684;&#x8B8A;&#x91CF;&#xFF0C;&#x56E0;&#x6B64;&#x8A72;&#x8A9E;&#x53E5;&#x57F7;&#x884C;&#x5B8C;&#x6210;&#x4E4B;&#x5F8C;&#xFF0C;&#x5783;&#x573E;&#x6536;&#x96C6;&#x5668;&#x6709;&#x6B0A;&#x99AC;&#x4E0A;&#x8FF4;&#x6536;&#x5176;&#x5167;&#x5B58;&#x7A7A;&#x9593;&#xFF0C;&#x6240;&#x4EE5;&#x8FD4;&#x8FF4;&#x7684;pT&#x5C07;&#x662F;&#x7121;&#x6548;&#x7684;&#x5730;&#x5740;&#x3002;</p>
<p>&#x96D6;&#x7136;&#x76EE;&#x524D;&#x7684;Go&#x8A9E;&#x8A00;&#x5BE6;&#x73FE;&#x9084;&#x6C92;&#x6709;&#x4F7F;&#x7528;&#x79FB;&#x52D5;GC&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;&#x672A;&#x4F86;&#x53EF;&#x80FD;&#x5BE6;&#x73FE;&#xFF09;&#xFF0C;&#x4F46;&#x9019;&#x4E0D;&#x8A72;&#x662F;&#x7DE8;&#x5BEB;&#x932F;&#x8AA4;&#x4EE3;&#x78BC;&#x50E5;&#x5E78;&#x7684;&#x7406;&#x7531;&#xFF1A;&#x7576;&#x524D;&#x7684;Go&#x8A9E;&#x8A00;&#x5BE6;&#x73FE;&#x5DF2;&#x7D93;&#x6709;&#x79FB;&#x52D5;&#x8B8A;&#x91CF;&#x7684;&#x5834;&#x666F;&#x3002;&#x5728;5.2&#x7BC0;&#x6211;&#x5011;&#x63D0;&#x5230;goroutine&#x7684;&#x68E7;&#x662F;&#x6839;&#x64DA;&#x9700;&#x8981;&#x52D5;&#x614B;&#x589E;&#x9577;&#x7684;&#x3002;&#x7576;&#x767C;&#x9001;&#x68E7;&#x52D5;&#x614B;&#x589E;&#x9577;&#x7684;&#x6642;&#x5019;&#xFF0C;&#x539F;&#x4F86;&#x68E7;&#x4E2D;&#x7684;&#x6240;&#x4EE5;&#x8B8A;&#x91CF;&#x53EF;&#x80FD;&#x9700;&#x8981;&#x88AB;&#x79FB;&#x52D5;&#x5230;&#x65B0;&#x7684;&#x66F4;&#x5927;&#x7684;&#x68E7;&#x4E2D;&#xFF0C;&#x6240;&#x4EE5;&#x6211;&#x5011;&#x4F75;&#x4E0D;&#x80FD;&#x78BA;&#x4FDD;&#x8B8A;&#x91CF;&#x7684;&#x5730;&#x5740;&#x5728;&#x6574;&#x500B;&#x4F7F;&#x7528;&#x9031;&#x671F;&#x5167;&#x662F;&#x4E0D;&#x8B8A;&#x7684;&#x3002;</p>
<p>&#x5728;&#x7DE8;&#x5BEB;&#x672C;&#x6587;&#x6642;&#xFF0C;&#x9084;&#x6C92;&#x6709;&#x6E05;&#x6670;&#x7684;&#x539F;&#x5247;&#x4F86;&#x6307;&#x5F15;Go&#x7A0B;&#x5E8F;&#x54E1;&#xFF0C;&#x4EC0;&#x9EBD;&#x6A23;&#x7684;unsafe.Pointer&#x548C;uintptr&#x7684;&#x8F49;&#x63DB;&#x662F;&#x4E0D;&#x5B89;&#x5168;&#x7684;&#xFF08;&#x53C3;&#x8003; [Go issue7192](<a href="https://github.com/golang/go/issues/7192" target="_blank">https://github.com/golang/go/issues/7192</a> &#xFF09;. &#x8B6F;&#x8A3B;: &#x8A72;&#x554F;&#x984C;&#x5DF2;&#x7D93;&#x95DC;&#x9589;&#xFF09;&#xFF0C;&#x56E0;&#x6B64;&#x6211;&#x5011;&#x5F37;&#x70C8;&#x5EFA;&#x8B70;&#x6309;&#x7167;&#x6700;&#x58DE;&#x7684;&#x65B9;&#x5F0F;&#x8655;&#x7406;&#x3002;&#x5C07;&#x6240;&#x6709;&#x5305;&#x542B;&#x8B8A;&#x91CF;&#x5730;&#x5740;&#x7684;uintptr&#x985E;&#x578B;&#x8B8A;&#x91CF;&#x7576;&#x4F5C;BUG&#x8655;&#x7406;&#xFF0C;&#x540C;&#x6642;&#x6E1B;&#x5C11;&#x4E0D;&#x5FC5;&#x8981;&#x7684;unsafe.Pointer&#x985E;&#x578B;&#x5230;uintptr&#x985E;&#x578B;&#x7684;&#x8F49;&#x63DB;&#x3002;&#x5728;&#x7B2C;&#x4E00;&#x500B;&#x4F8B;&#x5B50;&#x4E2D;&#xFF0C;&#x6709;&#x4E09;&#x500B;&#x8F49;&#x63DB;&#x2014;&#x2014;&#x5B57;&#x6BB5;&#x504F;&#x79FB;&#x91CF;&#x5230;uintptr&#x7684;&#x8F49;&#x63DB;&#x548C;&#x8F49;&#x8FF4;unsafe.Pointer&#x985E;&#x578B;&#x7684;&#x64CD;&#x4F5C;&#x2014;&#x2014;&#x6240;&#x6709;&#x7684;&#x8F49;&#x63DB;&#x5168;&#x5728;&#x4E00;&#x500B;&#x8868;&#x9054;&#x5F0F;&#x5B8C;&#x6210;&#x3002;</p>
<p>&#x7576;&#x8ABF;&#x7528;&#x4E00;&#x500B;&#x5EAB;&#x51FD;&#x6578;&#xFF0C;&#x4F75;&#x4E14;&#x8FD4;&#x8FF4;&#x7684;&#x662F;uintptr&#x985E;&#x578B;&#x5730;&#x5740;&#x6642;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;&#x666E;&#x901A;&#x65B9;&#x6CD5;&#x5BE6;&#x73FE;&#x7684;&#x51FD;&#x6578;&#x4E0D;&#x76E1;&#x91CF;&#x4E0D;&#x8981;&#x8FD4;&#x8FF4;&#x8A72;&#x985E;&#x578B;&#x3002;&#x4E0B;&#x9762;&#x4F8B;&#x5B50;&#x662F;reflect&#x5305;&#x7684;&#x51FD;&#x6578;&#xFF0C;reflect&#x5305;&#x548C;unsafe&#x5305;&#x4E00;&#x6A23;&#x90FD;&#x662F;&#x91C7;&#x7528;&#x7279;&#x6B8A;&#x6280;&#x8853;&#x5BE6;&#x73FE;&#x7684;&#xFF0C;&#x7DE8;&#x8B6F;&#x5668;&#x53EF;&#x80FD;&#x7D66;&#x5B83;&#x5011;&#x958B;&#x4E86;&#x5F8C;&#x9580;&#xFF09;&#xFF0C;&#x6BD4;&#x5982;&#x4E0B;&#x9762;&#x53CD;&#x5C04;&#x5305;&#x4E2D;&#x7684;&#x76F8;&#x95DC;&#x51FD;&#x6578;&#xFF0C;&#x8FD4;&#x8FF4;&#x7684;&#x7D50;&#x679C;&#x61C9;&#x8A72;&#x7ACB;&#x537D;&#x8F49;&#x63DB;&#x7232;unsafe.Pointer&#x4EE5;&#x78BA;&#x4FDD;&#x6307;&#x91DD;&#x6307;&#x5411;&#x7684;&#x662F;&#x76F8;&#x540C;&#x7684;&#x8B8A;&#x91CF;&#x3002;</p>
<pre><code class="lang-Go"><span class="hljs-keyword">package</span> reflect
<span class="hljs-keyword">func</span> (Value) Pointer() <span class="hljs-typename">uintptr</span>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="13.3" data-chapter-title="示例: 深度相等判斷" data-filepath="ch13/ch13-03.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="13.3" data-chapter-title="示例: 深度相等判斷" data-filepath="ch13/ch13-03.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>
@@ -2024,23 +2024,21 @@
<section class="normal" id="section-">
<h2 id="133-&#x793A;&#x4F8B;-&#x6DF1;&#x5EA6;&#x76F8;&#x7B49;&#x5224;&#x65B7;">13.3. &#x793A;&#x4F8B;: &#x6DF1;&#x5EA6;&#x76F8;&#x7B49;&#x5224;&#x65B7;</h2>
<p>&#x4F86;&#x81EA; reflect &#x5305;&#x7684; DeepEqual &#x5C0D;&#x5169;&#x500B;&#x503C;&#x9032;&#x884C;&#x6DF1;&#x5EA6;&#x76F8;&#x7B49;&#x5224;&#x65B7;. DeepEqual &#x4F7F;&#x7528;&#x5167;&#x5EFA;&#x7684; <code>==</code> &#x64CD;&#x4F5C;&#x7B26;&#x5C0D;&#x57FA;&#x790E;&#x985E;&#x578B;&#x9032;&#x884C;&#x76F8;&#x7B49;&#x5224;&#x65B7;, &#x5C0D;&#x65BC;&#x8907;&#x5408;&#x985E;&#x578B;&#x5247;&#x905E;&#x6B78;&#x8B8A;&#x91CF;&#x6BCF;&#x500B;&#x57FA;&#x790E;&#x985E;&#x578B;&#x7136;&#x5F8C;&#x505A;&#x985E;&#x4F3C;&#x7684;&#x6BD4;&#x8F03;&#x5224;&#x65B7;. &#x56E0;&#x7232;&#x5B83;&#x5DE5;&#x4F5C;&#x5728;&#x4EFB;&#x610F;&#x7684;&#x985E;&#x578B;&#x4E0A;, &#x751A;&#x81F3;&#x5C0D;&#x4E00;&#x4E9B;&#x4E0D;&#x652F;&#x6301; <code>==</code> &#x64CD;&#x4F5C;&#x7B26;&#x7684;&#x985E;&#x578B;&#x4E5F;&#x53EF;&#x4EE5;&#x5DE5;&#x4F5C;, &#x56E0;&#x6B64;&#x5728;&#x4E00;&#x4E9B;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;&#x4E2D;&#x88AB;&#x5EE3;&#x6CDB;&#x5730;&#x4F7F;&#x7528;. &#x6BD4;&#x5982;&#x4E0B;&#x9762;&#x7684;&#x4EE3;&#x78BC;&#x662F;&#x7528; DeepEqual &#x6BD4;&#x8F03;&#x5169;&#x500B;&#x5B57;&#x7B26;&#x4E32;&#x6578;&#x7D44;&#x662F;&#x5426;&#x7B49;&#x50F9;.</p>
<p>&#x4F86;&#x81EA;reflect&#x5305;&#x7684;DeepEqual&#x51FD;&#x6578;&#x53EF;&#x4EE5;&#x5C0D;&#x5169;&#x500B;&#x503C;&#x9032;&#x884C;&#x6DF1;&#x5EA6;&#x76F8;&#x7B49;&#x5224;&#x65B7;&#x3002;DeepEqual&#x51FD;&#x6578;&#x4F7F;&#x7528;&#x5167;&#x5EFA;&#x7684;==&#x6BD4;&#x8F03;&#x64CD;&#x4F5C;&#x7B26;&#x5C0D;&#x57FA;&#x790E;&#x985E;&#x578B;&#x9032;&#x884C;&#x76F8;&#x7B49;&#x5224;&#x65B7;&#xFF0C;&#x5C0D;&#x65BC;&#x8907;&#x5408;&#x985E;&#x578B;&#x5247;&#x905E;&#x6B78;&#x8A72;&#x8B8A;&#x91CF;&#x7684;&#x6BCF;&#x500B;&#x57FA;&#x790E;&#x985E;&#x578B;&#x7136;&#x5F8C;&#x505A;&#x985E;&#x4F3C;&#x7684;&#x6BD4;&#x8F03;&#x5224;&#x65B7;&#x3002;&#x56E0;&#x7232;&#x5B83;&#x53EF;&#x4EE5;&#x5DE5;&#x4F5C;&#x5728;&#x4EFB;&#x610F;&#x7684;&#x985E;&#x578B;&#x4E0A;&#xFF0C;&#x751A;&#x81F3;&#x5C0D;&#x65BC;&#x4E00;&#x4E9B;&#x4E0D;&#x652F;&#x6301;==&#x64CD;&#x4F5C;&#x904B;&#x7B97;&#x7B26;&#x7684;&#x985E;&#x578B;&#x4E5F;&#x53EF;&#x4EE5;&#x5DE5;&#x4F5C;&#xFF0C;&#x56E0;&#x6B64;&#x5728;&#x4E00;&#x4E9B;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;&#x4E2D;&#x5EE3;&#x6CDB;&#x5730;&#x4F7F;&#x7528;&#x8A72;&#x51FD;&#x6578;&#x3002;&#x6BD4;&#x5982;&#x4E0B;&#x9762;&#x7684;&#x4EE3;&#x78BC;&#x662F;&#x7528;DeepEqual&#x51FD;&#x6578;&#x6BD4;&#x8F03;&#x5169;&#x500B;&#x5B57;&#x7B26;&#x4E32;&#x6578;&#x7D44;&#x662F;&#x5426;&#x76F8;&#x7B49;&#x3002;</p>
<pre><code class="lang-Go"><span class="hljs-keyword">func</span> TestSplit(t *testing.T) {
got := strings.Split(<span class="hljs-string">&quot;a:b:c&quot;</span>, <span class="hljs-string">&quot;:&quot;</span>)
want := []<span class="hljs-typename">string</span>{<span class="hljs-string">&quot;a&quot;</span>, <span class="hljs-string">&quot;b&quot;</span>, <span class="hljs-string">&quot;c&quot;</span>};
<span class="hljs-keyword">if</span> !reflect.DeepEqual(got, want) { <span class="hljs-comment">/* ... */</span> }
}
</code></pre>
<p>&#x76E1;&#x7BA1; DeepEqual &#x5F88;&#x65B9;&#x4FBF;, &#x800C;&#x4E14;&#x53EF;&#x4EE5;&#x652F;&#x6301;&#x4EFB;&#x610F;&#x7684;&#x985E;&#x578B;, &#x4F46;&#x662F;&#x4E5F;&#x6709;&#x4E0D;&#x8DB3;&#x4E4B;&#x8655;.
&#x4F8B;&#x5982;, &#x5B83;&#x5C07;&#x4E00;&#x500B; nil map &#x548C; &#x975E; nil &#x7684;&#x7A7A;&#x7684; map &#x8996;&#x4F5C;&#x4E0D;&#x76F8;&#x7B49;,
&#x540C;&#x6A23; nil slice &#x548C; &#x975E; nil &#x7684;&#x7A7A;&#x7684; slice &#x4E5F;&#x4E0D;&#x76F8;&#x7B49;.</p>
<p>&#x76E1;&#x7BA1;DeepEqual&#x51FD;&#x6578;&#x5F88;&#x65B9;&#x4FBF;&#xFF0C;&#x800C;&#x4E14;&#x53EF;&#x4EE5;&#x652F;&#x6301;&#x4EFB;&#x610F;&#x7684;&#x6578;&#x64DA;&#x985E;&#x578B;&#xFF0C;&#x4F46;&#x662F;&#x5B83;&#x4E5F;&#x6709;&#x4E0D;&#x8DB3;&#x4E4B;&#x8655;&#x3002;&#x4F8B;&#x5982;&#xFF0C;&#x5B83;&#x5C07;&#x4E00;&#x500B;nil&#x503C;&#x7684;map&#x548C;&#x975E;nil&#x503C;&#x4F46;&#x662F;&#x7A7A;&#x7684;map&#x8996;&#x4F5C;&#x4E0D;&#x76F8;&#x7B49;&#xFF0C;&#x540C;&#x6A23;nil&#x503C;&#x7684;slice &#x548C;&#x975E;nil&#x4F46;&#x662F;&#x7A7A;&#x7684;slice&#x4E5F;&#x8996;&#x4F5C;&#x4E0D;&#x76F8;&#x7B49;&#x3002;</p>
<pre><code class="lang-Go"><span class="hljs-keyword">var</span> a, b []<span class="hljs-typename">string</span> = <span class="hljs-constant">nil</span>, []<span class="hljs-typename">string</span>{}
fmt.Println(reflect.DeepEqual(a, b)) <span class="hljs-comment">// &quot;false&quot;</span>
<span class="hljs-keyword">var</span> c, d <span class="hljs-keyword">map</span>[<span class="hljs-typename">string</span>]<span class="hljs-typename">int</span> = <span class="hljs-constant">nil</span>, <span class="hljs-built_in">make</span>(<span class="hljs-keyword">map</span>[<span class="hljs-typename">string</span>]<span class="hljs-typename">int</span>)
fmt.Println(reflect.DeepEqual(c, d)) <span class="hljs-comment">// &quot;false&quot;</span>
</code></pre>
<p>&#x5728;&#x9019;&#x91CC;&#x5B9A;&#x7FA9;&#x4E00;&#x500B;&#x81EA;&#x5DF1;&#x7684; Equal &#x51FD;&#x6578;&#x7528;&#x65BC;&#x6BD4;&#x8F03;&#x4EBA;&#x54E1;&#x7684;&#x503C;. &#x548C; DeepEqual &#x985E;&#x4F3C;&#x7684;&#x662F;&#x5B83;&#x4E5F;&#x662F;&#x57FA;&#x65BC; slice &#x548C; map &#x7684;&#x5143;&#x7D20;&#x9032;&#x884C;&#x905E;&#x6B78;&#x6BD4;&#x8F03;, &#x4E0D;&#x540C;&#x4E4B;&#x8655;&#x662F;&#x5B83;&#x5C07; nil slice(map&#x985E;&#x4F3C;) &#x548C;&#x975E; nil &#x7684;&#x7A7A; slice &#x8996;&#x4F5C;&#x76F8;&#x7B49;&#x7684;&#x503C;. &#x57FA;&#x790E;&#x90E8;&#x5206;&#x7684;&#x6BD4;&#x8F03;&#x53EF;&#x4EE5;&#x57FA;&#x65BC;&#x53CD;&#x5C04;&#x5B8C;&#x6210;, &#x548C; 12.3 &#x7AE0;&#x7684; Display &#x5BE6;&#x73FE;&#x65B9;&#x6CD5;&#x985E;&#x4F3C;. &#x540C;&#x6A23;, &#x6211;&#x5011;&#x9802;&#x4E00;&#x500B;&#x4E00;&#x500B;&#x5167;&#x90E8;&#x51FD;&#x6578; equal, &#x7528;&#x65BC;&#x5167;&#x90E8;&#x7684;&#x905E;&#x6B78;&#x6BD4;&#x8F03;. &#x76EE;&#x524D;&#x4E0D;&#x7528;&#x95DC;&#x5FC3; seen &#x53C3;&#x6578;. &#x5C0D;&#x65BC;&#x6BCF;&#x4E00;&#x5C0D;&#x9700;&#x8981;&#x6BD4;&#x8F03;&#x7684; x &#x548C; y, equal &#x51FD;&#x6578; &#x9996;&#x5148;&#x6AA2;&#x6E2C;&#x5B83;&#x5011;&#x662F;&#x5426;&#x90FD;&#x6709;&#x6548;(&#x6216;&#x90FD;&#x7121;&#x6548;), &#x7136;&#x5F8C;&#x6AA2;&#x6E2C;&#x5B83;&#x5011;&#x662F;&#x5426;&#x662F;&#x76F8;&#x540C;&#x7684;&#x985E;&#x578B;. &#x5269;&#x4E0B;&#x7684;&#x90E8;&#x5206;&#x662F;&#x4E00;&#x500B;&#x5927;&#x7684; switch &#x5206;&#x652F;, &#x7528;&#x65BC;&#x64C1;&#x6709;&#x76F8;&#x540C;&#x57FA;&#x790E;&#x985E;&#x578B;&#x7684;&#x6BD4;&#x8F03;. &#x56E0;&#x7232;&#x9801;&#x9762;&#x7A7A;&#x9593;&#x7684;&#x9650;&#x88FD;, &#x6211;&#x5011;&#x7701;&#x7565;&#x4E86;&#x4E00;&#x4E9B;&#x985E;&#x4F3C;&#x7684;&#x5206;&#x652F;.</p>
<p>&#x6211;&#x5011;&#x5E0C;&#x671B;&#x5728;&#x9019;&#x91CC;&#x5BE6;&#x73FE;&#x4E00;&#x500B;&#x81EA;&#x5DF1;&#x7684;Equal&#x51FD;&#x6578;&#xFF0C;&#x7528;&#x65BC;&#x6BD4;&#x8F03;&#x985E;&#x578B;&#x7684;&#x503C;&#x3002;&#x548C;DeepEqual&#x51FD;&#x6578;&#x985E;&#x4F3C;&#x7684;&#x5730;&#x65B9;&#x662F;&#x5B83;&#x4E5F;&#x662F;&#x57FA;&#x65BC;slice&#x548C;map&#x7684;&#x6BCF;&#x500B;&#x5143;&#x7D20;&#x9032;&#x884C;&#x905E;&#x6B78;&#x6BD4;&#x8F03;&#xFF0C;&#x4E0D;&#x540C;&#x4E4B;&#x8655;&#x662F;&#x5B83;&#x5C07;nil&#x503C;&#x7684;slice&#xFF08;map&#x985E;&#x4F3C;&#xFF09;&#x548C;&#x975E;nil&#x503C;&#x4F46;&#x662F;&#x7A7A;&#x7684;slice&#x8996;&#x4F5C;&#x76F8;&#x7B49;&#x7684;&#x503C;&#x3002;&#x57FA;&#x790E;&#x90E8;&#x5206;&#x7684;&#x6BD4;&#x8F03;&#x53EF;&#x4EE5;&#x57FA;&#x65BC;reflect&#x5305;&#x5B8C;&#x6210;&#xFF0C;&#x548C;12.3&#x7AE0;&#x7684;Display&#x51FD;&#x6578;&#x7684;&#x5BE6;&#x73FE;&#x65B9;&#x6CD5;&#x985E;&#x4F3C;&#x3002;&#x540C;&#x6A23;&#xFF0C;&#x6211;&#x5011;&#x4E5F;&#x5B9A;&#x7FA9;&#x4E86;&#x4E00;&#x500B;&#x5167;&#x90E8;&#x51FD;&#x6578;equal&#xFF0C;&#x7528;&#x65BC;&#x5167;&#x90E8;&#x7684;&#x905E;&#x6B78;&#x6BD4;&#x8F03;&#x3002;&#x8B80;&#x8005;&#x76EE;&#x524D;&#x4E0D;&#x7528;&#x95DC;&#x5FC3;seen&#x53C3;&#x6578;&#x7684;&#x5177;&#x9AD4;&#x542B;&#x7FA9;&#x3002;&#x5C0D;&#x65BC;&#x6BCF;&#x4E00;&#x5C0D;&#x9700;&#x8981;&#x6BD4;&#x8F03;&#x7684;x&#x548C;y&#xFF0C;equal&#x51FD;&#x6578;&#x9996;&#x5148;&#x6AA2;&#x6E2C;&#x5B83;&#x5011;&#x662F;&#x5426;&#x90FD;&#x6709;&#x6548;&#xFF08;&#x6216;&#x90FD;&#x7121;&#x6548;&#xFF09;&#xFF0C;&#x7136;&#x5F8C;&#x6AA2;&#x6E2C;&#x5B83;&#x5011;&#x662F;&#x5426;&#x662F;&#x76F8;&#x540C;&#x7684;&#x985E;&#x578B;&#x3002;&#x5269;&#x4E0B;&#x7684;&#x90E8;&#x5206;&#x662F;&#x4E00;&#x500B;&#x9245;&#x5927;&#x7684;switch&#x5206;&#x652F;&#xFF0C;&#x7528;&#x65BC;&#x76F8;&#x540C;&#x57FA;&#x790E;&#x985E;&#x578B;&#x7684;&#x5143;&#x7D20;&#x6BD4;&#x8F03;&#x3002;&#x56E0;&#x7232;&#x9801;&#x9762;&#x7A7A;&#x9593;&#x7684;&#x9650;&#x88FD;&#xFF0C;&#x6211;&#x5011;&#x7701;&#x7565;&#x4E86;&#x4E00;&#x4E9B;&#x76F8;&#x4F3C;&#x7684;&#x5206;&#x652F;&#x3002;</p>
<pre><code class="lang-Go">gopl.io/ch13/equal
<span class="hljs-keyword">func</span> equal(x, y reflect.Value, seen <span class="hljs-keyword">map</span>[comparison]<span class="hljs-typename">bool</span>) <span class="hljs-typename">bool</span> {
<span class="hljs-keyword">if</span> !x.IsValid() || !y.IsValid() {
@@ -2080,8 +2078,7 @@ fmt.Println(reflect.DeepEqual(c, d)) <span class="hljs-comment">// &quot;false&q
<span class="hljs-built_in">panic</span>(<span class="hljs-string">&quot;unreachable&quot;</span>)
}
</code></pre>
<p>&#x548C;&#x524D;&#x9762;&#x7684;&#x5EFA;&#x8B70;&#x4E00;&#x6A23;, &#x6211;&#x5011;&#x4E0D;&#x516C;&#x958B;&#x4F7F;&#x7528;&#x53CD;&#x5C04;&#x76F8;&#x95DC;&#x7684;&#x63A5;&#x53E3;,
&#x6240;&#x4EE5;&#x5C0E;&#x9F63;&#x7684;&#x51FD;&#x6578;&#x9700;&#x8981;&#x5728;&#x5167;&#x90E8;&#x81EA;&#x5DF1;&#x5C07;&#x8B8A;&#x91CF;&#x8F49;&#x7232; reflect.Value &#x985E;&#x578B;.</p>
<p>&#x548C;&#x524D;&#x9762;&#x7684;&#x5EFA;&#x8B70;&#x4E00;&#x6A23;&#xFF0C;&#x6211;&#x5011;&#x4F75;&#x4E0D;&#x516C;&#x958B;reflect&#x5305;&#x76F8;&#x95DC;&#x7684;&#x63A5;&#x53E3;&#xFF0C;&#x6240;&#x4EE5;&#x5C0E;&#x9F63;&#x7684;&#x51FD;&#x6578;&#x9700;&#x8981;&#x5728;&#x5167;&#x90E8;&#x81EA;&#x5DF1;&#x5C07;&#x8B8A;&#x91CF;&#x8F49;&#x7232;reflect.Value&#x985E;&#x578B;&#x3002;</p>
<pre><code class="lang-Go"><span class="hljs-comment">// Equal reports whether x and y are deeply equal.</span>
<span class="hljs-keyword">func</span> Equal(x, y <span class="hljs-keyword">interface</span>{}) <span class="hljs-typename">bool</span> {
seen := <span class="hljs-built_in">make</span>(<span class="hljs-keyword">map</span>[comparison]<span class="hljs-typename">bool</span>)
@@ -2093,7 +2090,7 @@ fmt.Println(reflect.DeepEqual(c, d)) <span class="hljs-comment">// &quot;false&q
treflect.Type
}
</code></pre>
<p>&#x7232;&#x4E86;&#x78BA;&#x4FDD;&#x7B97;&#x6CD5;&#x5C0D;&#x65BC;&#x5FAA;&#x74B0;&#x6578;&#x64DA;&#x7D50;&#x69CB;&#x4E5F;&#x80FD;&#x6B63;&#x5E38;&#x9000;&#x9F63;, &#x6211;&#x5011;&#x5FC5;&#x9B1A;&#x8A18;&#x9332;&#x6BCF;&#x6B21;&#x5DF2;&#x7D93;&#x6BD4;&#x8F03;&#x7684;&#x8B8A;&#x91CF;, &#x5F9E;&#x800C;&#x907F;&#x514D;&#x9032;&#x5165;&#x7B2C;&#x4E8C;&#x6B21;&#x7684;&#x6BD4;&#x8F03;. Equal &#x51FD;&#x6578;&#x5206;&#x914D;&#x4E86;&#x4E00;&#x7D44;&#x7528;&#x65BC;&#x6BD4;&#x8F03;&#x7684;&#x7D50;&#x69CB;&#x9AD4;, &#x5305;&#x542B;&#x6BCF;&#x5C0D;&#x6BD4;&#x8F03;&#x5C0D;&#x8C61;&#x7684;&#x5730;&#x5740;(unsafe.Pointer&#x5F62;&#x5F0F;&#x4FDD;&#x5B58;)&#x548C;&#x985E;&#x578B;. &#x6211;&#x5011;&#x8A18;&#x9332;&#x985E;&#x578B;&#x7684;&#x539F;&#x56E0;&#x662F;, &#x6709;&#x4E9B;&#x4E0D;&#x540C;&#x7684;&#x8B8A;&#x91CF;&#x53EF;&#x80FD;&#x5C0D;&#x61C9;&#x76F8;&#x540C;&#x7684;&#x5730;&#x5740;. &#x4F8B;&#x5982;, &#x5982;&#x679C; x &#x548C; y &#x90FD;&#x662F;&#x6578;&#x7D44;&#x985E;&#x578B;, &#x90A3;&#x9EBD; x &#x548C; <code>x[0]</code> &#x5C07;&#x5C0D;&#x61C9;&#x76F8;&#x540C;&#x7684;&#x5730;&#x5740;, y &#x548C; <code>y[0]</code> &#x4E5F;&#x662F;&#x5C0D;&#x61C9;&#x76F8;&#x540C;&#x7684;&#x5730;&#x5740;, &#x9019;&#x53EF;&#x4EE5;&#x7528;&#x65BC;&#x5224;&#x65B7; &#x5C0D;x &#x548C; y &#x6BD4;&#x8F03; &#x6216; x[0] &#x548C; y[0] &#x7684;&#x662F;&#x5426;&#x9032;&#x884C;&#x904E;&#x4E86;.</p>
<p>&#x7232;&#x4E86;&#x78BA;&#x4FDD;&#x7B97;&#x6CD5;&#x5C0D;&#x65BC;&#x6709;&#x74B0;&#x7684;&#x6578;&#x64DA;&#x7D50;&#x69CB;&#x4E5F;&#x80FD;&#x6B63;&#x5E38;&#x9000;&#x9F63;&#xFF0C;&#x6211;&#x5011;&#x5FC5;&#x9B1A;&#x8A18;&#x9332;&#x6BCF;&#x6B21;&#x5DF2;&#x7D93;&#x6BD4;&#x8F03;&#x7684;&#x8B8A;&#x91CF;&#xFF0C;&#x5F9E;&#x800C;&#x907F;&#x514D;&#x9032;&#x5165;&#x7B2C;&#x4E8C;&#x6B21;&#x7684;&#x6BD4;&#x8F03;&#x3002;Equal&#x51FD;&#x6578;&#x5206;&#x914D;&#x4E86;&#x4E00;&#x7D44;&#x7528;&#x65BC;&#x6BD4;&#x8F03;&#x7684;&#x7D50;&#x69CB;&#x9AD4;&#xFF0C;&#x5305;&#x542B;&#x6BCF;&#x5C0D;&#x6BD4;&#x8F03;&#x5C0D;&#x8C61;&#x7684;&#x5730;&#x5740;&#xFF08;unsafe.Pointer&#x5F62;&#x5F0F;&#x4FDD;&#x5B58;&#xFF09;&#x548C;&#x985E;&#x578B;&#x3002;&#x6211;&#x5011;&#x8981;&#x8A18;&#x9332;&#x985E;&#x578B;&#x7684;&#x539F;&#x56E0;&#x662F;&#xFF0C;&#x6709;&#x4E9B;&#x4E0D;&#x540C;&#x7684;&#x8B8A;&#x91CF;&#x53EF;&#x80FD;&#x5C0D;&#x61C9;&#x76F8;&#x540C;&#x7684;&#x5730;&#x5740;&#x3002;&#x4F8B;&#x5982;&#xFF0C;&#x5982;&#x679C;x&#x548C;y&#x90FD;&#x662F;&#x6578;&#x7D44;&#x985E;&#x578B;&#xFF0C;&#x90A3;&#x9EBD;x&#x548C;x[0]&#x5C07;&#x5C0D;&#x61C9;&#x76F8;&#x540C;&#x7684;&#x5730;&#x5740;&#xFF0C;y&#x548C;y[0]&#x4E5F;&#x662F;&#x5C0D;&#x61C9;&#x76F8;&#x540C;&#x7684;&#x5730;&#x5740;&#xFF0C;&#x9019;&#x53EF;&#x4EE5;&#x7528;&#x65BC;&#x5340;&#x5206;x&#x8207;y&#x4E4B;&#x9593;&#x7684;&#x6BD4;&#x8F03;&#x6216;x[0]&#x8207;y[0]&#x4E4B;&#x9593;&#x7684;&#x6BD4;&#x8F03;&#x662F;&#x5426;&#x9032;&#x884C;&#x904E;&#x4E86;&#x3002;</p>
<pre><code class="lang-Go"><span class="hljs-comment">// cycle check</span>
<span class="hljs-keyword">if</span> x.CanAddr() &amp;&amp; y.CanAddr() {
xptr := unsafe.Pointer(x.UnsafeAddr())
@@ -2108,13 +2105,13 @@ fmt.Println(reflect.DeepEqual(c, d)) <span class="hljs-comment">// &quot;false&q
seen[c] = <span class="hljs-constant">true</span>
}
</code></pre>
<p>&#x9019;&#x662F; Equal &#x51FD;&#x6578;&#x7684;&#x4F7F;&#x7528;&#x7684;&#x4F8B;&#x5B50;:</p>
<p>&#x9019;&#x662F;Equal&#x51FD;&#x6578;&#x7528;&#x6CD5;&#x7684;&#x4F8B;&#x5B50;:</p>
<pre><code class="lang-Go">fmt.Println(Equal([]<span class="hljs-typename">int</span>{<span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>}, []<span class="hljs-typename">int</span>{<span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>})) <span class="hljs-comment">// &quot;true&quot;</span>
fmt.Println(Equal([]<span class="hljs-typename">string</span>{<span class="hljs-string">&quot;foo&quot;</span>}, []<span class="hljs-typename">string</span>{<span class="hljs-string">&quot;bar&quot;</span>})) <span class="hljs-comment">// &quot;false&quot;</span>
fmt.Println(Equal([]<span class="hljs-typename">string</span>(<span class="hljs-constant">nil</span>), []<span class="hljs-typename">string</span>{})) <span class="hljs-comment">// &quot;true&quot;</span>
fmt.Println(Equal(<span class="hljs-keyword">map</span>[<span class="hljs-typename">string</span>]<span class="hljs-typename">int</span>(<span class="hljs-constant">nil</span>), <span class="hljs-keyword">map</span>[<span class="hljs-typename">string</span>]<span class="hljs-typename">int</span>{})) <span class="hljs-comment">// &quot;true&quot;</span>
</code></pre>
<p>&#x5B83;&#x751A;&#x81F3;&#x53EF;&#x4EE5;&#x8655;&#x7406;&#x985E;&#x4F3C;12.3&#x7AE0;&#x4E2D;&#x5C0E;&#x81F4;Display&#x9677;&#x5165;&#x6B7B;&#x5FAA;&#x74B0;&#x7684;&#x6578;&#x64DA;.</p>
<p>Equal&#x51FD;&#x6578;&#x751A;&#x81F3;&#x53EF;&#x4EE5;&#x8655;&#x7406;&#x985E;&#x4F3C;12.3&#x7AE0;&#x4E2D;&#x5C0E;&#x81F4;Display&#x9677;&#x5165;&#x9677;&#x5165;&#x6B7B;&#x5FAA;&#x74B0;&#x7684;&#x5E36;&#x6709;&#x74B0;&#x7684;&#x6578;&#x64DA;&#x3002;</p>
<pre><code class="lang-Go"><span class="hljs-comment">// Circular linked lists a -&gt; b -&gt; a and c -&gt; c.</span>
<span class="hljs-keyword">type</span> link <span class="hljs-keyword">struct</span> {
value <span class="hljs-typename">string</span>
@@ -2128,9 +2125,9 @@ fmt.Println(Equal(c, c)) <span class="hljs-comment">// &quot;true&quot;</span>
fmt.Println(Equal(a, b)) <span class="hljs-comment">// &quot;false&quot;</span>
fmt.Println(Equal(a, c)) <span class="hljs-comment">// &quot;false&quot;</span>
</code></pre>
<pre><code>&#x7DF4;&#x7FD2; 13.1: &#x5B9A;&#x7FA9;&#x4E00;&#x500B;&#x6DF1;&#x6BD4;&#x8F03;&#x51FD;&#x6578;, &#x5C0D;&#x65BC;&#x5341;&#x5104;&#x4EE5;&#x5167;&#x7684;&#x6578;&#x5B57;&#x6BD4;&#x8F03;, &#x5FFD;&#x7565;&#x985E;&#x578B;&#x5DEE;&#x7570;.
&#x7DF4;&#x7FD2; 13.2: &#x7DE8;&#x5BEB;&#x4E00;&#x500B;&#x51FD;&#x6578;, &#x5831;&#x544A;&#x5176;&#x53C3;&#x6578;&#x662F;&#x5426;&#x5FAA;&#x74B0;&#x6578;&#x64DA;&#x7D50;&#x69CB;.
</code></pre>
<p><strong>&#x7DF4;&#x7FD2; 13.1&#xFF1A;</strong> &#x5B9A;&#x7FA9;&#x4E00;&#x500B;&#x6DF1;&#x6BD4;&#x8F03;&#x51FD;&#x6578;&#xFF0C;&#x5C0D;&#x65BC;&#x5341;&#x5104;&#x4EE5;&#x5167;&#x7684;&#x6578;&#x5B57;&#x6BD4;&#x8F03;&#xFF0C;&#x5FFD;&#x7565;&#x985E;&#x578B;&#x5DEE;&#x7570;&#x3002;</p>
<p><strong>&#x7DF4;&#x7FD2; 13.2&#xFF1A;</strong> &#x7DE8;&#x5BEB;&#x4E00;&#x500B;&#x51FD;&#x6578;&#xFF0C;&#x5831;&#x544A;&#x5176;&#x53C3;&#x6578;&#x662F;&#x5426;&#x5FAA;&#x74B0;&#x6578;&#x64DA;&#x7D50;&#x69CB;&#x3002;</p>
</section>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="13.4" data-chapter-title="通過cgo調用C代碼" data-filepath="ch13/ch13-04.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="13.4" data-chapter-title="通過cgo調用C代碼" data-filepath="ch13/ch13-04.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>
@@ -2024,19 +2024,35 @@
<section class="normal" id="section-">
<h2 id="134-&#x901A;&#x904E;cgo&#x8ABF;&#x7528;c&#x4EE3;&#x78BC;">13.4. &#x901A;&#x904E;cgo&#x8ABF;&#x7528;C&#x4EE3;&#x78BC;</h2>
<p>Go&#x7A0B;&#x5E8F;&#x53EF;&#x80FD;&#x6703;&#x9047;&#x5230;&#x8981;&#x8A2A;&#x554F;C&#x8A9E;&#x8A00;&#x7684;&#x67D0;&#x4E9B;&#x786C;&#x4EF6;&#x9A45;&#x52D5;&#x7684;&#x5834;&#x666F;, &#x6216;&#x8005;&#x662F;&#x5F9E;&#x4E00;&#x500B;C++&#x5BE6;&#x73FE;&#x7684;&#x5D4C;&#x5165;&#x5F0F;&#x6578;&#x64DA;&#x5EAB;&#x67FB;&#x8A62;&#x8A18;&#x9332;&#x7684;&#x5834;&#x666F;, &#x6216;&#x8005;&#x662F;&#x4F7F;&#x7528;Fortran&#x5BE6;&#x73FE;&#x7684;&#x4E00;&#x4E9B;&#x7DDA;&#x6027;&#x4EE3;&#x6578;&#x5EAB;&#x7684;&#x5834;&#x666F;. C&#x4F5C;&#x7232;&#x4E00;&#x500B;&#x901A;&#x7528;&#x8A9E;&#x8A00;, &#x5F88;&#x591A;&#x5EAB;&#x6703;&#x9078;&#x64C7;&#x63D0;&#x4F9B;&#x4E00;&#x500B;C&#x517C;&#x5BB9;&#x7684;API, &#x7136;&#x5F8C;&#x7528;&#x5176;&#x4ED6;&#x8A9E;&#x8A00;&#x5BE6;&#x73FE;.</p>
<p>&#x5728;&#x672C;&#x7BC0;&#x4E2D;, &#x6211;&#x5011;&#x5C07;&#x69CB;&#x5EFA;&#x4E00;&#x500B;&#x7C21;&#x6613;&#x7684;&#x6578;&#x64DA;&#x58D3;&#x7E2E;&#x7A0B;&#x5E8F;, &#x901A;&#x904E;&#x4F7F;&#x7528;&#x4E00;&#x500B;Go&#x8A9E;&#x8A00;&#x81EA;&#x5E36;&#x7684;&#x53EB;cgo&#x7684;&#x7528;&#x65BC;&#x652F;&#x63F4;C&#x8A9E;&#x8A00;&#x51FD;&#x6578;&#x8ABF;&#x7528;&#x7684;&#x5DE5;&#x5177;. &#x9019;&#x985E;&#x5DE5;&#x5177;&#x88AB;&#x7A31;&#x7232;&#x5916;&#x570D;&#x51FD;&#x6578;&#x63A5;&#x53E3;(ffi), &#x4F75;&#x4E14;cgo&#x4E5F;&#x4E0D;&#x662F;Go&#x4E2D;&#x552F;&#x4E00;&#x7684;&#x985E;&#x4F3C;&#x5DE5;&#x5177;. SWIG(swig.org) &#x662F;&#x985E;&#x4F3C;&#x7684;&#x53E6;&#x4E00;&#x500B;&#x88AB;&#x5EE3;&#x6CDB;&#x4F7F;&#x7528;&#x7684;&#x5DE5;&#x5177;, &#x5B83;&#x63D0;&#x4F9B;&#x4E86;&#x5F88;&#x591A;&#x8907;&#x96DC;&#x7279;&#x6027;&#x4EE5;&#x652F;&#x63F4;C++&#x7684;&#x96C6;&#x6210;, &#x4F46; SWIG &#x4E0D;&#x662F;&#x9019;&#x91CC;&#x8981;&#x8A0E;&#x8AD6;&#x7684;&#x4E3B;&#x984C;.</p>
<p>&#x5728;&#x6A19;&#x6E96;&#x5EAB;&#x7684; <code>compress/...</code> &#x5B50;&#x76EE;&#x9332;&#x6709;&#x5F88;&#x591A;&#x6D41;&#x884C;&#x7684;&#x58D3;&#x7E2E;&#x7B97;&#x6CD5;&#x7684;&#x7DE8;&#x78BC;&#x548C;&#x89E3;&#x78BC;&#x5BE6;&#x73FE;, &#x5305;&#x62EC;LZW&#x58D3;&#x7E2E;&#x7B97;&#x6CD5;(Unix&#x7684;compress&#x547D;&#x4EE4;&#x7528;&#x7684;&#x7B97;&#x6CD5;)&#x548C;DEFLATE&#x58D3;&#x7E2E;&#x7B97;&#x6CD5;(GNU gzip&#x547D;&#x4EE4;&#x7528;&#x7684;&#x7B97;&#x6CD5;). &#x9019;&#x4E9B;&#x5305;&#x7684;API&#x7684;&#x7D30;&#x7BC0;&#x6709;&#x4E9B;&#x5DEE;&#x7570;, &#x4F46;&#x662F;&#x5B83;&#x5011;&#x90FD;&#x63D0;&#x4F9B;&#x4E86;&#x91DD;&#x5C0D; <code>io.Writer</code> &#x7684;&#x58D3;&#x7E2E;&#x63A5;&#x53E3;, &#x548C;&#x63D0;&#x4F9B;&#x4E86;&#x91DD;&#x5C0D; <code>io.Reader</code> &#x7684;&#x89E3;&#x58D3;&#x7E2E;&#x63A5;&#x53E3;. &#x4F8B;&#x5982;:</p>
<p>Go&#x7A0B;&#x5E8F;&#x53EF;&#x80FD;&#x6703;&#x9047;&#x5230;&#x8981;&#x8A2A;&#x554F;C&#x8A9E;&#x8A00;&#x7684;&#x67D0;&#x4E9B;&#x786C;&#x4EF6;&#x9A45;&#x52D5;&#x51FD;&#x6578;&#x7684;&#x5834;&#x666F;&#xFF0C;&#x6216;&#x8005;&#x662F;&#x5F9E;&#x4E00;&#x500B;C++&#x8A9E;&#x8A00;&#x5BE6;&#x73FE;&#x7684;&#x5D4C;&#x5165;&#x5F0F;&#x6578;&#x64DA;&#x5EAB;&#x67FB;&#x8A62;&#x8A18;&#x9332;&#x7684;&#x5834;&#x666F;&#xFF0C;&#x6216;&#x8005;&#x662F;&#x4F7F;&#x7528;Fortran&#x8A9E;&#x8A00;&#x5BE6;&#x73FE;&#x7684;&#x4E00;&#x4E9B;&#x7DDA;&#x6027;&#x4EE3;&#x6578;&#x5EAB;&#x7684;&#x5834;&#x666F;&#x3002;C&#x8A9E;&#x8A00;&#x4F5C;&#x7232;&#x4E00;&#x500B;&#x901A;&#x7528;&#x8A9E;&#x8A00;&#xFF0C;&#x5F88;&#x591A;&#x5EAB;&#x6703;&#x9078;&#x64C7;&#x63D0;&#x4F9B;&#x4E00;&#x500B;C&#x517C;&#x5BB9;&#x7684;API&#xFF0C;&#x7136;&#x5F8C;&#x7528;&#x5176;&#x4ED6;&#x4E0D;&#x540C;&#x7684;&#x7DE8;&#x7A0B;&#x8A9E;&#x8A00;&#x5BE6;&#x73FE;&#xFF08;&#x8B6F;&#x8005;&#xFF1A;Go&#x8A9E;&#x8A00;&#x9700;&#x8981;&#x4E5F;&#x61C9;&#x8A72;&#x64C1;&#x62B1;&#x9019;&#x4E9B;&#x9245;&#x5927;&#x7684;&#x4EE3;&#x78BC;&#x907A;&#x7523;&#xFF09;&#x3002;</p>
<p>&#x5728;&#x672C;&#x7BC0;&#x4E2D;&#xFF0C;&#x6211;&#x5011;&#x5C07;&#x69CB;&#x5EFA;&#x4E00;&#x500B;&#x7C21;&#x6613;&#x7684;&#x6578;&#x64DA;&#x58D3;&#x7E2E;&#x7A0B;&#x5E8F;&#xFF0C;&#x4F7F;&#x7528;&#x4E86;&#x4E00;&#x500B;Go&#x8A9E;&#x8A00;&#x81EA;&#x5E36;&#x7684;&#x53EB;cgo&#x7684;&#x7528;&#x65BC;&#x652F;&#x63F4;C&#x8A9E;&#x8A00;&#x51FD;&#x6578;&#x8ABF;&#x7528;&#x7684;&#x5DE5;&#x5177;&#x3002;&#x9019;&#x985E;&#x5DE5;&#x5177;&#x4E00;&#x822C;&#x88AB;&#x7A31;&#x7232; <em>foreign-function interfaces</em> &#xFF08;&#x7C21;&#x7A31;ffi&#xFF09;, &#x4F75;&#x4E14;&#x5728;&#x985E;&#x4F3C;&#x5DE5;&#x5177;&#x4E2D;cgo&#x4E5F;&#x4E0D;&#x662F;&#x552F;&#x4E00;&#x7684;&#x3002;SWIG&#xFF08; <a href="http://swig.org" target="_blank">http://swig.org</a> &#xFF09;&#x662F;&#x53E6;&#x4E00;&#x500B;&#x985E;&#x4F3C;&#x7684;&#x4E14;&#x88AB;&#x5EE3;&#x6CDB;&#x4F7F;&#x7528;&#x7684;&#x5DE5;&#x5177;&#xFF0C;SWIG&#x63D0;&#x4F9B;&#x4E86;&#x5F88;&#x591A;&#x8907;&#x96DC;&#x7279;&#x6027;&#x4EE5;&#x652F;&#x63F4;C++&#x7684;&#x7279;&#x6027;&#xFF0C;&#x4F46;SWIG&#x4F75;&#x4E0D;&#x662F;&#x6211;&#x5011;&#x8981;&#x8A0E;&#x8AD6;&#x7684;&#x4E3B;&#x984C;&#x3002;</p>
<p>&#x5728;&#x6A19;&#x6E96;&#x5EAB;&#x7684;<code>compress/...</code>&#x5B50;&#x5305;&#x6709;&#x5F88;&#x591A;&#x6D41;&#x884C;&#x7684;&#x58D3;&#x7E2E;&#x7B97;&#x6CD5;&#x7684;&#x7DE8;&#x78BC;&#x548C;&#x89E3;&#x78BC;&#x5BE6;&#x73FE;&#xFF0C;&#x5305;&#x62EC;&#x6D41;&#x884C;&#x7684;LZW&#x58D3;&#x7E2E;&#x7B97;&#x6CD5;&#xFF08;Unix&#x7684;compress&#x547D;&#x4EE4;&#x7528;&#x7684;&#x7B97;&#x6CD5;&#xFF09;&#x548C;DEFLATE&#x58D3;&#x7E2E;&#x7B97;&#x6CD5;&#xFF08;GNU gzip&#x547D;&#x4EE4;&#x7528;&#x7684;&#x7B97;&#x6CD5;&#xFF09;&#x3002;&#x9019;&#x4E9B;&#x5305;&#x7684;API&#x7684;&#x7D30;&#x7BC0;&#x96D6;&#x7136;&#x6709;&#x4E9B;&#x5DEE;&#x7570;&#xFF0C;&#x4F46;&#x662F;&#x5B83;&#x5011;&#x90FD;&#x63D0;&#x4F9B;&#x4E86;&#x91DD;&#x5C0D; io.Writer&#x985E;&#x578B;&#x8F38;&#x9F63;&#x7684;&#x58D3;&#x7E2E;&#x63A5;&#x53E3;&#x548C;&#x63D0;&#x4F9B;&#x4E86;&#x91DD;&#x5C0D;io.Reader&#x985E;&#x578B;&#x8F38;&#x5165;&#x7684;&#x89E3;&#x58D3;&#x7E2E;&#x63A5;&#x53E3;&#x3002;&#x4F8B;&#x5982;&#xFF1A;</p>
<pre><code class="lang-Go"><span class="hljs-keyword">package</span> gzip <span class="hljs-comment">// compress/gzip</span>
<span class="hljs-keyword">func</span> NewWriter(w io.Writer) io.WriteCloser
<span class="hljs-keyword">func</span> NewReader(r io.Reader) (io.ReadCloser, error)
</code></pre>
<p>bzip2&#x58D3;&#x7E2E;&#x7B97;&#x6CD5;, &#x662F;&#x57FA;&#x65BC;&#x512A;&#x96C5;&#x7684; Burrows-Wheeler &#x8B8A;&#x63DB;, &#x904B;&#x884C;&#x901F;&#x5EA6;&#x6BD4; gzip &#x8981;&#x6162;, &#x4F46;&#x662F;&#x53EF;&#x4EE5;&#x63D0;&#x4F9B;&#x66F4;&#x9AD8;&#x7684;&#x58D3;&#x7E2E;&#x6BD4;. &#x6A19;&#x6E96;&#x5EAB;&#x7684; <code>compress/bzip2</code> &#x5305;&#x76EE;&#x524D;&#x9084;&#x6C92;&#x6709;&#x63D0;&#x4F9B; bzip2 &#x7B97;&#x6CD5;&#x7684;&#x58D3;&#x7E2E;&#x5BE6;&#x73FE;. &#x5B8C;&#x5168;&#x5F9E;&#x982D;&#x5BE6;&#x73FE;&#x662F;&#x4E00;&#x500B;&#x7E41;&#x7463;&#x7684;&#x5DE5;&#x4F5C;, &#x800C;&#x4E14; bzip.org &#x6709;&#x73FE;&#x6210;&#x7684; libbzip2 &#x958B;&#x6E90;&#x5BE6;&#x73FE;, &#x6587;&#x6A94;&#x9F4A;&#x5168;&#x800C;&#x4E14;&#x6027;&#x80FD;&#x8F03;&#x597D;,</p>
<p>&#x5982;&#x679C;C&#x5EAB;&#x6BD4;&#x8F03;&#x5C0F;, &#x6211;&#x5011;&#x53EF;&#x4EE5;&#x7528;&#x7D14;Go&#x91CD;&#x65B0;&#x5BE6;&#x73FE;&#x4E00;&#x904D;. &#x5982;&#x679C;&#x6211;&#x5011;&#x5C0D;&#x6027;&#x80FD;&#x6C92;&#x6709;&#x7279;&#x6B8A;&#x8981;&#x6C42;, &#x6211;&#x5011;&#x53EF;&#x4EE5;&#x7528; <code>os/exec</code> &#x5305;&#x7684;&#x65B9;&#x6CD5;&#x5C07;C&#x7DE8;&#x5BEB;&#x7684;&#x61C9;&#x7528;&#x7A0B;&#x5E8F;&#x4F5C;&#x7232;&#x4E00;&#x500B;&#x5B50;&#x9032;&#x884C;&#x904B;&#x884C;. &#x96BB;&#x6709;&#x7576;&#x4F60;&#x9700;&#x8981;&#x4F7F;&#x7528;&#x8907;&#x96DC;&#x4F46;&#x662F;&#x6027;&#x80FD;&#x66F4;&#x9AD8;&#x7684;&#x5E95;&#x5C64;C&#x63A5;&#x53E3;&#x6642;, &#x5C31;&#x662F;&#x4F7F;&#x7528;cgo&#x7684;&#x5834;&#x666F;&#x4E86;. &#x4E0B;&#x9762;&#x6211;&#x5011;&#x5C07;&#x901A;&#x904E;&#x4E00;&#x500B;&#x4F8B;&#x5B50;&#x8B1B;&#x8FF0;cgo&#x7684;&#x7528;&#x6CD5;.</p>
<p>&#x8981;&#x4F7F;&#x7528; libbzip2, &#x6211;&#x5011;&#x9700;&#x8981;&#x4E00;&#x500B; <code>bz_stream</code> &#x7D50;&#x69CB;&#x9AD4;, &#x7528;&#x65BC;&#x4FDD;&#x6301;&#x8F38;&#x5165;&#x548C;&#x8F38;&#x9F63;&#x7DE9;&#x5B58;.
&#x7136;&#x5F8C;&#x6709;&#x4E09;&#x500B;&#x51FD;&#x6578;: BZ2_bzCompressInit &#x7528;&#x65BC;&#x521D;&#x59CB;&#x5316;&#x7DE9;&#x5B58;, BZ2_bzCompress &#x7528;&#x65BC;&#x5C07;&#x8F38;&#x5165;&#x7DE9;&#x5B58;&#x7684;&#x6578;&#x64DA;&#x58D3;&#x7E2E;&#x5230;&#x8F38;&#x9F63;&#x7DE9;&#x5B58;, BZ2_bzCompressEnd &#x7528;&#x65BC;&#x91CB;&#x653E;&#x4E0D;&#x9700;&#x8981;&#x7684;&#x7DE9;&#x5B58;.
(&#x76EE;&#x524D;&#x4E0D;&#x8981;&#x64D4;&#x5FC3;&#x5305;&#x7684;&#x5177;&#x9AD4;&#x7D50;&#x69CB;, &#x9019;&#x500B;&#x4F8B;&#x5B50;&#x7684;&#x76EE;&#x7684;&#x5C31;&#x662F;&#x6F14;&#x793A;&#x5404;&#x500B;&#x90E8;&#x5206;&#x5982;&#x4F55;&#x7D44;&#x5408;&#x5728;&#x4E00;&#x8D77;&#x7684;)</p>
<p>&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x5728;Go&#x4EE3;&#x78BC;&#x4E2D;&#x76F4;&#x63A5;&#x8ABF;&#x7528; BZ2_bzCompressInit &#x548C; BZ2_bzCompressEnd, &#x4F46;&#x662F;&#x5C0D;&#x65BC; BZ2_bzCompress, &#x6211;&#x5011;&#x5C07;&#x5B9A;&#x7FA9;&#x4E00;&#x500B;C&#x8A9E;&#x8A00;&#x7684;&#x5305;&#x88DD;&#x51FD;&#x6578;, &#x7232;&#x4E86;&#x986F;&#x793A;&#x4ED6;&#x662F;&#x5982;&#x4F55;&#x5B8C;&#x6210;&#x7684;. &#x4E0B;&#x9762;&#x662F;C&#x4EE3;&#x78BC;, &#x5C0D;&#x61C9;&#x4E00;&#x500B;&#x7368;&#x7ACB;&#x7684;&#x6587;&#x4EF6;.</p>
<p>bzip2&#x58D3;&#x7E2E;&#x7B97;&#x6CD5;&#xFF0C;&#x662F;&#x57FA;&#x65BC;&#x512A;&#x96C5;&#x7684;Burrows-Wheeler&#x8B8A;&#x63DB;&#x7B97;&#x6CD5;&#xFF0C;&#x904B;&#x884C;&#x901F;&#x5EA6;&#x6BD4;gzip&#x8981;&#x6162;&#xFF0C;&#x4F46;&#x662F;&#x53EF;&#x4EE5;&#x63D0;&#x4F9B;&#x66F4;&#x9AD8;&#x7684;&#x58D3;&#x7E2E;&#x6BD4;&#x3002;&#x6A19;&#x6E96;&#x5EAB;&#x7684;compress/bzip2&#x5305;&#x76EE;&#x524D;&#x9084;&#x6C92;&#x6709;&#x63D0;&#x4F9B;bzip2&#x58D3;&#x7E2E;&#x7B97;&#x6CD5;&#x7684;&#x5BE6;&#x73FE;&#x3002;&#x5B8C;&#x5168;&#x5F9E;&#x982D;&#x958B;&#x59CB;&#x5BE6;&#x73FE;&#x662F;&#x4E00;&#x500B;&#x58D3;&#x7E2E;&#x7B97;&#x6CD5;&#x662F;&#x4E00;&#x4EF6;&#x7E41;&#x7463;&#x7684;&#x5DE5;&#x4F5C;&#xFF0C;&#x800C;&#x4E14; <a href="http://bzip.org" target="_blank">http://bzip.org</a> &#x5DF2;&#x7D93;&#x6709;&#x73FE;&#x6210;&#x7684;libbzip2&#x7684;&#x958B;&#x6E90;&#x5BE6;&#x73FE;&#xFF0C;&#x4E0D;&#x50C5;&#x6587;&#x6A94;&#x9F4A;&#x5168;&#x800C;&#x4E14;&#x6027;&#x80FD;&#x53C8;&#x597D;&#x3002;</p>
<p>&#x5982;&#x679C;&#x662F;&#x6BD4;&#x8F03;&#x5C0F;&#x7684;C&#x8A9E;&#x8A00;&#x5EAB;&#xFF0C;&#x6211;&#x5011;&#x5B8C;&#x5168;&#x53EF;&#x4EE5;&#x7528;&#x7D14;Go&#x8A9E;&#x8A00;&#x91CD;&#x65B0;&#x5BE6;&#x73FE;&#x4E00;&#x904D;&#x3002;&#x5982;&#x679C;&#x6211;&#x5011;&#x5C0D;&#x6027;&#x80FD;&#x4E5F;&#x6C92;&#x6709;&#x7279;&#x6B8A;&#x8981;&#x6C42;&#x7684;&#x8A71;&#xFF0C;&#x6211;&#x5011;&#x9084;&#x53EF;&#x4EE5;&#x7528;os/exec&#x5305;&#x7684;&#x65B9;&#x6CD5;&#x5C07;C&#x7DE8;&#x5BEB;&#x7684;&#x61C9;&#x7528;&#x7A0B;&#x5E8F;&#x4F5C;&#x7232;&#x4E00;&#x500B;&#x5B50;&#x9032;&#x7A0B;&#x904B;&#x884C;&#x3002;&#x96BB;&#x6709;&#x7576;&#x4F60;&#x9700;&#x8981;&#x4F7F;&#x7528;&#x8907;&#x96DC;&#x800C;&#x4E14;&#x6027;&#x80FD;&#x66F4;&#x9AD8;&#x7684;&#x5E95;&#x5C64;C&#x63A5;&#x53E3;&#x6642;&#xFF0C;&#x5C31;&#x662F;&#x4F7F;&#x7528;cgo&#x7684;&#x5834;&#x666F;&#x4E86;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;&#x7528;os/exec&#x5305;&#x8ABF;&#x7528;&#x5B50;&#x9032;&#x7A0B;&#x7684;&#x65B9;&#x6CD5;&#x6703;&#x5C0E;&#x81F4;&#x7A0B;&#x5E8F;&#x904B;&#x884C;&#x6642;&#x4F9D;&#x8CF4;&#x90A3;&#x500B;&#x61C9;&#x7528;&#x7A0B;&#x5E8F;&#xFF09;&#x3002;&#x4E0B;&#x9762;&#x6211;&#x5011;&#x5C07;&#x901A;&#x904E;&#x4E00;&#x500B;&#x4F8B;&#x5B50;&#x8B1B;&#x8FF0;cgo&#x7684;&#x5177;&#x9AD4;&#x7528;&#x6CD5;&#x3002;</p>
<p>&#x8B6F;&#x8A3B;&#xFF1A;&#x672C;&#x7AE0;&#x91C7;&#x7528;&#x7684;&#x4EE3;&#x78BC;&#x90FD;&#x662F;&#x6700;&#x65B0;&#x7684;&#x3002;&#x56E0;&#x7232;&#x4E4B;&#x524D;&#x5DF2;&#x7D93;&#x9F63;&#x7248;&#x7684;&#x66F8;&#x4E2D;&#x5305;&#x542B;&#x7684;&#x4EE3;&#x78BC;&#x96BB;&#x80FD;&#x5728;Go1.5&#x4E4B;&#x524D;&#x4F7F;&#x7528;&#x3002;&#x5F9E;Go1.6&#x958B;&#x59CB;&#xFF0C;Go&#x8A9E;&#x8A00;&#x5DF2;&#x7D93;&#x660E;&#x78BA;&#x898F;&#x5B9A;&#x4E86;&#x54EA;&#x4E9B;Go&#x8A9E;&#x8A00;&#x6307;&#x91DD;&#x53EF;&#x4EE5;&#x4E4B;&#x9593;&#x50B3;&#x5165;C&#x8A9E;&#x8A00;&#x51FD;&#x6578;&#x3002;&#x65B0;&#x4EE3;&#x78BC;&#x91CD;&#x9EDE;&#x662F;&#x589E;&#x52A0;&#x4E86;bz2alloc&#x548C;bz2free&#x7684;&#x5169;&#x500B;&#x51FD;&#x6578;&#xFF0C;&#x7528;&#x65BC;bz_stream&#x5C0D;&#x8C61;&#x7A7A;&#x9593;&#x7684;&#x7533;&#x8ACB;&#x548C;&#x91CB;&#x653E;&#x64CD;&#x4F5C;&#x3002;&#x4E0B;&#x9762;&#x662F;&#x65B0;&#x4EE3;&#x78BC;&#x4E2D;&#x589E;&#x52A0;&#x7684;&#x8A3B;&#x91CB;&#xFF0C;&#x8AAC;&#x660E;&#x9019;&#x500B;&#x554F;&#x984C;&#xFF1A;</p>
<pre><code class="lang-Go"><span class="hljs-comment">// The version of this program that appeared in the first and second</span>
<span class="hljs-comment">// printings did not comply with the proposed rules for passing</span>
<span class="hljs-comment">// pointers between Go and C, described here:</span>
<span class="hljs-comment">// https://github.com/golang/proposal/blob/master/design/12416-cgo-pointers.md</span>
<span class="hljs-comment">//</span>
<span class="hljs-comment">// The rules forbid a C function like bz2compress from storing &apos;in&apos;</span>
<span class="hljs-comment">// and &apos;out&apos; (pointers to variables allocated by Go) into the Go</span>
<span class="hljs-comment">// variable &apos;s&apos;, even temporarily.</span>
<span class="hljs-comment">//</span>
<span class="hljs-comment">// The version below, which appears in the third printing, has been</span>
<span class="hljs-comment">// corrected. To comply with the rules, the bz_stream variable must</span>
<span class="hljs-comment">// be allocated by C code. We have introduced two C functions,</span>
<span class="hljs-comment">// bz2alloc and bz2free, to allocate and free instances of the</span>
<span class="hljs-comment">// bz_stream type. Also, we have changed bz2compress so that before</span>
<span class="hljs-comment">// it returns, it clears the fields of the bz_stream that contain</span>
<span class="hljs-comment">// pointers to Go variables.</span>
</code></pre>
<p>&#x8981;&#x4F7F;&#x7528;libbzip2&#xFF0C;&#x6211;&#x5011;&#x9700;&#x8981;&#x5148;&#x69CB;&#x5EFA;&#x4E00;&#x500B;bz_stream&#x7D50;&#x69CB;&#x9AD4;&#xFF0C;&#x7528;&#x65BC;&#x4FDD;&#x6301;&#x8F38;&#x5165;&#x548C;&#x8F38;&#x9F63;&#x7DE9;&#x5B58;&#x3002;&#x7136;&#x5F8C;&#x6709;&#x4E09;&#x500B;&#x51FD;&#x6578;&#xFF1A;BZ2_bzCompressInit&#x7528;&#x65BC;&#x521D;&#x59CB;&#x5316;&#x7DE9;&#x5B58;&#xFF0C;BZ2_bzCompress&#x7528;&#x65BC;&#x5C07;&#x8F38;&#x5165;&#x7DE9;&#x5B58;&#x7684;&#x6578;&#x64DA;&#x58D3;&#x7E2E;&#x5230;&#x8F38;&#x9F63;&#x7DE9;&#x5B58;&#xFF0C;BZ2_bzCompressEnd&#x7528;&#x65BC;&#x91CB;&#x653E;&#x4E0D;&#x9700;&#x8981;&#x7684;&#x7DE9;&#x5B58;&#x3002;&#xFF08;&#x76EE;&#x524D;&#x4E0D;&#x8981;&#x64D4;&#x5FC3;&#x5305;&#x7684;&#x5177;&#x9AD4;&#x7D50;&#x69CB;, &#x9019;&#x500B;&#x4F8B;&#x5B50;&#x7684;&#x76EE;&#x7684;&#x5C31;&#x662F;&#x6F14;&#x793A;&#x5404;&#x500B;&#x90E8;&#x5206;&#x5982;&#x4F55;&#x7D44;&#x5408;&#x5728;&#x4E00;&#x8D77;&#x7684;&#x3002;&#xFF09;</p>
<p>&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x5728;Go&#x4EE3;&#x78BC;&#x4E2D;&#x76F4;&#x63A5;&#x8ABF;&#x7528;BZ2_bzCompressInit&#x548C;BZ2_bzCompressEnd&#xFF0C;&#x4F46;&#x662F;&#x5C0D;&#x65BC;BZ2_bzCompress&#xFF0C;&#x6211;&#x5011;&#x5C07;&#x5B9A;&#x7FA9;&#x4E00;&#x500B;C&#x8A9E;&#x8A00;&#x7684;&#x5305;&#x88DD;&#x51FD;&#x6578;&#xFF0C;&#x7528;&#x5B83;&#x5B8C;&#x6210;&#x771E;&#x6B63;&#x7684;&#x5DE5;&#x4F5C;&#x3002;&#x4E0B;&#x9762;&#x662F;C&#x4EE3;&#x78BC;&#xFF0C;&#x5C0D;&#x61C9;&#x4E00;&#x500B;&#x7368;&#x7ACB;&#x7684;&#x6587;&#x4EF6;&#x3002;</p>
<pre><code class="lang-C">gopl.io/ch13/bzip
<span class="hljs-comment">/* This file is gopl.io/ch13/bzip/bzip2.c, */</span>
@@ -2052,10 +2068,11 @@
<span class="hljs-keyword">int</span> r = BZ2_bzCompress(s, action);
*inlen -= s-&gt;avail_in;
*outlen -= s-&gt;avail_out;
s-&gt;next_in = s-&gt;next_out = <span class="hljs-literal">NULL</span>;
<span class="hljs-keyword">return</span> r;
}
</code></pre>
<p>&#x73FE;&#x5728;&#x8B93;&#x6211;&#x5011;&#x8F49;&#x5230;Go&#x90E8;&#x5206;, &#x7B2C;&#x4E00;&#x90E8;&#x5206;&#x5982;&#x4E0B;&#x6240;&#x793A;. &#x5176;&#x4E2D; <code>import &quot;C&quot;</code> &#x7684;&#x8A9E;&#x53E5;&#x662F;&#x6BD4;&#x8F03;&#x7279;&#x522B;&#x7684;. &#x5176;&#x5BE6;&#x4F75;&#x6C92;&#x6709;&#x4E00;&#x500B;&#x53EB; <code>C</code> &#x7684;&#x5305;, &#x4F46;&#x662F;&#x9019;&#x884C;&#x8A9E;&#x53E5;&#x6703;&#x8B93;Go&#x69CB;&#x5EFA;&#x5728;&#x7DE8;&#x8B6F;&#x4E4B;&#x524D;&#x5148;&#x904B;&#x884C;cgo&#x5DE5;&#x5177;.</p>
<p>&#x73FE;&#x5728;&#x8B93;&#x6211;&#x5011;&#x8F49;&#x5230;Go&#x8A9E;&#x8A00;&#x90E8;&#x5206;&#xFF0C;&#x7B2C;&#x4E00;&#x90E8;&#x5206;&#x5982;&#x4E0B;&#x6240;&#x793A;&#x3002;&#x5176;&#x4E2D;<code>import &quot;C&quot;</code>&#x7684;&#x8A9E;&#x53E5;&#x662F;&#x6BD4;&#x8F03;&#x7279;&#x522B;&#x7684;&#x3002;&#x5176;&#x5BE6;&#x4F75;&#x6C92;&#x6709;&#x4E00;&#x500B;&#x53EB;C&#x7684;&#x5305;&#xFF0C;&#x4F46;&#x662F;&#x9019;&#x884C;&#x8A9E;&#x53E5;&#x6703;&#x8B93;Go&#x7DE8;&#x8B6F;&#x7A0B;&#x5E8F;&#x5728;&#x7DE8;&#x8B6F;&#x4E4B;&#x524D;&#x5148;&#x904B;&#x884C;cgo&#x5DE5;&#x5177;&#x3002;</p>
<pre><code class="lang-Go"><span class="hljs-comment">// Package bzip provides a writer that uses bzip2 compression (bzip.org).</span>
<span class="hljs-keyword">package</span> bzip
@@ -2063,8 +2080,11 @@
#cgo CFLAGS: -I/usr/include
#cgo LDFLAGS: -L/usr/lib -lbz2
#include &lt;bzlib.h&gt;
#include &lt;stdlib.h&gt;
bz_stream* bz2alloc() { return calloc(1, sizeof(bz_stream)); }
int bz2compress(bz_stream *s, int action,
char *in, unsigned *inlen, char *out, unsigned *outlen);
void bz2free(bz_stream* s) { free(s); }
*/</span>
<span class="hljs-keyword">import</span> <span class="hljs-string">&quot;C&quot;</span>
@@ -2081,18 +2101,40 @@ int bz2compress(bz_stream *s, int action,
<span class="hljs-comment">// NewWriter returns a writer for bzip2-compressed streams.</span>
<span class="hljs-keyword">func</span> NewWriter(out io.Writer) io.WriteCloser {
<span class="hljs-keyword">const</span> (
blockSize = <span class="hljs-number">9</span>
verbosity = <span class="hljs-number">0</span>
workFactor = <span class="hljs-number">30</span>
)
w := &amp;writer{w: out, stream: <span class="hljs-built_in">new</span>(C.bz_stream)}
<span class="hljs-keyword">const</span> blockSize = <span class="hljs-number">9</span>
<span class="hljs-keyword">const</span> verbosity = <span class="hljs-number">0</span>
<span class="hljs-keyword">const</span> workFactor = <span class="hljs-number">30</span>
w := &amp;writer{w: out, stream: C.bz2alloc()}
C.BZ2_bzCompressInit(w.stream, blockSize, verbosity, workFactor)
<span class="hljs-keyword">return</span> w
}
</code></pre>
<p>&#x5728;&#x5FAA;&#x74B0;&#x7684;&#x6BCF;&#x6B21;&#x8FED;&#x4EE3;&#x4E2D;, &#x5411;bz2compress&#x50B3;&#x5165;&#x6578;&#x64DA;&#x7684;&#x5730;&#x5740;&#x548C;&#x5269;&#x9918;&#x90E8;&#x5206;&#x7684;&#x9577;&#x5EA6;, &#x9084;&#x6709;&#x8F38;&#x9F63;&#x7DE9;&#x5B58; w.outbuf &#x7684;&#x5730;&#x5740;&#x548C;&#x5BB9;&#x91CF;. &#x9019;&#x5169;&#x500B;&#x9577;&#x5EA6;&#x4FE1;&#x606F;&#x901A;&#x904E;&#x5B83;&#x5011;&#x7684;&#x5730;&#x5740;&#x50B3;&#x5165;&#x800C;&#x4E0D;&#x662F;&#x503C;&#x50B3;&#x5165;, &#x56E0;&#x7232;bz2compress&#x51FD;&#x6578;&#x53EF;&#x80FD;&#x6703;&#x6839;&#x64DA;&#x5DF2;&#x7D93;&#x58D3;&#x7E2E;&#x7684;&#x6578;&#x64DA;&#x548C;&#x58D3;&#x7E2E;&#x5F8C;&#x6578;&#x64DA;&#x7684;&#x5927;&#x5C0F;&#x4F86;&#x66F4;&#x65B0;&#x9019;&#x5169;&#x500B;&#x503C;(&#x8B6F;&#x8A3B;: &#x9019;&#x91CC;&#x7684;&#x7528;&#x6CD5;&#x6709;&#x554F;&#x984C;, &#x52D8;&#x8AA4;&#x5DF2;&#x7D93;&#x63D0;&#x5230;. &#x5177;&#x9AD4;&#x8129;&#x8907;&#x7684;&#x65B9;&#x6CD5;&#x7A0D;&#x5F8C;&#x518D;&#x88DC;&#x5145;). &#x6BCF;&#x500B;&#x584A;&#x58D3;&#x7E2E;&#x5F8C;&#x7684;&#x6578;&#x64DA;&#x88AB;&#x5BEB;&#x5165;&#x5230;&#x5E95;&#x5C64;&#x7684; io.Writer.</p>
<p>Close &#x65B9;&#x6CD5;&#x548C; Write &#x65B9;&#x6CD5;&#x6709;&#x7740;&#x985E;&#x4F3C;&#x7684;&#x7D50;&#x69CB;, &#x901A;&#x904E;&#x4E00;&#x500B;&#x5FAA;&#x74B0;&#x5C07;&#x5269;&#x9918;&#x7684;&#x58D3;&#x7E2E;&#x6578;&#x64DA;&#x5237;&#x65B0;&#x5230;&#x8F38;&#x9F63;&#x7DE9;&#x5B58;.</p>
<p>&#x5728;&#x9810;&#x8655;&#x7406;&#x904E;&#x7A0B;&#x4E2D;&#xFF0C;cgo&#x5DE5;&#x5177;&#x7232;&#x751F;&#x6210;&#x4E00;&#x500B;&#x81E8;&#x6642;&#x5305;&#x7528;&#x65BC;&#x5305;&#x542B;&#x6240;&#x6709;&#x5728;Go&#x8A9E;&#x8A00;&#x4E2D;&#x8A2A;&#x554F;&#x7684;C&#x8A9E;&#x8A00;&#x7684;&#x51FD;&#x6578;&#x6216;&#x985E;&#x578B;&#x3002;&#x4F8B;&#x5982;C.bz_stream&#x548C;C.BZ2_bzCompressInit&#x3002;cgo&#x5DE5;&#x5177;&#x901A;&#x904E;&#x4EE5;&#x67D0;&#x7A2E;&#x7279;&#x6B8A;&#x7684;&#x65B9;&#x5F0F;&#x8ABF;&#x7528;&#x672C;&#x5730;&#x7684;C&#x7DE8;&#x8B6F;&#x5668;&#x4F86;&#x767C;&#x73FE;&#x5728;Go&#x6E90;&#x6587;&#x4EF6;&#x5C0E;&#x5165;&#x8072;&#x660E;&#x524D;&#x7684;&#x8A3B;&#x91CB;&#x4E2D;&#x5305;&#x542B;&#x7684;C&#x982D;&#x6587;&#x4EF6;&#x4E2D;&#x7684;&#x5167;&#x5BB9;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;<code>import &quot;C&quot;&#x8A9E;&#x53E5;&#x524D;&#x50C5;&#x6371;&#x7740;&#x7684;&#x8A3B;&#x91CB;&#x662F;&#x5C0D;&#x61C9;cgo&#x7684;&#x7279;&#x6B8A;&#x8A9E;&#x6CD5;&#xFF0C;&#x5C0D;&#x61C9;&#x5FC5;&#x8981;&#x7684;&#x69CB;&#x5EFA;&#x53C3;&#x6578;&#x9078;&#x9805;&#x548C;C&#x8A9E;&#x8A00;&#x4EE3;&#x78BC;</code>&#xFF09;&#x3002;</p>
<p>&#x5728;cgo&#x8A3B;&#x91CB;&#x4E2D;&#x9084;&#x53EF;&#x4EE5;&#x5305;&#x542B;#cgo&#x6307;&#x4EE4;&#xFF0C;&#x7528;&#x65BC;&#x7D66;C&#x8A9E;&#x8A00;&#x5DE5;&#x5177;&#x93C8;&#x6307;&#x5B9A;&#x7279;&#x6B8A;&#x7684;&#x53C3;&#x6578;&#x3002;&#x4F8B;&#x5982;CFLAGS&#x548C;LDFLAGS&#x5206;&#x522B;&#x5C0D;&#x61C9;&#x50B3;&#x7D66;C&#x8A9E;&#x8A00;&#x7DE8;&#x8B6F;&#x5668;&#x7684;&#x7DE8;&#x8B6F;&#x53C3;&#x6578;&#x548C;&#x93C8;&#x63A5;&#x5668;&#x53C3;&#x6578;&#xFF0C;&#x4F7F;&#x5B83;&#x5011;&#x53EF;&#x4EE5;&#x7279;&#x5B9A;&#x76EE;&#x9332;&#x627E;&#x5230;bzlib.h&#x982D;&#x6587;&#x4EF6;&#x548C;libbz2.a&#x5EAB;&#x6587;&#x4EF6;&#x3002;&#x9019;&#x500B;&#x4F8B;&#x5B50;&#x5047;&#x8A2D;&#x4F60;&#x5DF2;&#x7D93;&#x5728;/usr&#x76EE;&#x9332;&#x6210;&#x529F;&#x5B89;&#x88DD;&#x4E86;bzip2&#x5EAB;&#x3002;&#x5982;&#x679C;bzip2&#x5EAB;&#x662F;&#x5B89;&#x88DD;&#x5728;&#x4E0D;&#x540C;&#x7684;&#x4F4D;&#x7F6E;&#xFF0C;&#x4F60;&#x9700;&#x8981;&#x66F4;&#x65B0;&#x9019;&#x4E9B;&#x53C3;&#x6578;&#x3002;</p>
<p>NewWriter&#x51FD;&#x6578;&#x901A;&#x904E;&#x8ABF;&#x7528;C&#x8A9E;&#x8A00;&#x7684;BZ2_bzCompressInit&#x51FD;&#x6578;&#x4F86;&#x521D;&#x59CB;&#x5316;stream&#x4E2D;&#x7684;&#x7DE9;&#x5B58;&#x3002;&#x5728;writer&#x7D50;&#x69CB;&#x4E2D;&#x9084;&#x5305;&#x62EC;&#x4E86;&#x53E6;&#x4E00;&#x500B;buffer&#xFF0C;&#x7528;&#x65BC;&#x8F38;&#x9F63;&#x7DE9;&#x5B58;&#x3002;</p>
<p>&#x4E0B;&#x9762;&#x662F;Write&#x65B9;&#x6CD5;&#x7684;&#x5BE6;&#x73FE;&#xFF0C;&#x8FD4;&#x8FF4;&#x6210;&#x529F;&#x58D3;&#x7E2E;&#x6578;&#x64DA;&#x7684;&#x5927;&#x5C0F;&#xFF0C;&#x4E3B;&#x9AD4;&#x662F;&#x4E00;&#x500B;&#x5FAA;&#x74B0;&#x4E2D;&#x8ABF;&#x7528;C&#x8A9E;&#x8A00;&#x7684;bz2compress&#x51FD;&#x6578;&#x5BE6;&#x73FE;&#x7684;&#x3002;&#x5F9E;&#x4EE3;&#x78BC;&#x53EF;&#x4EE5;&#x770B;&#x5230;&#xFF0C;Go&#x7A0B;&#x5E8F;&#x53EF;&#x4EE5;&#x8A2A;&#x554F;C&#x8A9E;&#x8A00;&#x7684;bz_stream&#x3001;char&#x548C;uint&#x985E;&#x578B;&#xFF0C;&#x9084;&#x53EF;&#x4EE5;&#x8A2A;&#x554F;bz2compress&#x7B49;&#x51FD;&#x6578;&#xFF0C;&#x751A;&#x81F3;&#x53EF;&#x4EE5;&#x8A2A;&#x554F;C&#x8A9E;&#x8A00;&#x4E2D;&#x50CF;BZ_RUN&#x90A3;&#x6A23;&#x7684;&#x5B8F;&#x5B9A;&#x7FA9;&#xFF0C;&#x5168;&#x90E8;&#x90FD;&#x662F;&#x4EE5;C.x&#x8A9E;&#x6CD5;&#x8A2A;&#x554F;&#x3002;&#x5176;&#x4E2D;C.uint&#x985E;&#x578B;&#x548C;Go&#x8A9E;&#x8A00;&#x7684;uint&#x985E;&#x578B;&#x4F75;&#x4E0D;&#x76F8;&#x540C;&#xFF0C;&#x537D;&#x4F7F;&#x5B83;&#x5011;&#x5177;&#x6709;&#x76F8;&#x540C;&#x7684;&#x5927;&#x5C0F;&#x4E5F;&#x662F;&#x4E0D;&#x540C;&#x7684;&#x985E;&#x578B;&#x3002;</p>
<pre><code class="lang-Go"><span class="hljs-keyword">func</span> (w *writer) Write(data []<span class="hljs-typename">byte</span>) (<span class="hljs-typename">int</span>, error) {
<span class="hljs-keyword">if</span> w.stream == <span class="hljs-constant">nil</span> {
<span class="hljs-built_in">panic</span>(<span class="hljs-string">&quot;closed&quot;</span>)
}
<span class="hljs-keyword">var</span> total <span class="hljs-typename">int</span> <span class="hljs-comment">// uncompressed bytes written</span>
<span class="hljs-keyword">for</span> <span class="hljs-built_in">len</span>(data) &gt; <span class="hljs-number">0</span> {
inlen, outlen := C.<span class="hljs-typename">uint</span>(<span class="hljs-built_in">len</span>(data)), C.<span class="hljs-typename">uint</span>(<span class="hljs-built_in">cap</span>(w.outbuf))
C.bz2compress(w.stream, C.BZ_RUN,
(*C.char)(unsafe.Pointer(&amp;data[<span class="hljs-number">0</span>])), &amp;inlen,
(*C.char)(unsafe.Pointer(&amp;w.outbuf)), &amp;outlen)
total += <span class="hljs-typename">int</span>(inlen)
data = data[inlen:]
<span class="hljs-keyword">if</span> _, err := w.w.Write(w.outbuf[:outlen]); err != <span class="hljs-constant">nil</span> {
<span class="hljs-keyword">return</span> total, err
}
}
<span class="hljs-keyword">return</span> total, <span class="hljs-constant">nil</span>
}
</code></pre>
<p>&#x5728;&#x5FAA;&#x74B0;&#x7684;&#x6BCF;&#x6B21;&#x8FED;&#x4EE3;&#x4E2D;&#xFF0C;&#x5411;bz2compress&#x50B3;&#x5165;&#x6578;&#x64DA;&#x7684;&#x5730;&#x5740;&#x548C;&#x5269;&#x9918;&#x90E8;&#x5206;&#x7684;&#x9577;&#x5EA6;&#xFF0C;&#x9084;&#x6709;&#x8F38;&#x9F63;&#x7DE9;&#x5B58;w.outbuf&#x7684;&#x5730;&#x5740;&#x548C;&#x5BB9;&#x91CF;&#x3002;&#x9019;&#x5169;&#x500B;&#x9577;&#x5EA6;&#x4FE1;&#x606F;&#x901A;&#x904E;&#x5B83;&#x5011;&#x7684;&#x5730;&#x5740;&#x50B3;&#x5165;&#x800C;&#x4E0D;&#x662F;&#x503C;&#x50B3;&#x5165;&#xFF0C;&#x56E0;&#x7232;bz2compress&#x51FD;&#x6578;&#x53EF;&#x80FD;&#x6703;&#x6839;&#x64DA;&#x5DF2;&#x7D93;&#x58D3;&#x7E2E;&#x7684;&#x6578;&#x64DA;&#x548C;&#x58D3;&#x7E2E;&#x5F8C;&#x6578;&#x64DA;&#x7684;&#x5927;&#x5C0F;&#x4F86;&#x66F4;&#x65B0;&#x9019;&#x5169;&#x500B;&#x503C;&#x3002;&#x6BCF;&#x500B;&#x584A;&#x58D3;&#x7E2E;&#x5F8C;&#x7684;&#x6578;&#x64DA;&#x88AB;&#x5BEB;&#x5165;&#x5230;&#x5E95;&#x5C64;&#x7684;io.Writer&#x3002;</p>
<p>Close&#x65B9;&#x6CD5;&#x548C;Write&#x65B9;&#x6CD5;&#x6709;&#x7740;&#x985E;&#x4F3C;&#x7684;&#x7D50;&#x69CB;&#xFF0C;&#x901A;&#x904E;&#x4E00;&#x500B;&#x5FAA;&#x74B0;&#x5C07;&#x5269;&#x9918;&#x7684;&#x58D3;&#x7E2E;&#x6578;&#x64DA;&#x5237;&#x65B0;&#x5230;&#x8F38;&#x9F63;&#x7DE9;&#x5B58;&#x3002;</p>
<pre><code class="lang-Go"><span class="hljs-comment">// Close flushes the compressed data and closes the stream.</span>
<span class="hljs-comment">// It does not close the underlying io.Writer.</span>
<span class="hljs-keyword">func</span> (w *writer) Close() error {
@@ -2101,6 +2143,7 @@ int bz2compress(bz_stream *s, int action,
}
<span class="hljs-keyword">defer</span> <span class="hljs-keyword">func</span>() {
C.BZ2_bzCompressEnd(w.stream)
C.bz2free(w.stream)
w.stream = <span class="hljs-constant">nil</span>
}()
<span class="hljs-keyword">for</span> {
@@ -2116,9 +2159,9 @@ int bz2compress(bz_stream *s, int action,
}
}
</code></pre>
<p>&#x58D3;&#x7E2E;&#x5B8C;&#x6210;&#x5F8C;, Close &#x7528;&#x4E86; defer &#x78BA;&#x4FDD;&#x51FD;&#x6578;&#x9000;&#x9F63;&#x524D;&#x8ABF;&#x7528; C.BZ2_bzCompressEnd &#x91CB;&#x653E;&#x8F38;&#x5165;&#x548C;&#x8F38;&#x9F63;&#x6D41;&#x7684;&#x7DE9;&#x5B58;. &#x6B64;&#x523B; <code>w.stream</code> &#x6307;&#x91DD;&#x5C07;&#x4E0D;&#x5728;&#x6709;&#x6548;, &#x6211;&#x5011;&#x5C07;&#x5B83;&#x8A2D;&#x7F6E;&#x7232; nil &#x4EE5;&#x4FDD;&#x8B49;&#x5B89;&#x5168;, &#x7136;&#x5F8C;&#x5728;&#x6BCF;&#x500B;&#x65B9;&#x6CD5;&#x4E2D;&#x589E;&#x52A0; nil &#x6AA2;&#x6E2C;, &#x4EE5;&#x9632;&#x6B62;&#x7528;&#x6236;&#x5728;&#x95DC;&#x9589;&#x5F8C;&#x4F9D;&#x7136;&#x932F;&#x8AA4;&#x4F7F;&#x7528;&#x76F8;&#x95DC;&#x65B9;&#x6CD5;.</p>
<p>&#x4E0D;&#x50C5;&#x50C5;&#x5BEB;&#x662F;&#x975E;&#x4F75;&#x767C;&#x5B89;&#x5168;&#x7684;, &#x751A;&#x81F3;&#x4F75;&#x767C;&#x8ABF;&#x7528; Close &#x548C; Write &#x4E5F;&#x53EF;&#x80FD;&#x5C0E;&#x81F4;C&#x4EE3;&#x78BC;&#x7684;&#x5D29;&#x6F70;. &#x8129;&#x8907;&#x9019;&#x500B;&#x554F;&#x984C;&#x662F; &#x7DF4;&#x7FD2;13.3 &#x7684;&#x5167;&#x5BB9;.</p>
<p>&#x4E0B;&#x9762;&#x7684;bzipper&#x7A0B;&#x5E8F;&#x662F;&#x4F7F;&#x7528;&#x6211;&#x5011;&#x81EA;&#x5DF1;&#x5305;&#x5BE6;&#x73FE;&#x7684;bzip2&#x58D3;&#x7E2E;&#x547D;&#x4EE4;. &#x5B83;&#x7684;&#x884C;&#x7232;&#x548C;&#x8A31;&#x591A;Unix&#x7E6B;&#x7D71;&#x7684; bzip2 &#x547D;&#x4EE4;&#x985E;&#x4F3C;.</p>
<p>&#x58D3;&#x7E2E;&#x5B8C;&#x6210;&#x5F8C;&#xFF0C;Close&#x65B9;&#x6CD5;&#x7528;&#x4E86;defer&#x51FD;&#x6578;&#x78BA;&#x4FDD;&#x51FD;&#x6578;&#x9000;&#x9F63;&#x524D;&#x8ABF;&#x7528;C.BZ2_bzCompressEnd&#x548C;C.bz2free&#x91CB;&#x653E;&#x76F8;&#x95DC;&#x7684;C&#x8CC7;&#x6E90;&#x3002;&#x6B64;&#x523B;w.stream&#x6307;&#x91DD;&#x5C07;&#x4E0D;&#x5728;&#x6709;&#x6548;&#xFF0C;&#x6211;&#x5011;&#x5C07;&#x5B83;&#x8A2D;&#x7F6E;&#x7232;nil&#x4EE5;&#x4FDD;&#x8B49;&#x5B89;&#x5168;&#xFF0C;&#x7136;&#x5F8C;&#x5728;&#x6BCF;&#x500B;&#x65B9;&#x6CD5;&#x4E2D;&#x589E;&#x52A0;&#x4E86;nil&#x6AA2;&#x6E2C;&#xFF0C;&#x4EE5;&#x9632;&#x6B62;&#x7528;&#x6236;&#x5728;&#x95DC;&#x9589;&#x5F8C;&#x4F9D;&#x7136;&#x932F;&#x8AA4;&#x4F7F;&#x7528;&#x76F8;&#x95DC;&#x65B9;&#x6CD5;&#x3002;</p>
<p>&#x4E0A;&#x9762;&#x7684;&#x5BE6;&#x73FE;&#x4E2D;&#xFF0C;&#x4E0D;&#x50C5;&#x50C5;&#x5BEB;&#x662F;&#x975E;&#x4F75;&#x767C;&#x5B89;&#x5168;&#x7684;&#xFF0C;&#x751A;&#x81F3;&#x4F75;&#x767C;&#x8ABF;&#x7528;Close&#x548C;Write&#x65B9;&#x6CD5;&#x4E5F;&#x53EF;&#x80FD;&#x5C0E;&#x81F4;&#x7A0B;&#x5E8F;&#x7684;&#x7684;&#x5D29;&#x6F70;&#x3002;&#x8129;&#x8907;&#x9019;&#x500B;&#x554F;&#x984C;&#x662F;&#x7DF4;&#x7FD2;13.3&#x7684;&#x5167;&#x5BB9;&#x3002;</p>
<p>&#x4E0B;&#x9762;&#x7684;bzipper&#x7A0B;&#x5E8F;&#xFF0C;&#x4F7F;&#x7528;&#x6211;&#x5011;&#x81EA;&#x5DF1;&#x5305;&#x5BE6;&#x73FE;&#x7684;bzip2&#x58D3;&#x7E2E;&#x547D;&#x4EE4;&#x3002;&#x5B83;&#x7684;&#x884C;&#x7232;&#x548C;&#x8A31;&#x591A;Unix&#x7E6B;&#x7D71;&#x7684;bzip2&#x547D;&#x4EE4;&#x985E;&#x4F3C;&#x3002;</p>
<pre><code class="lang-Go">gopl.io/ch13/bzipper
<span class="hljs-comment">// Bzipper reads input, bzip2-compresses it, and writes it out.</span>
@@ -2141,7 +2184,7 @@ int bz2compress(bz_stream *s, int action,
}
}
</code></pre>
<p>&#x5728;&#x4E0A;&#x9762;&#x7684;&#x5834;&#x666F;&#x4E2D;, &#x6211;&#x5011;&#x4F7F;&#x7528; bzipper &#x58D3;&#x7E2E;&#x4E86; /usr/share/dict/words &#x7E6B;&#x7D71;&#x81EA;&#x5E36;&#x7684;&#x8A5E;&#x5178;, &#x5F9E; 938,848 &#x5B57;&#x7BC0;&#x58D3;&#x7E2E;&#x5230; 335,405 &#x5B57;&#x7BC0;, &#x5927;&#x65BC;&#x662F;&#x539F;&#x59CB;&#x5927;&#x5C0F;&#x7684;&#x4E09;&#x5206;&#x4E4B;&#x4E00;. &#x7136;&#x5F8C;&#x4F7F;&#x7528;&#x7E6B;&#x7D71;&#x81EA;&#x5E36;&#x7684;bunzip2&#x547D;&#x4EE4;&#x9032;&#x884C;&#x89E3;&#x58D3;. &#x58D3;&#x7E2E;&#x524D;&#x5F8C;&#x6587;&#x4EF6;&#x7684;SHA256&#x54C8;&#x5E0C;&#x78BC;&#x662F;&#x76F8;&#x540C;&#x4E86;, &#x9019;&#x4E5F;&#x8AAC;&#x660E;&#x4E86;&#x6211;&#x5011;&#x7684;&#x58D3;&#x7E2E;&#x5DE5;&#x5177;&#x662F;&#x53EF;&#x7528;&#x7684;. (&#x5982;&#x679C;&#x4F60;&#x7684;&#x7E6B;&#x7D71;&#x6C92;&#x6709;sha256sum&#x547D;&#x4EE4;, &#x90A3;&#x9EBD;&#x8ACB;&#x5148;&#x6309;&#x7167; &#x7DF4;&#x7FD2;4.2 &#x5BE6;&#x73FE;&#x4E00;&#x500B;&#x985E;&#x4F3C;&#x7684;&#x5DE5;&#x5177;)</p>
<p>&#x5728;&#x4E0A;&#x9762;&#x7684;&#x5834;&#x666F;&#x4E2D;&#xFF0C;&#x6211;&#x5011;&#x4F7F;&#x7528;bzipper&#x58D3;&#x7E2E;&#x4E86;/usr/share/dict/words&#x7E6B;&#x7D71;&#x81EA;&#x5E36;&#x7684;&#x8A5E;&#x5178;&#xFF0C;&#x5F9E;938,848&#x5B57;&#x7BC0;&#x58D3;&#x7E2E;&#x5230;335,405&#x5B57;&#x7BC0;&#x3002;&#x5927;&#x7D04;&#x662F;&#x539F;&#x59CB;&#x6578;&#x64DA;&#x5927;&#x5C0F;&#x7684;&#x4E09;&#x5206;&#x4E4B;&#x4E00;&#x3002;&#x7136;&#x5F8C;&#x4F7F;&#x7528;&#x7E6B;&#x7D71;&#x81EA;&#x5E36;&#x7684;bunzip2&#x547D;&#x4EE4;&#x9032;&#x884C;&#x89E3;&#x58D3;&#x3002;&#x58D3;&#x7E2E;&#x524D;&#x5F8C;&#x6587;&#x4EF6;&#x7684;SHA256&#x54C8;&#x5E0C;&#x78BC;&#x662F;&#x76F8;&#x540C;&#x4E86;&#xFF0C;&#x9019;&#x4E5F;&#x8AAC;&#x660E;&#x4E86;&#x6211;&#x5011;&#x7684;&#x58D3;&#x7E2E;&#x5DE5;&#x5177;&#x662F;&#x6B63;&#x78BA;&#x7684;&#x3002;&#xFF08;&#x5982;&#x679C;&#x4F60;&#x7684;&#x7E6B;&#x7D71;&#x6C92;&#x6709;sha256sum&#x547D;&#x4EE4;&#xFF0C;&#x90A3;&#x9EBD;&#x8ACB;&#x5148;&#x6309;&#x7167;&#x7DF4;&#x7FD2;4.2&#x5BE6;&#x73FE;&#x4E00;&#x500B;&#x985E;&#x4F3C;&#x7684;&#x5DE5;&#x5177;&#xFF09;</p>
<pre><code>$ go build gopl.io/ch13/bzipper
$ wc -c &lt; /usr/share/dict/words
938848
@@ -2151,9 +2194,9 @@ $ ./bzipper &lt; /usr/share/dict/words | wc -c
335405
$ ./bzipper &lt; /usr/share/dict/words | bunzip2 | sha256sum
126a4ef38493313edc50b86f90dfdaf7c59ec6c948451eac228f2f3a8ab1a6ed -
</code></pre><p>&#x6211;&#x5011;&#x6F14;&#x793A;&#x4E86;&#x5C07;&#x4E00;&#x500B;C&#x5EAB;&#x93C8;&#x63A5;&#x5230;Go&#x7A0B;&#x5E8F;. &#x76F8;&#x53CD;, &#x5C07;Go&#x7DE8;&#x8B6F;&#x7232;&#x975C;&#x614B;&#x5EAB;&#x7136;&#x5F8C;&#x93C8;&#x63A5;&#x5230;C&#x7A0B;&#x5E8F;, &#x6216;&#x8005;&#x5C07;Go&#x7DE8;&#x8B6F;&#x7232;&#x52D5;&#x614B;&#x5EAB;&#x7136;&#x5F8C;&#x5728;C&#x7A0B;&#x5E8F;&#x4E2D;&#x52D5;&#x614B;&#x52A0;&#x8F09;&#x4E5F;&#x90FD;&#x662F;&#x53EF;&#x884C;&#x7684;. &#x9019;&#x91CC;&#x6211;&#x5011;&#x96BB;&#x5C55;&#x793A;&#x7684;cgo&#x5F88;&#x5C0F;&#x7684;&#x4E00;&#x4E9B;&#x65B9;&#x9762;, &#x66F4;&#x591A;&#x7684;&#x95DC;&#x65BC;&#x5167;&#x5B58;&#x7BA1;&#x7406;, &#x6307;&#x91DD;, &#x8FF4;&#x8ABF;&#x51FD;&#x6578;, &#x4FE1;&#x865F;&#x8655;&#x7406;, &#x5B57;&#x7B26;&#x4E32;, errno&#x8655;&#x7406;, &#x7D42;&#x7D50;&#x5668;, &#x4EE5;&#x53CA; goroutines &#x548C;&#x7E6B;&#x7D71;&#x7DDA;&#x7A0B;&#x7684;&#x95DC;&#x7E6B;&#x7B49;, &#x6709;&#x5F88;&#x591A;&#x7D30;&#x7BC0;&#x53EF;&#x4EE5;&#x8A0E;&#x8AD6;. &#x7279;&#x522B;&#x662F;&#x5982;&#x4F55;&#x5C07;Go&#x7684;&#x6307;&#x91DD;&#x50B3;&#x5165;C&#x51FD;&#x6578;&#x7684;&#x898F;&#x5247;&#x4E5F;&#x662F;&#x7570;&#x5E38;&#x8907;&#x96DC;&#x7684;, &#x90E8;&#x5206;&#x7684;&#x539F;&#x56E0;&#x5728; 13.2&#x7BC0; &#x6709;&#x8A0E;&#x8AD6;&#x5230;, &#x4F46;&#x662F;&#x5728;Go1.5&#x4E2D;&#x9084;&#x6C92;&#x6709;&#x88AB;&#x660E;&#x78BA;. &#x5982;&#x679C;&#x8981;&#x9032;&#x4E00;&#x6B65;&#x95B2;&#x8B80;, &#x53EF;&#x4EE5;&#x5F9E; <a href="https://golang.org/cmd/cgo" target="_blank">https://golang.org/cmd/cgo</a> &#x958B;&#x59CB;.</p>
<p><strong>&#x7DF4;&#x7FD2;13.3:</strong> &#x4F7F;&#x7528; sync.Mutex &#x4EE5;&#x4FDD;&#x8B49; bzip2.writer &#x5728;&#x591A;&#x500B; goroutines &#x4E2D;&#x88AB;&#x4F75;&#x767C;&#x8ABF;&#x7528;&#x662F;&#x5B89;&#x5168;&#x7684;.</p>
<p><strong>&#x7DF4;&#x7FD2;13.4:</strong> &#x56E0;&#x7232;C&#x5EAB;&#x4F9D;&#x8CF4;&#x7684;&#x9650;&#x88FD;. &#x4F7F;&#x7528; <code>os/exec</code> &#x5305;&#x555F;&#x52D5; <code>/bin/bzip2</code> &#x547D;&#x4EE4;&#x4F5C;&#x7232;&#x4E00;&#x500B;&#x5B50;&#x9032;&#x7A0B;, &#x63D0;&#x4F9B;&#x4E00;&#x500B;&#x7D14;Go&#x7684; bzip.NewWriter &#x7684;&#x66FF;&#x4EE3;&#x5BE6;&#x73FE;.</p>
</code></pre><p>&#x6211;&#x5011;&#x6F14;&#x793A;&#x4E86;&#x5982;&#x4F55;&#x5C07;&#x4E00;&#x500B;C&#x8A9E;&#x8A00;&#x5EAB;&#x93C8;&#x63A5;&#x5230;Go&#x8A9E;&#x8A00;&#x7A0B;&#x5E8F;&#x3002;&#x76F8;&#x53CD;, &#x5C07;Go&#x7DE8;&#x8B6F;&#x7232;&#x975C;&#x614B;&#x5EAB;&#x7136;&#x5F8C;&#x93C8;&#x63A5;&#x5230;C&#x7A0B;&#x5E8F;&#xFF0C;&#x6216;&#x8005;&#x5C07;Go&#x7A0B;&#x5E8F;&#x7DE8;&#x8B6F;&#x7232;&#x52D5;&#x614B;&#x5EAB;&#x7136;&#x5F8C;&#x5728;C&#x7A0B;&#x5E8F;&#x4E2D;&#x52D5;&#x614B;&#x52A0;&#x8F09;&#x4E5F;&#x90FD;&#x662F;&#x53EF;&#x884C;&#x7684;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;&#x5728;Go1.5&#x4E2D;&#xFF0C;Windows&#x7E6B;&#x7D71;&#x7684;Go&#x8A9E;&#x8A00;&#x5BE6;&#x73FE;&#x4F75;&#x4E0D;&#x652F;&#x6301;&#x751F;&#x6210;C&#x8A9E;&#x8A00;&#x52D5;&#x614B;&#x5EAB;&#x6216;&#x975C;&#x614B;&#x5EAB;&#x7684;&#x7279;&#x6027;&#x3002;&#x4E0D;&#x904E;&#x597D;&#x6D88;&#x606F;&#x662F;&#xFF0C;&#x76EE;&#x524D;&#x5DF2;&#x7D93;&#x6709;&#x4EBA;&#x5728;&#x5690;&#x8A66;&#x89E3;&#x6C7A;&#x9019;&#x500B;&#x554F;&#x984C;&#xFF0C;&#x5177;&#x9AD4;&#x8ACB;&#x8A2A;&#x554F; <a href="https://github.com/golang/go/issues/11058" target="_blank">Issue11058</a> &#xFF09;&#x3002;&#x9019;&#x91CC;&#x6211;&#x5011;&#x96BB;&#x5C55;&#x793A;&#x7684;cgo&#x5F88;&#x5C0F;&#x7684;&#x4E00;&#x4E9B;&#x65B9;&#x9762;&#xFF0C;&#x66F4;&#x591A;&#x7684;&#x95DC;&#x65BC;&#x5167;&#x5B58;&#x7BA1;&#x7406;&#x3001;&#x6307;&#x91DD;&#x3001;&#x8FF4;&#x8ABF;&#x51FD;&#x6578;&#x3001;&#x4E2D;&#x65B7;&#x4FE1;&#x865F;&#x8655;&#x7406;&#x3001;&#x5B57;&#x7B26;&#x4E32;&#x3001;errno&#x8655;&#x7406;&#x3001;&#x7D42;&#x7D50;&#x5668;&#xFF0C;&#x4EE5;&#x53CA;goroutines&#x548C;&#x7E6B;&#x7D71;&#x7DDA;&#x7A0B;&#x7684;&#x95DC;&#x7E6B;&#x7B49;&#xFF0C;&#x6709;&#x5F88;&#x591A;&#x7D30;&#x7BC0;&#x53EF;&#x4EE5;&#x8A0E;&#x8AD6;&#x3002;&#x7279;&#x522B;&#x662F;&#x5982;&#x4F55;&#x5C07;Go&#x8A9E;&#x8A00;&#x7684;&#x6307;&#x91DD;&#x50B3;&#x5165;C&#x51FD;&#x6578;&#x7684;&#x898F;&#x5247;&#x4E5F;&#x662F;&#x7570;&#x5E38;&#x8907;&#x96DC;&#x7684;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;&#x7C21;&#x55AE;&#x4F86;&#x8AAC;&#xFF0C;&#x8981;&#x50B3;&#x5165;C&#x51FD;&#x6578;&#x7684;Go&#x6307;&#x91DD;&#x6307;&#x5411;&#x7684;&#x6578;&#x64DA;&#x672C;&#x8EAB;&#x4E0D;&#x80FD;&#x5305;&#x542B;&#x6307;&#x91DD;&#x6216;&#x5176;&#x4ED6;&#x5F15;&#x7528;&#x985E;&#x578B;&#xFF1B;&#x4F75;&#x4E14;C&#x51FD;&#x6578;&#x5728;&#x8FD4;&#x8FF4;&#x5F8C;&#x4E0D;&#x80FD;&#x7E7C;&#x7E8C;&#x6301;&#x6709;Go&#x6307;&#x91DD;&#xFF1B;&#x4F75;&#x4E14;&#x5728;C&#x51FD;&#x6578;&#x8FD4;&#x8FF4;&#x4E4B;&#x524D;&#xFF0C;Go&#x6307;&#x91DD;&#x662F;&#x88AB;&#x9396;&#x5B9A;&#x7684;&#xFF0C;&#x4E0D;&#x80FD;&#x5C0E;&#x81F4;&#x5C0D;&#x61C9;&#x6307;&#x91DD;&#x6578;&#x64DA;&#x88AB;&#x79FB;&#x52D5;&#x6216;&#x68E7;&#x7684;&#x8ABF;&#x6574;&#xFF09;&#xFF0C;&#x90E8;&#x5206;&#x7684;&#x539F;&#x56E0;&#x5728;13.2&#x7BC0;&#x6709;&#x8A0E;&#x8AD6;&#x5230;&#xFF0C;&#x4F46;&#x662F;&#x5728;Go1.5&#x4E2D;&#x9084;&#x6C92;&#x6709;&#x88AB;&#x660E;&#x78BA;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;Go1.6&#x5C07;&#x6703;&#x660E;&#x78BA;cgo&#x4E2D;&#x7684;&#x6307;&#x91DD;&#x4F7F;&#x7528;&#x898F;&#x5247;&#xFF09;&#x3002;&#x5982;&#x679C;&#x8981;&#x9032;&#x4E00;&#x6B65;&#x95B2;&#x8B80;&#xFF0C;&#x53EF;&#x4EE5;&#x5F9E; <a href="https://golang.org/cmd/cgo" target="_blank">https://golang.org/cmd/cgo</a> &#x958B;&#x59CB;&#x3002;</p>
<p><strong>&#x7DF4;&#x7FD2; 13.3&#xFF1A;</strong> &#x4F7F;&#x7528;sync.Mutex&#x4EE5;&#x4FDD;&#x8B49;bzip2.writer&#x5728;&#x591A;&#x500B;goroutines&#x4E2D;&#x88AB;&#x4F75;&#x767C;&#x8ABF;&#x7528;&#x662F;&#x5B89;&#x5168;&#x7684;&#x3002;</p>
<p><strong>&#x7DF4;&#x7FD2; 13.4&#xFF1A;</strong> &#x56E0;&#x7232;C&#x5EAB;&#x4F9D;&#x8CF4;&#x7684;&#x9650;&#x88FD;&#x3002; &#x4F7F;&#x7528;os/exec&#x5305;&#x555F;&#x52D5;/bin/bzip2&#x547D;&#x4EE4;&#x4F5C;&#x7232;&#x4E00;&#x500B;&#x5B50;&#x9032;&#x7A0B;&#xFF0C;&#x63D0;&#x4F9B;&#x4E00;&#x500B;&#x7D14;Go&#x7684;bzip.NewWriter&#x7684;&#x66FF;&#x4EE3;&#x5BE6;&#x73FE;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;&#x96D6;&#x7136;&#x662F;&#x7D14;Go&#x5BE6;&#x73FE;&#xFF0C;&#x4F46;&#x662F;&#x904B;&#x884C;&#x6642;&#x5C07;&#x4F9D;&#x8CF4;/bin/bzip2&#x76EE;&#x9332;&#xFF0C;&#x5176;&#x4ED6;&#x64CD;&#x4F5C;&#x7E6B;&#x7D71;&#x53EF;&#x80FD;&#x7121;&#x6CD5;&#x904B;&#x884C;&#xFF09;&#x3002;</p>
</section>

View File

@@ -37,7 +37,7 @@
<link rel="next" href="../errata.html" />
<link rel="next" href="../CONTRIBUTORS.html" />
<link rel="prev" href="../ch13/ch13-04.html" />
@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="13.5" data-chapter-title="幾點忠告" data-filepath="ch13/ch13-05.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="13.5" data-chapter-title="幾點忠告" data-filepath="ch13/ch13-05.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>
@@ -2024,11 +2024,11 @@
<section class="normal" id="section-">
<h2 id="135-&#x5E7E;&#x9EDE;&#x5FE0;&#x544A;">13.5. &#x5E7E;&#x9EDE;&#x5FE0;&#x544A;</h2>
<p>&#x6211;&#x5011;&#x5728;&#x524D;&#x4E00;&#x7AE0;&#x7D50;&#x5C3E;&#x7684;&#x6642;&#x5019;, &#x6211;&#x5011;&#x8B66;&#x544A;&#x8981;&#x8B39;&#x614E;&#x4F7F;&#x7528;&#x53CD;&#x5C04;. &#x90A3;&#x4E9B;&#x8B66;&#x544A;&#x540C;&#x6A23;&#x9069;&#x7528;&#x65BC;&#x672C;&#x7AE0;&#x7684; unsafe &#x5305;.</p>
<p>&#x9AD8;&#x7D1A;&#x8A9E;&#x8A00;&#x4F7F;&#x5F97;&#x7A0B;&#x5E8F;&#x54E1;&#x4E0D;&#x7528;&#x5728;&#x95DC;&#x7E6B;&#x771E;&#x6B63;&#x904B;&#x884C;&#x7A0B;&#x5E8F;&#x7684;&#x6307;&#x4EE4;&#x7D30;&#x7BC0;, &#x540C;&#x6642;&#x4E5F;&#x4E0D;&#x518D;&#x9700;&#x8981;&#x95DC;&#x8A3B;&#x8A31;&#x591A;&#x5982;&#x5167;&#x90E8;&#x5E03;&#x5C40;&#x4E4B;&#x985E;&#x7684;&#x7121;&#x95DC;&#x5BE6;&#x73FE;&#x7D30;&#x7BC0;. &#x56E0;&#x7232;&#x9019;&#x500B;&#x7D76;&#x7DE3;&#x7684;&#x62BD;&#x8C61;&#x5C64;, &#x6211;&#x5011;&#x53EF;&#x4EE5;&#x7DE8;&#x5BEB;&#x5B89;&#x5168;&#x5065;&#x58EF;&#x7684;, &#x4F75;&#x4E14;&#x53EF;&#x4EE5;&#x904B;&#x884C;&#x5728;&#x4E0D;&#x540C;&#x64CD;&#x4F5C;&#x7E6B;&#x7D71;&#x4E0A;&#x7684;&#x5177;&#x6709;&#x9AD8;&#x5EA6;&#x53EF;&#x79FB;&#x690D;&#x6027;&#x7684;&#x7A0B;&#x5E8F;.</p>
<p>&#x4F46;&#x662F; unsafe &#x5305;, &#x8B93;&#x7A0B;&#x5E8F;&#x54E1;&#x53EF;&#x4EE5;&#x900F;&#x904E;&#x9019;&#x500B;&#x7D76;&#x7DE3;&#x7684;&#x62BD;&#x8C61;&#x5C64;&#x4F7F;&#x7528;&#x4F7F;&#x7528;&#x4E00;&#x4E9B;&#x5FC5;&#x8981;&#x7684;&#x529F;&#x80FD;, &#x6216;&#x8005;&#x662F;&#x7232;&#x4E86;&#x66F4;&#x9AD8;&#x7684;&#x6027;&#x80FD;. &#x4EE3;&#x50F9;&#x5C31;&#x662F;&#x72A7;&#x7272;&#x4E86;&#x53EF;&#x79FB;&#x690D;&#x6027;&#x548C;&#x7A0B;&#x5E8F;&#x5B89;&#x5168;, &#x56E0;&#x6B64;&#x4F7F;&#x7528; unsafe &#x662F;&#x4E00;&#x500B;&#x5371;&#x96AA;&#x7684;&#x884C;&#x7232;. &#x6211;&#x5011;&#x5C0D;&#x4F55;&#x6642;&#x4EE5;&#x53CA;&#x5982;&#x4F55;&#x4F7F;&#x7528;unsafe&#x5305;&#x7684;&#x5EFA;&#x8B70;&#x548C;&#x6211;&#x5011;&#x5728;11.5&#x7BC0;&#x63D0;&#x5230;&#x7684;Knuth&#x5C0D;&#x904E;&#x65E9;&#x512A;&#x5316;&#x7684;&#x5EFA;&#x8B70;&#x985E;&#x4F3C;. &#x5927;&#x591A;&#x6578;Go&#x7A0B;&#x5E8F;&#x54E1;&#x53EF;&#x80FD;&#x6C38;&#x9060;&#x4E0D;&#x6703;&#x9700;&#x8981;&#x76F4;&#x63A5;&#x4F7F;&#x7528;unsafe&#x5305;. &#x7576;&#x7136;, &#x6C38;&#x9060;&#x90FD;&#x6703;&#x6709;&#x4E00;&#x4E9B;&#x7528; unsafe &#x5305;&#x5BE6;&#x73FE;&#x6703;&#x66F4;&#x7C21;&#x55AE;&#x7684;&#x5834;&#x666F;. &#x5982;&#x679C;&#x78BA;&#x5BE6;&#x8A8D;&#x7232;&#x4F7F;&#x7528; unsafe &#x5305;&#x662F;&#x6700;&#x7406;&#x60F3;&#x7684;&#x65B9;&#x5F0F;, &#x90A3;&#x9EBD;&#x61C9;&#x8A72;&#x76E1;&#x53EF;&#x80FD;&#x5C07;&#x5B83;&#x9650;&#x88FD;&#x8F03;&#x5C0F;&#x7684;&#x8303;&#x570D;, &#x90A3;&#x6A23;&#x5176;&#x4ED6;&#x4EE3;&#x78BC;&#x5FFD;&#x7565;unsafe&#x7684;&#x5F71;&#x97FF;.</p>
<p>&#x73FE;&#x5728;, &#x628A;&#x6700;&#x5F8C;&#x5169;&#x7AE0;&#x62CB;&#x5165;&#x8166;&#x5F8C;&#x5427;. &#x7DE8;&#x5BEB;&#x4E00;&#x4E9B;&#x5BE6;&#x5728;&#x7684;&#x61C9;&#x7528;. &#x9060;&#x96E2;reflect&#x7684;unsafe&#x5305;, &#x9664;&#x975E;&#x4F60;&#x78BA;&#x5BE6;&#x9700;&#x8981;&#x5B83;&#x5011;.</p>
<p>&#x7528;Go&#x5FEB;&#x6A02;&#x5730;&#x7DE8;&#x7A0B;. &#x6211;&#x5011;&#x5E0C;&#x671B;&#x4F60;&#x80FD;&#x50CF;&#x6211;&#x5011;&#x4E00;&#x6A23;&#x559C;&#x6B61;Go&#x8A9E;&#x8A00;.</p>
<p>&#x6211;&#x5011;&#x5728;&#x524D;&#x4E00;&#x7AE0;&#x7D50;&#x5C3E;&#x7684;&#x6642;&#x5019;&#xFF0C;&#x6211;&#x5011;&#x8B66;&#x544A;&#x8981;&#x8B39;&#x614E;&#x4F7F;&#x7528;reflect&#x5305;&#x3002;&#x90A3;&#x4E9B;&#x8B66;&#x544A;&#x540C;&#x6A23;&#x9069;&#x7528;&#x65BC;&#x672C;&#x7AE0;&#x7684;unsafe&#x5305;&#x3002;</p>
<p>&#x9AD8;&#x7D1A;&#x8A9E;&#x8A00;&#x4F7F;&#x5F97;&#x7A0B;&#x5E8F;&#x54E1;&#x4E0D;&#x7528;&#x5728;&#x95DC;&#x5FC3;&#x771E;&#x6B63;&#x904B;&#x884C;&#x7A0B;&#x5E8F;&#x7684;&#x6307;&#x4EE4;&#x7D30;&#x7BC0;&#xFF0C;&#x540C;&#x6642;&#x4E5F;&#x4E0D;&#x518D;&#x9700;&#x8981;&#x95DC;&#x8A3B;&#x8A31;&#x591A;&#x5982;&#x5167;&#x5B58;&#x5E03;&#x5C40;&#x4E4B;&#x985E;&#x7684;&#x5BE6;&#x73FE;&#x7D30;&#x7BC0;&#x3002;&#x56E0;&#x7232;&#x9AD8;&#x7D1A;&#x8A9E;&#x8A00;&#x9019;&#x500B;&#x7D76;&#x7DE3;&#x7684;&#x62BD;&#x8C61;&#x5C64;&#xFF0C;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x7DE8;&#x5BEB;&#x5B89;&#x5168;&#x5065;&#x58EF;&#x7684;&#xFF0C;&#x4F75;&#x4E14;&#x53EF;&#x4EE5;&#x904B;&#x884C;&#x5728;&#x4E0D;&#x540C;&#x64CD;&#x4F5C;&#x7E6B;&#x7D71;&#x4E0A;&#x7684;&#x5177;&#x6709;&#x9AD8;&#x5EA6;&#x53EF;&#x79FB;&#x690D;&#x6027;&#x7684;&#x7A0B;&#x5E8F;&#x3002;</p>
<p>&#x4F46;&#x662F;unsafe&#x5305;&#xFF0C;&#x5B83;&#x8B93;&#x7A0B;&#x5E8F;&#x54E1;&#x53EF;&#x4EE5;&#x900F;&#x904E;&#x9019;&#x500B;&#x7D76;&#x7DE3;&#x7684;&#x62BD;&#x8C61;&#x5C64;&#x76F4;&#x63A5;&#x4F7F;&#x7528;&#x4E00;&#x4E9B;&#x5FC5;&#x8981;&#x7684;&#x529F;&#x80FD;&#xFF0C;&#x96D6;&#x7136;&#x53EF;&#x80FD;&#x662F;&#x7232;&#x4E86;&#x7A6B;&#x5F97;&#x66F4;&#x597D;&#x7684;&#x6027;&#x80FD;&#x3002;&#x4F46;&#x662F;&#x4EE3;&#x50F9;&#x5C31;&#x662F;&#x72A7;&#x7272;&#x4E86;&#x53EF;&#x79FB;&#x690D;&#x6027;&#x548C;&#x7A0B;&#x5E8F;&#x5B89;&#x5168;&#xFF0C;&#x56E0;&#x6B64;&#x4F7F;&#x7528;unsafe&#x5305;&#x662F;&#x4E00;&#x500B;&#x5371;&#x96AA;&#x7684;&#x884C;&#x7232;&#x3002;&#x6211;&#x5011;&#x5C0D;&#x4F55;&#x6642;&#x4EE5;&#x53CA;&#x5982;&#x4F55;&#x4F7F;&#x7528;unsafe&#x5305;&#x7684;&#x5EFA;&#x8B70;&#x548C;&#x6211;&#x5011;&#x5728;11.5&#x7BC0;&#x63D0;&#x5230;&#x7684;Knuth&#x5C0D;&#x904E;&#x65E9;&#x512A;&#x5316;&#x7684;&#x5EFA;&#x8B70;&#x985E;&#x4F3C;&#x3002;&#x5927;&#x591A;&#x6578;Go&#x7A0B;&#x5E8F;&#x54E1;&#x53EF;&#x80FD;&#x6C38;&#x9060;&#x4E0D;&#x6703;&#x9700;&#x8981;&#x76F4;&#x63A5;&#x4F7F;&#x7528;unsafe&#x5305;&#x3002;&#x7576;&#x7136;&#xFF0C;&#x4E5F;&#x6C38;&#x9060;&#x90FD;&#x6703;&#x6709;&#x4E00;&#x4E9B;&#x9700;&#x8981;&#x4F7F;&#x7528;unsafe&#x5305;&#x5BE6;&#x73FE;&#x6703;&#x66F4;&#x7C21;&#x55AE;&#x7684;&#x5834;&#x666F;&#x3002;&#x5982;&#x679C;&#x78BA;&#x5BE6;&#x8A8D;&#x7232;&#x4F7F;&#x7528;unsafe&#x5305;&#x662F;&#x6700;&#x7406;&#x60F3;&#x7684;&#x65B9;&#x5F0F;&#xFF0C;&#x90A3;&#x9EBD;&#x61C9;&#x8A72;&#x76E1;&#x53EF;&#x80FD;&#x5C07;&#x5B83;&#x9650;&#x88FD;&#x5728;&#x8F03;&#x5C0F;&#x7684;&#x8303;&#x570D;&#xFF0C;&#x90A3;&#x6A23;&#x5176;&#x5B83;&#x4EE3;&#x78BC;&#x5C31;&#x5FFD;&#x7565;unsafe&#x7684;&#x5F71;&#x97FF;&#x3002;</p>
<p>&#x73FE;&#x5728;&#xFF0C;&#x8D95;&#x7DCA;&#x5C07;&#x6700;&#x5F8C;&#x5169;&#x7AE0;&#x62CB;&#x5165;&#x8166;&#x5F8C;&#x5427;&#x3002;&#x7DE8;&#x5BEB;&#x4E00;&#x4E9B;&#x5BE6;&#x5BE6;&#x5728;&#x5728;&#x7684;&#x61C9;&#x7528;&#x662F;&#x771E;&#x7406;&#x3002;&#x8ACB;&#x9060;&#x96E2;reflect&#x7684;unsafe&#x5305;&#xFF0C;&#x9664;&#x975E;&#x4F60;&#x78BA;&#x5BE6;&#x9700;&#x8981;&#x5B83;&#x5011;&#x3002;</p>
<p>&#x6700;&#x5F8C;&#xFF0C;&#x7528;Go&#x5FEB;&#x6A02;&#x5730;&#x7DE8;&#x7A0B;&#x3002;&#x6211;&#x5011;&#x5E0C;&#x671B;&#x4F60;&#x80FD;&#x50CF;&#x6211;&#x5011;&#x4E00;&#x6A23;&#x559C;&#x6B61;Go&#x8A9E;&#x8A00;&#x3002;</p>
</section>
@@ -2042,7 +2042,7 @@
<a href="../ch13/ch13-04.html" class="navigation navigation-prev " aria-label="Previous page: 通過cgo調用C代碼"><i class="fa fa-angle-left"></i></a>
<a href="../errata.html" class="navigation navigation-next " aria-label="Next page: 勘誤"><i class="fa fa-angle-right"></i></a>
<a href="../CONTRIBUTORS.html" class="navigation navigation-next " aria-label="Next page: 附録"><i class="fa fa-angle-right"></i></a>
</div>
</div>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="13" data-chapter-title="底層編程" data-filepath="ch13/ch13.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="13" data-chapter-title="底層編程" data-filepath="ch13/ch13.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>
@@ -2024,16 +2024,15 @@
<section class="normal" id="section-">
<h1 id="&#x7B2C;13&#x7AE0;-&#x5E95;&#x5C64;&#x7DE8;&#x7A0B;">&#x7B2C;13&#x7AE0; &#x5E95;&#x5C64;&#x7DE8;&#x7A0B;</h1>
<p>Go&#x7684;&#x8A2D;&#x8A08;&#x5305;&#x542B;&#x4E86;&#x8AF8;&#x591A;&#x5B89;&#x5168;&#x7B56;&#x7565;, &#x9650;&#x88FD;&#x4E86;&#x53EF;&#x80FD;&#x5C0E;&#x81F4;&#x7A0B;&#x5E8F;&#x932F;&#x8AA4;&#x7684;&#x7528;&#x6CD5;. &#x7DE8;&#x8B6F;&#x6642;&#x985E;&#x578B;&#x6AA2;&#x67FB;&#x6AA2;&#x6E2C;&#x53EF;&#x4EE5;&#x767C;&#x73FE;&#x5927;&#x591A;&#x6578;&#x985E;&#x578B;&#x4E0D;&#x5339;&#x914D;&#x7684;&#x8B8A;&#x91CF;&#x64CD;&#x4F5C;, &#x4F8B;&#x5982;&#x5169;&#x500B;&#x5B57;&#x7B26;&#x4E32;&#x505A;&#x6E1B;&#x6CD5;&#x7684;&#x932F;&#x8AA4;. &#x5B57;&#x7B26;&#x4E32;, &#x5B57;&#x5178;, &#x5207;&#x7247; &#x548C;&#x7BA1;&#x9053;&#x7B49;&#x6240;&#x6709;&#x7684;&#x5167;&#x7F6E;&#x985E;&#x578B;, &#x90FD;&#x6709;&#x56B4;&#x683C;&#x7684;&#x985E;&#x578B;&#x8F49;&#x63DB;&#x898F;&#x5247;.</p>
<p>&#x5C0D;&#x65BC;&#x7121;&#x6CD5;&#x975C;&#x614B;&#x6AA2;&#x6E2C;&#x5230;&#x7684;&#x932F;&#x8AA4;, &#x4F8B;&#x5982;&#x6578;&#x7D44;&#x8A2A;&#x554F;&#x8D8A;&#x754C;&#x6216;&#x4F7F;&#x7528;&#x7A7A;&#x6307;&#x91DD;, &#x52D5;&#x614B;&#x6AA2;&#x6E2C;&#x53EF;&#x4EE5;&#x4FDD;&#x8B49;&#x7A0B;&#x5E8F;&#x5728;&#x9047;&#x5230;&#x554F;&#x984C;&#x7684;&#x6642;&#x5019;&#x7ACB;&#x537D;&#x7D42;&#x6B62;&#x4F75;&#x6253;&#x5370;&#x76F8;&#x95DC;&#x7684;&#x932F;&#x8AA4;&#x4FE1;&#x606F;. &#x81EA;&#x52D5;&#x5167;&#x5B58;&#x7BA1;&#x7406;(&#x5783;&#x573E;&#x8FF4;&#x6536;)&#x6D88;&#x9664;&#x4E86;&#x5927;&#x90E8;&#x5206;&#x91CE;&#x6307;&#x91DD;&#x548C;&#x5167;&#x5B58;&#x6D29;&#x6F0F;&#x7684;&#x554F;&#x984C;.</p>
<p>Go&#x7684;&#x5BE6;&#x73FE;&#x523B;&#x610F;&#x96B1;&#x85CF;&#x4E86;&#x5F88;&#x591A;&#x5E95;&#x5C64;&#x7D30;&#x7BC0;. &#x6211;&#x5011;&#x7121;&#x6CD5;&#x77E5;&#x9053;&#x4E00;&#x500B;&#x7D50;&#x69CB;&#x9AD4;&#x7684;&#x5167;&#x5B58;&#x5E03;&#x5C40;, &#x4E5F;&#x7121;&#x6CD5;&#x7A6B;&#x53D6;&#x4E00;&#x500B;&#x904B;&#x884C;&#x51FD;&#x6578;&#x7684;&#x6A5F;&#x5668;&#x78BC;, &#x4E5F;&#x7121;&#x6CD5;&#x77E5;&#x9053;&#x7576;&#x524D;&#x7684; goroutine &#x662F;&#x904B;&#x884C;&#x5728;&#x54EA;&#x500B;&#x64CD;&#x4F5C;&#x7E6B;&#x7D71;&#x7DDA;&#x7A0B;&#x4E0A;. &#x4E8B;&#x5BE6;&#x4E0A;, Go&#x7684;&#x8ABF;&#x5EA6;&#x5668;&#x6703;&#x81EA;&#x5DF1;&#x6C7A;&#x5B9A;&#x662F;&#x5426;&#x9700;&#x8981;&#x5C07; goroutine &#x5F9E;&#x4E00;&#x500B;&#x64CD;&#x4F5C;&#x7E6B;&#x7D71;&#x7DDA;&#x7A0B;&#x8F49;&#x79FB;&#x5230;&#x53E6;&#x4E00;&#x500B;&#x64CD;&#x4F5C;&#x7E6B;&#x7D71;&#x7DDA;&#x7A0B;. &#x4E00;&#x500B;&#x6307;&#x5411;&#x8B8A;&#x91CF;&#x7684;&#x6307;&#x91DD;&#x4E5F;&#x4F75;&#x6C92;&#x6709;&#x5C55;&#x793A;&#x8B8A;&#x91CF;&#x771E;&#x5BE6;&#x7684;&#x5730;&#x5740;. &#x56E0;&#x7232;&#x5783;&#x573E;&#x8FF4;&#x6536;&#x5668;&#x6703;&#x6839;&#x64DA;&#x9700;&#x8981;&#x79FB;&#x52D5;&#x8B8A;&#x91CF;&#x7684;&#x4F4D;&#x7F6E;, &#x7576;&#x7136;&#x5C0D;&#x61C9;&#x7684;&#x4E5F;&#x6703;&#x88AB;&#x81EA;&#x52D5;&#x66F4;&#x65B0;.</p>
<p>&#x7E3D;&#x7684;&#x4F86;&#x8AAC;, Go&#x8A9E;&#x8A00;&#x7684;&#x9019;&#x4E9B;&#x7279;&#x6B8A;&#x4F7F;&#x5F97;Go&#x7A0B;&#x5E8F;&#x76F8;&#x6BD4;&#x8F03;&#x4F4E;&#x7D1A;&#x7684;C&#x8A9E;&#x8A00;&#x4F86;&#x8AAC;, &#x66F4;&#x5BB9;&#x6613;&#x9810;&#x6E2C;, &#x66F4;&#x5BB9;&#x6613;&#x7406;&#x89E3;, &#x4E5F;&#x4E0D;&#x5BB9;&#x6613;&#x5D29;&#x6F70;. &#x901A;&#x904E;&#x96B1;&#x85CF;&#x5E95;&#x5C64;&#x7684;&#x7D30;&#x7BC0;, &#x4E5F;&#x4F7F;&#x5F97;Go&#x7A0B;&#x5E8F;&#x5177;&#x6709;&#x9AD8;&#x5EA6;&#x7684;&#x53EF;&#x79FB;&#x690D;&#x6027;, &#x56E0;&#x7232;&#x8A9E;&#x8A00;&#x7684;&#x8A9E;&#x7FA9;&#x5728;&#x5F88;&#x5927;&#x7A0B;&#x5EA6;&#x4E0A;&#x662F;&#x7368;&#x7ACB;&#x65BC;&#x4EFB;&#x4F55;&#x7DE8;&#x8B6F;&#x5668;, &#x64CD;&#x4F5C;&#x7E6B;&#x7D71;&#x548C;CPU&#x7E6B;&#x7D71;&#x7D50;&#x69CB;&#x7684;(&#x7576;&#x7136;&#x4E5F;&#x4E0D;&#x5B8C;&#x5168;&#x7D76;&#x5C0D;&#x7368;&#x7ACB;: &#x4F8B;&#x5982;CPU&#x5B57;&#x7684;&#x5927;&#x5C0F;, &#x67D0;&#x4E9B;&#x8868;&#x9054;&#x5F0F;&#x6C42;&#x503C;&#x7684;&#x9806;&#x5E8F;, &#x9084;&#x6709;&#x7DE8;&#x8B6F;&#x5668;&#x5BE6;&#x73FE;&#x7684;&#x4E00;&#x4E9B;&#x9650;&#x88FD;).</p>
<p>&#x6709;&#x6642;&#x5019;&#x6211;&#x5011;&#x53EF;&#x80FD;&#x6703;&#x653E;&#x68C4;&#x90E8;&#x5206;&#x8A9E;&#x8A00;&#x7279;&#x6027;&#x800C;&#x512A;&#x5148;&#x9078;&#x64C7;&#x66F4;&#x597D;&#x7684;&#x6027;&#x80FD;&#x512A;&#x5316;, &#x8207;&#x5176;&#x4ED6;&#x8A9E;&#x8A00;&#x7DE8;&#x5BEB;&#x7684;&#x5EAB;&#x4E92;&#x64CD;&#x4F5C;, &#x6216;&#x8005;&#x4E0D;&#x7528;&#x7D14;Go&#x8A9E;&#x8A00;&#x4F86;&#x5BE6;&#x73FE;&#x67D0;&#x4E9B;&#x51FD;&#x6578;.</p>
<p>&#x5728;&#x672C;&#x7AE0;, &#x6211;&#x5011;&#x5C07;&#x5C55;&#x793A;&#x5982;&#x4F55;&#x4F7F;&#x7528; unsafe &#x5305;&#x4F86;&#x896C;&#x812B;&#x901A;&#x5E38;&#x7684;&#x898F;&#x5247;&#x9650;&#x88FD;, &#x5982;&#x4F55;&#x5275;&#x5EFA;C&#x51FD;&#x6578;&#x5EAB;&#x7684;&#x7D81;&#x5B9A;, &#x4EE5;&#x53CA;&#x5982;&#x4F55;&#x9032;&#x884C;&#x7E6B;&#x7D71;&#x8ABF;&#x7528;.</p>
<p>&#x672C;&#x7AE0;&#x63CF;&#x8FF0;&#x7684;&#x65B9;&#x6CD5;&#x4E0D;&#x61C9;&#x8A72;&#x8F15;&#x6613;&#x4F7F;&#x7528;. &#x5982;&#x679C;&#x6C92;&#x6709;&#x8655;&#x7406;&#x597D;&#x7D30;&#x7BC0;, &#x5B83;&#x5011;&#x53EF;&#x80FD;&#x5C0E;&#x81F4;&#x5404;&#x7A2E;&#x4E0D;&#x53EF;&#x9810;&#x6E2C;&#x7684;&#x96B1;&#x6666;&#x7684;&#x932F;&#x8AA4;, &#x751A;&#x81F3;&#x9023;&#x672C;&#x5730;&#x7684;C&#x7A0B;&#x5E8F;&#x54E1;&#x4E5F;&#x7121;&#x6CD5;&#x7406;&#x89E3;. &#x4F7F;&#x7528; unsafe &#x5305;&#x540C;&#x6642;&#x4E5F;&#x7121;&#x6CD5;&#x4FDD;&#x8B49;&#x8207;&#x672A;&#x4F86;&#x7248;&#x672C;&#x7684;&#x517C;&#x5BB9;&#x6027;, &#x56E0;&#x7232;&#x5728;&#x6709;&#x610F;&#x7121;&#x610F;&#x4E2D;&#x6703;&#x4F7F;&#x7528;&#x5F88;&#x591A;&#x5BE6;&#x73FE;&#x7684;&#x7D30;&#x7BC0;, &#x800C;&#x9019;&#x4E9B;&#x5BE6;&#x73FE;&#x7684;&#x7D30;&#x7BC0;&#x5728;&#x672A;&#x4F86;&#x5F88;&#x53EF;&#x80FD;&#x6703;&#x6539;&#x8B8A;.</p>
<p>unsafe &#x5305;&#x7684;&#x5BE6;&#x73FE;&#x6BD4;&#x8F03;&#x7279;&#x6B8A;. &#x96D6;&#x7136;&#x5B83;&#x53EF;&#x4EE5;&#x548C;&#x666E;&#x901A;&#x5305;&#x4E00;&#x6A23;&#x7684;&#x5C0E;&#x5165;&#x548C;&#x4F7F;&#x7528;, &#x4F46;&#x5B83;&#x5BE6;&#x969B;&#x4E0A;&#x662F;&#x7531;&#x7DE8;&#x8B6F;&#x5668;&#x5BE6;&#x73FE;&#x7684;. &#x5B83;&#x63D0;&#x4F9B;&#x4E86;&#x4E00;&#x4E9B;&#x8A2A;&#x554F;&#x8A9E;&#x8A00;&#x5167;&#x90E8;&#x7279;&#x6027;&#x7684;&#x65B9;&#x6CD5;, &#x7279;&#x522B;&#x662F;&#x5167;&#x5B58;&#x5E03;&#x5C40;&#x76F8;&#x95DC;&#x7684;&#x7D30;&#x7BC0;.
&#x5C07;&#x9019;&#x4E9B;&#x7279;&#x522B;&#x5C01;&#x88DD;&#x5230;&#x4E00;&#x500B;&#x7368;&#x7ACB;&#x7684;&#x5305;&#x4E2D;, &#x662F;&#x7232;&#x5728;&#x6975;&#x5C11;&#x6578;&#x60C5;&#x6CC1;&#x4E0B;&#x9700;&#x8981;&#x4F7F;&#x7528;&#x7684;&#x6642;&#x5019;, &#x5F15;&#x8D77;&#x4EBA;&#x5011;&#x7684;&#x8A3B;&#x610F;(&#x5B83;&#x5011;&#x662F;&#x4E0D;&#x5B89;&#x5168;&#x7684;). &#x6B64;&#x5916;, &#x6709;&#x4E00;&#x4E9B;&#x74B0;&#x5883;&#x56E0;&#x7232;&#x5B89;&#x5168;&#x7684;&#x56E0;&#x7D20;&#x53EF;&#x80FD;&#x9650;&#x88FD;&#x9019;&#x500B;&#x5305;&#x7684;&#x4F7F;&#x7528;.</p>
<p>unsafe &#x5305;&#x88AB;&#x5EE3;&#x6CDB;&#x5730;&#x7528;&#x65BC;&#x6BD4;&#x8F03;&#x4F4E;&#x7D1A;&#x7684;&#x5305;, &#x4F8B;&#x5982; runtime, os, syscall &#x9084;&#x6709; net &#x7B49;, &#x56E0;&#x7232;&#x5B83;&#x5011;&#x9700;&#x8981;&#x548C;&#x64CD;&#x4F5C;&#x7E6B;&#x7D71;&#x5BC6;&#x5207;&#x914D;&#x5408;&#x7684;, &#x4F46;&#x662F;&#x666E;&#x901A;&#x7684;&#x7A0B;&#x5E8F;&#x4E00;&#x822C;&#x662F;&#x4E0D;&#x9700;&#x8981;&#x7684;.</p>
<p>Go&#x8A9E;&#x8A00;&#x7684;&#x8A2D;&#x8A08;&#x5305;&#x542B;&#x4E86;&#x8AF8;&#x591A;&#x5B89;&#x5168;&#x7B56;&#x7565;&#xFF0C;&#x9650;&#x88FD;&#x4E86;&#x53EF;&#x80FD;&#x5C0E;&#x81F4;&#x7A0B;&#x5E8F;&#x904B;&#x884C;&#x9F63;&#x73FE;&#x932F;&#x8AA4;&#x7684;&#x7528;&#x6CD5;&#x3002;&#x7DE8;&#x8B6F;&#x6642;&#x985E;&#x578B;&#x6AA2;&#x67FB;&#x6AA2;&#x67FB;&#x53EF;&#x4EE5;&#x767C;&#x73FE;&#x5927;&#x591A;&#x6578;&#x985E;&#x578B;&#x4E0D;&#x5339;&#x914D;&#x7684;&#x64CD;&#x4F5C;&#xFF0C;&#x4F8B;&#x5982;&#x5169;&#x500B;&#x5B57;&#x7B26;&#x4E32;&#x505A;&#x6E1B;&#x6CD5;&#x7684;&#x932F;&#x8AA4;&#x3002;&#x5B57;&#x7B26;&#x4E32;&#x3001;map&#x3001;slice&#x548C;chan&#x7B49;&#x6240;&#x6709;&#x7684;&#x5167;&#x7F6E;&#x985E;&#x578B;&#xFF0C;&#x90FD;&#x6709;&#x56B4;&#x683C;&#x7684;&#x985E;&#x578B;&#x8F49;&#x63DB;&#x898F;&#x5247;&#x3002;</p>
<p>&#x5C0D;&#x65BC;&#x7121;&#x6CD5;&#x975C;&#x614B;&#x6AA2;&#x6E2C;&#x5230;&#x7684;&#x932F;&#x8AA4;&#xFF0C;&#x4F8B;&#x5982;&#x6578;&#x7D44;&#x8A2A;&#x554F;&#x8D8A;&#x754C;&#x6216;&#x4F7F;&#x7528;&#x7A7A;&#x6307;&#x91DD;&#xFF0C;&#x904B;&#x884C;&#x6642;&#x52D5;&#x614B;&#x6AA2;&#x6E2C;&#x53EF;&#x4EE5;&#x4FDD;&#x8B49;&#x7A0B;&#x5E8F;&#x5728;&#x9047;&#x5230;&#x554F;&#x984C;&#x7684;&#x6642;&#x5019;&#x7ACB;&#x537D;&#x7D42;&#x6B62;&#x4F75;&#x6253;&#x5370;&#x76F8;&#x95DC;&#x7684;&#x932F;&#x8AA4;&#x4FE1;&#x606F;&#x3002;&#x81EA;&#x52D5;&#x5167;&#x5B58;&#x7BA1;&#x7406;&#xFF08;&#x5783;&#x573E;&#x5167;&#x5B58;&#x81EA;&#x52D5;&#x8FF4;&#x6536;&#xFF09;&#x53EF;&#x4EE5;&#x6D88;&#x9664;&#x5927;&#x90E8;&#x5206;&#x91CE;&#x6307;&#x91DD;&#x548C;&#x5167;&#x5B58;&#x6D29;&#x6F0F;&#x76F8;&#x95DC;&#x7684;&#x554F;&#x984C;&#x3002;</p>
<p>Go&#x8A9E;&#x8A00;&#x7684;&#x5BE6;&#x73FE;&#x523B;&#x610F;&#x96B1;&#x85CF;&#x4E86;&#x5F88;&#x591A;&#x5E95;&#x5C64;&#x7D30;&#x7BC0;&#x3002;&#x6211;&#x5011;&#x7121;&#x6CD5;&#x77E5;&#x9053;&#x4E00;&#x500B;&#x7D50;&#x69CB;&#x9AD4;&#x771E;&#x5BE6;&#x7684;&#x5167;&#x5B58;&#x5E03;&#x5C40;&#xFF0C;&#x4E5F;&#x7121;&#x6CD5;&#x7A6B;&#x53D6;&#x4E00;&#x500B;&#x904B;&#x884C;&#x6642;&#x51FD;&#x6578;&#x5C0D;&#x61C9;&#x7684;&#x6A5F;&#x5668;&#x78BC;&#xFF0C;&#x4E5F;&#x7121;&#x6CD5;&#x77E5;&#x9053;&#x7576;&#x524D;&#x7684;goroutine&#x662F;&#x904B;&#x884C;&#x5728;&#x54EA;&#x500B;&#x64CD;&#x4F5C;&#x7E6B;&#x7D71;&#x7DDA;&#x7A0B;&#x4E4B;&#x4E0A;&#x3002;&#x4E8B;&#x5BE6;&#x4E0A;&#xFF0C;Go&#x8A9E;&#x8A00;&#x7684;&#x8ABF;&#x5EA6;&#x5668;&#x6703;&#x81EA;&#x5DF1;&#x6C7A;&#x5B9A;&#x662F;&#x5426;&#x9700;&#x8981;&#x5C07;&#x67D0;&#x500B;goroutine&#x5F9E;&#x4E00;&#x500B;&#x64CD;&#x4F5C;&#x7E6B;&#x7D71;&#x7DDA;&#x7A0B;&#x8F49;&#x79FB;&#x5230;&#x53E6;&#x4E00;&#x500B;&#x64CD;&#x4F5C;&#x7E6B;&#x7D71;&#x7DDA;&#x7A0B;&#x3002;&#x4E00;&#x500B;&#x6307;&#x5411;&#x8B8A;&#x91CF;&#x7684;&#x6307;&#x91DD;&#x4E5F;&#x4F75;&#x6C92;&#x6709;&#x5C55;&#x793A;&#x8B8A;&#x91CF;&#x771E;&#x5BE6;&#x7684;&#x5730;&#x5740;&#x3002;&#x56E0;&#x7232;&#x5783;&#x573E;&#x8FF4;&#x6536;&#x5668;&#x53EF;&#x80FD;&#x6703;&#x6839;&#x64DA;&#x9700;&#x8981;&#x79FB;&#x52D5;&#x8B8A;&#x91CF;&#x7684;&#x5167;&#x5B58;&#x4F4D;&#x7F6E;&#xFF0C;&#x7576;&#x7136;&#x8B8A;&#x91CF;&#x5C0D;&#x61C9;&#x7684;&#x5730;&#x5740;&#x4E5F;&#x6703;&#x88AB;&#x81EA;&#x52D5;&#x66F4;&#x65B0;&#x3002;</p>
<p>&#x7E3D;&#x7684;&#x4F86;&#x8AAC;&#xFF0C;Go&#x8A9E;&#x8A00;&#x7684;&#x9019;&#x4E9B;&#x7279;&#x6027;&#x4F7F;&#x5F97;Go&#x7A0B;&#x5E8F;&#x76F8;&#x6BD4;&#x8F03;&#x4F4E;&#x7D1A;&#x7684;C&#x8A9E;&#x8A00;&#x4F86;&#x8AAC;&#x66F4;&#x5BB9;&#x6613;&#x9810;&#x6E2C;&#x548C;&#x7406;&#x89E3;&#xFF0C;&#x7A0B;&#x5E8F;&#x4E5F;&#x4E0D;&#x5BB9;&#x6613;&#x5D29;&#x6F70;&#x3002;&#x901A;&#x904E;&#x96B1;&#x85CF;&#x5E95;&#x5C64;&#x7684;&#x5BE6;&#x73FE;&#x7D30;&#x7BC0;&#xFF0C;&#x4E5F;&#x4F7F;&#x5F97;Go&#x8A9E;&#x8A00;&#x7DE8;&#x5BEB;&#x7684;&#x7A0B;&#x5E8F;&#x5177;&#x6709;&#x9AD8;&#x5EA6;&#x7684;&#x53EF;&#x79FB;&#x690D;&#x6027;&#xFF0C;&#x56E0;&#x7232;&#x8A9E;&#x8A00;&#x7684;&#x8A9E;&#x7FA9;&#x5728;&#x5F88;&#x5927;&#x7A0B;&#x5EA6;&#x4E0A;&#x662F;&#x7368;&#x7ACB;&#x65BC;&#x4EFB;&#x4F55;&#x7DE8;&#x8B6F;&#x5668;&#x5BE6;&#x73FE;&#x3001;&#x64CD;&#x4F5C;&#x7E6B;&#x7D71;&#x548C;CPU&#x7E6B;&#x7D71;&#x7D50;&#x69CB;&#x7684;&#xFF08;&#x7576;&#x7136;&#x4E5F;&#x4E0D;&#x662F;&#x5B8C;&#x5168;&#x7D76;&#x5C0D;&#x7368;&#x7ACB;&#xFF1A;&#x4F8B;&#x5982;int&#x7B49;&#x985E;&#x578B;&#x5C31;&#x4F9D;&#x8CF4;&#x65BC;CPU&#x6A5F;&#x5668;&#x5B57;&#x7684;&#x5927;&#x5C0F;&#xFF0C;&#x67D0;&#x4E9B;&#x8868;&#x9054;&#x5F0F;&#x6C42;&#x503C;&#x7684;&#x5177;&#x9AD4;&#x9806;&#x5E8F;&#xFF0C;&#x9084;&#x6709;&#x7DE8;&#x8B6F;&#x5668;&#x5BE6;&#x73FE;&#x7684;&#x4E00;&#x4E9B;&#x984D;&#x5916;&#x7684;&#x9650;&#x88FD;&#x7B49;&#xFF09;&#x3002;</p>
<p>&#x6709;&#x6642;&#x5019;&#x6211;&#x5011;&#x53EF;&#x80FD;&#x6703;&#x653E;&#x68C4;&#x4F7F;&#x7528;&#x90E8;&#x5206;&#x8A9E;&#x8A00;&#x7279;&#x6027;&#x800C;&#x512A;&#x5148;&#x9078;&#x64C7;&#x66F4;&#x597D;&#x5177;&#x6709;&#x66F4;&#x597D;&#x6027;&#x80FD;&#x7684;&#x65B9;&#x6CD5;&#xFF0C;&#x4F8B;&#x5982;&#x9700;&#x8981;&#x8207;&#x5176;&#x4ED6;&#x8A9E;&#x8A00;&#x7DE8;&#x5BEB;&#x7684;&#x5EAB;&#x4E92;&#x64CD;&#x4F5C;&#xFF0C;&#x6216;&#x8005;&#x7528;&#x7D14;Go&#x8A9E;&#x8A00;&#x7121;&#x6CD5;&#x5BE6;&#x73FE;&#x7684;&#x67D0;&#x4E9B;&#x51FD;&#x6578;&#x3002;</p>
<p>&#x5728;&#x672C;&#x7AE0;&#xFF0C;&#x6211;&#x5011;&#x5C07;&#x5C55;&#x793A;&#x5982;&#x4F55;&#x4F7F;&#x7528;unsafe&#x5305;&#x4F86;&#x896C;&#x812B;Go&#x8A9E;&#x8A00;&#x898F;&#x5247;&#x5E36;&#x4F86;&#x7684;&#x9650;&#x88FD;&#xFF0C;&#x8B1B;&#x8FF0;&#x5982;&#x4F55;&#x5275;&#x5EFA;C&#x8A9E;&#x8A00;&#x51FD;&#x6578;&#x5EAB;&#x7684;&#x7D81;&#x5B9A;&#xFF0C;&#x4EE5;&#x53CA;&#x5982;&#x4F55;&#x9032;&#x884C;&#x7E6B;&#x7D71;&#x8ABF;&#x7528;&#x3002;</p>
<p>&#x672C;&#x7AE0;&#x63D0;&#x4F9B;&#x7684;&#x65B9;&#x6CD5;&#x4E0D;&#x61C9;&#x8A72;&#x8F15;&#x6613;&#x4F7F;&#x7528;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;&#x5C6C;&#x65BC;&#x9ED1;&#x9B54;&#x6CD5;&#xFF0C;&#x96D6;&#x7136;&#x53EF;&#x80FD;&#x529F;&#x80FD;&#x5F88;&#x5F37;&#x5927;&#xFF0C;&#x4F46;&#x662F;&#x4E5F;&#x5BB9;&#x6613;&#x8AA4;&#x50B7;&#x5230;&#x81EA;&#x5DF1;&#xFF09;&#x3002;&#x5982;&#x679C;&#x6C92;&#x6709;&#x8655;&#x7406;&#x597D;&#x7D30;&#x7BC0;&#xFF0C;&#x5B83;&#x5011;&#x53EF;&#x80FD;&#x5C0E;&#x81F4;&#x5404;&#x7A2E;&#x4E0D;&#x53EF;&#x9810;&#x6E2C;&#x7684;&#x4F75;&#x4E14;&#x96B1;&#x6666;&#x7684;&#x932F;&#x8AA4;&#xFF0C;&#x751A;&#x81F3;&#x9023;&#x6709;&#x7D93;&#x9A57;&#x7684;&#x7684;C&#x8A9E;&#x8A00;&#x7A0B;&#x5E8F;&#x54E1;&#x4E5F;&#x7121;&#x6CD5;&#x7406;&#x89E3;&#x9019;&#x4E9B;&#x932F;&#x8AA4;&#x3002;&#x4F7F;&#x7528;unsafe&#x5305;&#x7684;&#x540C;&#x6642;&#x4E5F;&#x653E;&#x68C4;&#x4E86;Go&#x8A9E;&#x8A00;&#x4FDD;&#x8B49;&#x8207;&#x672A;&#x4F86;&#x7248;&#x672C;&#x7684;&#x517C;&#x5BB9;&#x6027;&#x7684;&#x627F;&#x8AFE;&#xFF0C;&#x56E0;&#x7232;&#x5B83;&#x5FC5;&#x7136;&#x6703;&#x5728;&#x6709;&#x610F;&#x7121;&#x610F;&#x4E2D;&#x6703;&#x4F7F;&#x7528;&#x5F88;&#x591A;&#x5BE6;&#x73FE;&#x7684;&#x7D30;&#x7BC0;&#xFF0C;&#x800C;&#x9019;&#x4E9B;&#x5BE6;&#x73FE;&#x7684;&#x7D30;&#x7BC0;&#x5728;&#x672A;&#x4F86;&#x7684;Go&#x8A9E;&#x8A00;&#x4E2D;&#x5F88;&#x53EF;&#x80FD;&#x6703;&#x88AB;&#x6539;&#x8B8A;&#x3002;</p>
<p>&#x8981;&#x8A3B;&#x610F;&#x7684;&#x662F;&#xFF0C;unsafe&#x5305;&#x662F;&#x4E00;&#x500B;&#x91C7;&#x7528;&#x7279;&#x6B8A;&#x65B9;&#x5F0F;&#x5BE6;&#x73FE;&#x7684;&#x5305;&#x3002;&#x96D6;&#x7136;&#x5B83;&#x53EF;&#x4EE5;&#x548C;&#x666E;&#x901A;&#x5305;&#x4E00;&#x6A23;&#x7684;&#x5C0E;&#x5165;&#x548C;&#x4F7F;&#x7528;&#xFF0C;&#x4F46;&#x5B83;&#x5BE6;&#x969B;&#x4E0A;&#x662F;&#x7531;&#x7DE8;&#x8B6F;&#x5668;&#x5BE6;&#x73FE;&#x7684;&#x3002;&#x5B83;&#x63D0;&#x4F9B;&#x4E86;&#x4E00;&#x4E9B;&#x8A2A;&#x554F;&#x8A9E;&#x8A00;&#x5167;&#x90E8;&#x7279;&#x6027;&#x7684;&#x65B9;&#x6CD5;&#xFF0C;&#x7279;&#x522B;&#x662F;&#x5167;&#x5B58;&#x5E03;&#x5C40;&#x76F8;&#x95DC;&#x7684;&#x7D30;&#x7BC0;&#x3002;&#x5C07;&#x9019;&#x4E9B;&#x7279;&#x6027;&#x5C01;&#x88DD;&#x5230;&#x4E00;&#x500B;&#x7368;&#x7ACB;&#x7684;&#x5305;&#x4E2D;&#xFF0C;&#x662F;&#x7232;&#x5728;&#x6975;&#x5C11;&#x6578;&#x60C5;&#x6CC1;&#x4E0B;&#x9700;&#x8981;&#x4F7F;&#x7528;&#x7684;&#x6642;&#x5019;&#xFF0C;&#x540C;&#x6642;&#x5F15;&#x8D77;&#x4EBA;&#x5011;&#x7684;&#x8A3B;&#x610F;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;&#x56E0;&#x7232;&#x770B;&#x5305;&#x7684;&#x540D;&#x5B57;&#x5C31;&#x77E5;&#x9053;&#x4F7F;&#x7528;unsafe&#x5305;&#x662F;&#x4E0D;&#x5B89;&#x5168;&#x7684;&#xFF09;&#x3002;&#x6B64;&#x5916;&#xFF0C;&#x6709;&#x4E00;&#x4E9B;&#x74B0;&#x5883;&#x56E0;&#x7232;&#x5B89;&#x5168;&#x7684;&#x56E0;&#x7D20;&#x53EF;&#x80FD;&#x9650;&#x88FD;&#x9019;&#x500B;&#x5305;&#x7684;&#x4F7F;&#x7528;&#x3002;</p>
<p>&#x4E0D;&#x904E;unsafe&#x5305;&#x88AB;&#x5EE3;&#x6CDB;&#x5730;&#x7528;&#x65BC;&#x6BD4;&#x8F03;&#x4F4E;&#x7D1A;&#x7684;&#x5305;, &#x4F8B;&#x5982;runtime&#x3001;os&#x3001;syscall&#x9084;&#x6709;net&#x5305;&#x7B49;&#xFF0C;&#x56E0;&#x7232;&#x5B83;&#x5011;&#x9700;&#x8981;&#x548C;&#x64CD;&#x4F5C;&#x7E6B;&#x7D71;&#x5BC6;&#x5207;&#x914D;&#x5408;&#xFF0C;&#x4F46;&#x662F;&#x5C0D;&#x65BC;&#x666E;&#x901A;&#x7684;&#x7A0B;&#x5E8F;&#x4E00;&#x822C;&#x662F;&#x4E0D;&#x9700;&#x8981;&#x4F7F;&#x7528;unsafe&#x5305;&#x7684;&#x3002;</p>
</section>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="2.1" data-chapter-title="命名" data-filepath="ch2/ch2-01.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="2.1" data-chapter-title="命名" data-filepath="ch2/ch2-01.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="2.2" data-chapter-title="聲明" data-filepath="ch2/ch2-02.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="2.2" data-chapter-title="聲明" data-filepath="ch2/ch2-02.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="2.3" data-chapter-title="變量" data-filepath="ch2/ch2-03.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="2.3" data-chapter-title="變量" data-filepath="ch2/ch2-03.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="2.4" data-chapter-title="賦值" data-filepath="ch2/ch2-04.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="2.4" data-chapter-title="賦值" data-filepath="ch2/ch2-04.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="2.5" data-chapter-title="類型" data-filepath="ch2/ch2-05.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="2.5" data-chapter-title="類型" data-filepath="ch2/ch2-05.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="2.6" data-chapter-title="包和文件" data-filepath="ch2/ch2-06.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="2.6" data-chapter-title="包和文件" data-filepath="ch2/ch2-06.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="2.7" data-chapter-title="作用域" data-filepath="ch2/ch2-07.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="2.7" data-chapter-title="作用域" data-filepath="ch2/ch2-07.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="2" data-chapter-title="程序結構" data-filepath="ch2/ch2.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="2" data-chapter-title="程序結構" data-filepath="ch2/ch2.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="3.1" data-chapter-title="整型" data-filepath="ch3/ch3-01.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="3.1" data-chapter-title="整型" data-filepath="ch3/ch3-01.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="3.2" data-chapter-title="浮點數" data-filepath="ch3/ch3-02.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="3.2" data-chapter-title="浮點數" data-filepath="ch3/ch3-02.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="3.3" data-chapter-title="複數" data-filepath="ch3/ch3-03.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="3.3" data-chapter-title="複數" data-filepath="ch3/ch3-03.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="3.4" data-chapter-title="布爾型" data-filepath="ch3/ch3-04.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="3.4" data-chapter-title="布爾型" data-filepath="ch3/ch3-04.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="3.5" data-chapter-title="字符串" data-filepath="ch3/ch3-05.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="3.5" data-chapter-title="字符串" data-filepath="ch3/ch3-05.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>
@@ -2030,7 +2030,6 @@
fmt.Println(<span class="hljs-built_in">len</span>(s)) <span class="hljs-comment">// &quot;12&quot;</span>
fmt.Println(s[<span class="hljs-number">0</span>], s[<span class="hljs-number">7</span>]) <span class="hljs-comment">// &quot;104 119&quot; (&apos;h&apos; and &apos;w&apos;)</span>
</code></pre>
<p>Attempting to access a byte outside this range results in a panic:</p>
<p>&#x5982;&#x679C;&#x8996;&#x5716;&#x8A2A;&#x554F;&#x8D85;&#x9F63;&#x5B57;&#x7B26;&#x4E32;&#x8303;&#x570D;&#x7684;&#x5B57;&#x7BC0;&#x5C07;&#x6703;&#x5C0E;&#x81F4;panic&#x7570;&#x5E38;:</p>
<pre><code class="lang-Go">c := s[<span class="hljs-built_in">len</span>(s)] <span class="hljs-comment">// panic: index out of range</span>
</code></pre>
@@ -2093,10 +2092,10 @@ Usage:
<p>&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x5C07;&#x4E00;&#x500B;&#x7B26;&#x6587;&#x5E8F;&#x5217;&#x8868;&#x793A;&#x7232;&#x4E00;&#x500B;int32&#x5E8F;&#x5217;. &#x9019;&#x7A2E;&#x7DE8;&#x78BC;&#x65B9;&#x5F0F;&#x53EB;UTF-32&#x6216;UCS-4, &#x6BCF;&#x500B;Unicode&#x78BC;&#x9EDE;&#x90FD;&#x4F7F;&#x7528;&#x540C;&#x6A23;&#x7684;&#x5927;&#x5C0F;32bit&#x4F86;&#x8868;&#x793A;. &#x9019;&#x7A2E;&#x65B9;&#x5F0F;&#x6BD4;&#x8F03;&#x7C21;&#x55AE;&#x7D71;&#x4E00;, &#x5B83;&#x6703;&#x6D6A;&#x8CBB;&#x5F88;&#x591A;&#x5B58;&#x5132;&#x7A7A;&#x9593;, &#x56E0;&#x7232;&#x5927;&#x6578;&#x64DA;&#x8A08;&#x7B97;&#x6A5F;&#x53EF;&#x8B80;&#x7684;&#x6587;&#x672C;&#x662F;ASCII&#x5B57;&#x7B26;, &#x672C;&#x4F86;&#x6BCF;&#x500B;ASCII&#x5B57;&#x7B26;&#x96BB;&#x9700;&#x8981;8bit&#x6216;1&#x5B57;&#x7BC0;&#x5C31;&#x80FD;&#x8868;&#x793A;. &#x537D;&#x4F7F;&#x662F;&#x5E38;&#x7528;&#x7684;&#x5B57;&#x7B26;&#x4E5F;&#x9060;&#x5C11;&#x65BC;65,536&#x500B;, &#x4E5F;&#x5C31;&#x662F;&#x8AAC;&#x7528;16bit&#x7DE8;&#x78BC;&#x65B9;&#x5F0F;&#x5C31;&#x80FD;&#x8868;&#x9054;&#x5E38;&#x7528;&#x5B57;&#x7B26;. &#x4F46;&#x662F;, &#x9084;&#x6709;&#x66F4;&#x597D;&#x7684;&#x7DE8;&#x78BC;&#x65B9;&#x6CD5;&#x55CE;?</p>
<h3 id="353-utf8">3.5.3. UTF-8</h3>
<p>UTF8&#x662F;&#x4E00;&#x500B;&#x5C07;Unicode&#x78BC;&#x9EDE;&#x7DE8;&#x78BC;&#x7232;&#x5B57;&#x7BC0;&#x5E8F;&#x5217;&#x7684;&#x8B8A;&#x9577;&#x7DE8;&#x78BC;. UTF8&#x7DE8;&#x78BC;&#x7531;Go&#x8A9E;&#x8A00;&#x4E4B;&#x7236; Ken Thompson &#x548C; Rob Pike &#x5171;&#x540C;&#x767C;&#x660E;, &#x73FE;&#x5728;&#x5DF2;&#x7D93;&#x662F;Unicode&#x7684;&#x6A19;&#x6E96;. UTF8&#x4F7F;&#x7528;1&#x5230;4&#x500B;&#x5B57;&#x7BC0;&#x4F86;&#x8868;&#x793A;&#x6BCF;&#x500B;Unicode&#x78BC;&#x9EDE;&#x7B26;&#x865F;, ASCII&#x90E8;&#x5206;&#x5B57;&#x7B26;&#x96BB;&#x4F7F;&#x7528;1&#x500B;&#x5B57;&#x7BC0;, &#x5E38;&#x7528;&#x5B57;&#x7B26;&#x90E8;&#x5206;&#x4F7F;&#x7528;2&#x6216;3&#x500B;&#x5B57;&#x7BC0;. &#x6BCF;&#x500B;&#x7B26;&#x865F;&#x7DE8;&#x78BC;&#x5F8C;&#x7B2C;&#x4E00;&#x500B;&#x5B57;&#x7BC0;&#x7684;&#x9AD8;&#x7AEF;bit&#x4F4D;&#x7528;&#x65BC;&#x8868;&#x793A;&#x7E3D;&#x5171;&#x6709;&#x591A;&#x5C11;&#x500B;&#x5B57;&#x7BC0;. &#x5982;&#x679C;&#x7B2C;&#x4E00;&#x500B;&#x5B57;&#x7BC0;&#x7684;&#x9AD8;&#x7AEF;bit&#x7232;0, &#x5247;&#x8868;&#x793A;&#x5C0D;&#x61C9;7bit&#x7684;ASCII&#x5B57;&#x7B26;, &#x6BCF;&#x500B;&#x5B57;&#x7B26;&#x4E00;&#x500B;&#x5B57;&#x7BC0;, &#x548C;&#x50B3;&#x7D71;&#x7684;ASCII&#x7DE8;&#x78BC;&#x517C;&#x5BB9;. &#x5982;&#x679C;&#x7B2C;&#x4E00;&#x500B;&#x5B57;&#x7BC0;&#x7684;&#x9AD8;&#x7AEF;bit&#x662F;110, &#x5247;&#x8AAC;&#x660E;&#x9700;&#x8981;2&#x500B;&#x5B57;&#x7BC0;; &#x5F8C;&#x7E8C;&#x7684;&#x6BCF;&#x500B;&#x9AD8;&#x7AEF;bit&#x90FD;&#x4EE5;10&#x958B;&#x982D;. &#x66F4;&#x5927;&#x7684;Unicode&#x78BC;&#x9EDE;&#x4E5F;&#x662F;&#x91C7;&#x7528;&#x985E;&#x4F3C;&#x7684;&#x7B56;&#x7565;&#x8655;&#x7406;.</p>
<pre><code>0xxxxxx runes 0-127 (ASCII)
11xxxxx 10xxxxxx 128-2047 (values &lt;128 unused)
110xxxx 10xxxxxx 10xxxxxx 2048-65535 (values &lt;2048 unused)
1110xxx 10xxxxxx 10xxxxxx 10xxxxxx 65536-0x10ffff (other values unused)
<pre><code>0xxxxxxx runes 0-127 (ASCII)
110xxxxx 10xxxxxx 128-2047 (values &lt;128 unused)
1110xxxx 10xxxxxx 10xxxxxx 2048-65535 (values &lt;2048 unused)
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 65536-0x10ffff (other values unused)
</code></pre><p>&#x8B8A;&#x9577;&#x7684;&#x7DE8;&#x78BC;&#x7121;&#x6CD5;&#x76F4;&#x63A5;&#x901A;&#x904E;&#x7D22;&#x5F15;&#x4F86;&#x8A2A;&#x554F;&#x7B2C;n&#x500B;&#x5B57;&#x7B26;, &#x4F46;&#x662F;UTF8&#x7A6B;&#x5F97;&#x4E86;&#x5F88;&#x591A;&#x984D;&#x5916;&#x7684;&#x512A;&#x9EDE;. &#x9996;&#x5148;UTF8&#x7DE8;&#x78BC;&#x6BD4;&#x8F03;&#x7DCA;&#x6E4A;, &#x517C;&#x5BB9;ASCII, &#x4F75;&#x4E14;&#x53EF;&#x4EE5;&#x81EA;&#x52D5;&#x540C;&#x6B65;: &#x5B83;&#x53EF;&#x4EE5;&#x901A;&#x904E;&#x5411;&#x524D;&#x8FF4;&#x6714;&#x6700;&#x591A;2&#x500B;&#x5B57;&#x7BC0;&#x5C31;&#x80FD;&#x78BA;&#x5B9A;&#x7576;&#x524D;&#x5B57;&#x7B26;&#x7DE8;&#x78BC;&#x7684;&#x958B;&#x59CB;&#x5B57;&#x7BC0;&#x7684;&#x4F4D;&#x7F6E;. &#x5B83;&#x4E5F;&#x662F;&#x4E00;&#x500B;&#x524D;&#x7DB4;&#x7DE8;&#x78BC;, &#x6240;&#x4EE5;&#x7576;&#x5F9E;&#x5DE6;&#x5411;&#x53F3;&#x89E3;&#x78BC;&#x6642;&#x4E0D;&#x6703;&#x6709;&#x4EFB;&#x4F55;&#x6B67;&#x7FA9;&#x4E5F;&#x4F75;&#x4E0D;&#x9700;&#x8981;&#x5411;&#x524D;&#x67FB;&#x770B;. &#x6C92;&#x6709;&#x4EFB;&#x4F55;&#x5B57;&#x7B26;&#x7684;&#x7DE8;&#x78BC;&#x662F;&#x5176;&#x5B83;&#x5B57;&#x7B26;&#x7DE8;&#x78BC;&#x7684;&#x5B50;&#x4E32;, &#x6216;&#x662F;&#x5176;&#x5B83;&#x7DE8;&#x78BC;&#x5E8F;&#x5217;&#x7684;&#x5B57;&#x4E32;, &#x56E0;&#x6B64;&#x8490;&#x7D22;&#x4E00;&#x500B;&#x5B57;&#x7B26;&#x6642;&#x96BB;&#x8981;&#x8490;&#x7D22;&#x5B83;&#x7684;&#x5B57;&#x7BC0;&#x7DE8;&#x78BC;&#x5E8F;&#x5217;&#x537D;&#x53EF;, &#x4E0D;&#x7528;&#x64D4;&#x5FC3;&#x524D;&#x5F8C;&#x7684;&#x4E0A;&#x4E0B;&#x6587;&#x6703;&#x5C0D;&#x8490;&#x7D22;&#x7D50;&#x679C;&#x7523;&#x751F;&#x69A6;&#x64FE;. &#x540C;&#x6642;UTF8&#x7DE8;&#x78BC;&#x7684;&#x9806;&#x5E8F;&#x548C;Unicode&#x78BC;&#x9EDE;&#x7684;&#x9806;&#x5E8F;&#x4E00;&#x81F4;, &#x56E0;&#x6B64;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x6392;&#x5E8F;UTF8&#x7DE8;&#x78BC;&#x5E8F;&#x5217;. &#x540C;&#x696D;&#x4E5F;&#x6C92;&#x6709;&#x5D4C;&#x5165;&#x7684;NUL(0)&#x5B57;&#x7BC0;, &#x53EF;&#x4EE5;&#x5F88;&#x597D;&#x5730;&#x517C;&#x5BB9;&#x90A3;&#x4E9B;&#x4F7F;&#x7528;NUL&#x4F5C;&#x7232;&#x5B57;&#x7B26;&#x4E32;&#x7D50;&#x5C3E;&#x7684;&#x7DE8;&#x7A0B;&#x8A9E;&#x8A00;.</p>
<p>Go&#x7684;&#x6E90;&#x6587;&#x4EF6;&#x91C7;&#x7528;UTF8&#x7DE8;&#x78BC;, &#x4F75;&#x4E14;Go&#x8655;&#x7406;UTF8&#x7DE8;&#x78BC;&#x7684;&#x6587;&#x672C;&#x4E5F;&#x5F88;&#x9F63;&#x8272;. unicode &#x5305;&#x63D0;&#x4F9B;&#x4E86;&#x8AF8;&#x591A;&#x8655;&#x7406; rune &#x5B57;&#x7B26;&#x76F8;&#x95DC;&#x529F;&#x80FD;&#x7684;&#x51FD;&#x6578;&#x51FD;&#x6578;(&#x5340;&#x5206;&#x5B57;&#x6BCD;&#x548C;&#x6578;&#x7D44;, &#x6216;&#x8005;&#x662F;&#x5B57;&#x6BCD;&#x7684;&#x5927;&#x5BEB;&#x548C;&#x5C0F;&#x5BEB;&#x8F49;&#x63DB;&#x7B49;), unicode/utf8 &#x5305;&#x4E86;&#x63D0;&#x4F9B;&#x4E86;rune &#x5B57;&#x7B26;&#x5E8F;&#x5217;&#x7684;UTF8&#x7DE8;&#x78BC;&#x548C;&#x89E3;&#x78BC;&#x7684;&#x529F;&#x80FD;.</p>
<p>&#x6709;&#x5F88;&#x591A;Unicode&#x5B57;&#x7B26;&#x5F88;&#x96E3;&#x76F4;&#x63A5;&#x5F9E;&#x9375;&#x76E4;&#x8F38;&#x5165;, &#x4F75;&#x4E14;&#x5F88;&#x591A;&#x5B57;&#x7B26;&#x6709;&#x7740;&#x76F8;&#x4F3C;&#x7684;&#x7D50;&#x69CB;; &#x6709;&#x4E00;&#x4E9B;&#x751A;&#x81F3;&#x662F;&#x4E0D;&#x53EF;&#x898B;&#x7684;&#x5B57;&#x7B26;. Go&#x5B57;&#x7B26;&#x4E32;&#x9762;&#x503C;&#x4E2D;&#x7684;Unicode&#x8F49;&#x7FA9;&#x5B57;&#x7B26;&#x8B93;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x901A;&#x904E;Unicode&#x78BC;&#x9EDE;&#x8F38;&#x5165;&#x7279;&#x6B8A;&#x7684;&#x5B57;&#x7B26;. &#x6709;&#x5169;&#x7A2E;&#x5F62;&#x5F0F;, \uhhhh &#x5C0D;&#x61C9;16bit&#x7684;&#x78BC;&#x9EDE;&#x503C;, \Uhhhhhhhh &#x5C0D;&#x61C9;32bit&#x7684;&#x78BC;&#x9EDE;&#x503C;, &#x5176;&#x4E2D;h&#x662F;&#x4E00;&#x500B;&#x5341;&#x516D;&#x9032;&#x88FD;&#x6578;&#x5B57;; &#x4E00;&#x822C;&#x5F88;&#x5C11;&#x9700;&#x8981;&#x4F7F;&#x7528;32bit&#x7684;&#x5F62;&#x5F0F;. &#x6BCF;&#x4E00;&#x500B;&#x5C0D;&#x61C9;&#x78BC;&#x9EDE;&#x7684;UTF8&#x7DE8;&#x78BC;. &#x4F8B;&#x5982;: &#x4E0B;&#x9762;&#x7684;&#x5B57;&#x6BCD;&#x4E32;&#x9762;&#x503C;&#x90FD;&#x8868;&#x793A;&#x76F8;&#x540C;&#x7684;&#x503C;:</p>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="3.6" data-chapter-title="常量" data-filepath="ch3/ch3-06.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="3.6" data-chapter-title="常量" data-filepath="ch3/ch3-06.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="3" data-chapter-title="基礎數據類型" data-filepath="ch3/ch3.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="3" data-chapter-title="基礎數據類型" data-filepath="ch3/ch3.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="4.1" data-chapter-title="數組" data-filepath="ch4/ch4-01.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="4.1" data-chapter-title="數組" data-filepath="ch4/ch4-01.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="4.2" data-chapter-title="切片" data-filepath="ch4/ch4-02.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="4.2" data-chapter-title="切片" data-filepath="ch4/ch4-02.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="4.3" data-chapter-title="字典" data-filepath="ch4/ch4-03.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="4.3" data-chapter-title="字典" data-filepath="ch4/ch4-03.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="4.4" data-chapter-title="結構體" data-filepath="ch4/ch4-04.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="4.4" data-chapter-title="結構體" data-filepath="ch4/ch4-04.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="4.5" data-chapter-title="JSON" data-filepath="ch4/ch4-05.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="4.5" data-chapter-title="JSON" data-filepath="ch4/ch4-05.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="4.6" data-chapter-title="文本和HTML模闆" data-filepath="ch4/ch4-06.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="4.6" data-chapter-title="文本和HTML模闆" data-filepath="ch4/ch4-06.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="4" data-chapter-title="複合數據類型" data-filepath="ch4/ch4.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="4" data-chapter-title="複合數據類型" data-filepath="ch4/ch4.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="5.1" data-chapter-title="函數聲明" data-filepath="ch5/ch5-01.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="5.1" data-chapter-title="函數聲明" data-filepath="ch5/ch5-01.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="5.2" data-chapter-title="遞歸" data-filepath="ch5/ch5-02.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="5.2" data-chapter-title="遞歸" data-filepath="ch5/ch5-02.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="5.3" data-chapter-title="多返迴值" data-filepath="ch5/ch5-03.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="5.3" data-chapter-title="多返迴值" data-filepath="ch5/ch5-03.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="5.4" data-chapter-title="錯誤" data-filepath="ch5/ch5-04.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="5.4" data-chapter-title="錯誤" data-filepath="ch5/ch5-04.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="5.5" data-chapter-title="函數值" data-filepath="ch5/ch5-05.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="5.5" data-chapter-title="函數值" data-filepath="ch5/ch5-05.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="5.6" data-chapter-title="匿名函數" data-filepath="ch5/ch5-06.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="5.6" data-chapter-title="匿名函數" data-filepath="ch5/ch5-06.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="5.7" data-chapter-title="可變參數" data-filepath="ch5/ch5-07.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="5.7" data-chapter-title="可變參數" data-filepath="ch5/ch5-07.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="5.8" data-chapter-title="Deferred函數" data-filepath="ch5/ch5-08.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="5.8" data-chapter-title="Deferred函數" data-filepath="ch5/ch5-08.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="5.9" data-chapter-title="Panic異常" data-filepath="ch5/ch5-09.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="5.9" data-chapter-title="Panic異常" data-filepath="ch5/ch5-09.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="5.10" data-chapter-title="Recover捕穫異常" data-filepath="ch5/ch5-10.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="5.10" data-chapter-title="Recover捕穫異常" data-filepath="ch5/ch5-10.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="5" data-chapter-title="函數" data-filepath="ch5/ch5.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="5" data-chapter-title="函數" data-filepath="ch5/ch5.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="6.1" data-chapter-title="方法聲明" data-filepath="ch6/ch6-01.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="6.1" data-chapter-title="方法聲明" data-filepath="ch6/ch6-01.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="6.2" data-chapter-title="基於指針對象的方法" data-filepath="ch6/ch6-02.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="6.2" data-chapter-title="基於指針對象的方法" data-filepath="ch6/ch6-02.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="6.3" data-chapter-title="通過嵌入結構體來擴展類型" data-filepath="ch6/ch6-03.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="6.3" data-chapter-title="通過嵌入結構體來擴展類型" data-filepath="ch6/ch6-03.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="6.4" data-chapter-title="方法值和方法表達式" data-filepath="ch6/ch6-04.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="6.4" data-chapter-title="方法值和方法表達式" data-filepath="ch6/ch6-04.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="6.5" data-chapter-title="示例: Bit數組" data-filepath="ch6/ch6-05.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="6.5" data-chapter-title="示例: Bit數組" data-filepath="ch6/ch6-05.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="6.6" data-chapter-title="封裝" data-filepath="ch6/ch6-06.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="6.6" data-chapter-title="封裝" data-filepath="ch6/ch6-06.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="6" data-chapter-title="方法" data-filepath="ch6/ch6.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="6" data-chapter-title="方法" data-filepath="ch6/ch6.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="7.1" data-chapter-title="接口是合約" data-filepath="ch7/ch7-01.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="7.1" data-chapter-title="接口是合約" data-filepath="ch7/ch7-01.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>
@@ -2042,17 +2042,17 @@
&#x4F75;&#x4E0D;&#x662F;&#x4E00;&#x500B;&#x6587;&#x4EF6;&#x985E;&#x578B;&#x76E1;&#x7BA1;&#x5B83;&#x5728;&#x67D0;&#x7A2E;&#x610F;&#x7FA9;&#x4E0A;&#x548C;&#x6587;&#x4EF6;&#x985E;&#x578B;&#x76F8;&#x4F3C;&#x3002;</p>
<p>&#x537D;&#x4F7F;Fprintf&#x51FD;&#x6578;&#x4E2D;&#x7684;&#x7B2C;&#x4E00;&#x500B;&#x53C3;&#x6578;&#x4E5F;&#x4E0D;&#x662F;&#x4E00;&#x500B;&#x6587;&#x4EF6;&#x985E;&#x578B;&#x3002;&#x5B83;&#x662F;io.Writer&#x985E;&#x578B;&#x9019;&#x662F;&#x4E00;&#x500B;&#x63A5;&#x53E3;&#x985E;&#x578B;&#x5B9A;&#x7FA9;&#x5982;&#x4E0B;&#xFF1A;</p>
<pre><code class="lang-go"><span class="hljs-keyword">package</span> io
<span class="hljs-comment">// Writer is the interface that wraps the basic Write method.</span>
<span class="hljs-keyword">type</span> Writer <span class="hljs-keyword">interface</span> {
<span class="hljs-comment">// Writer is the interface that wraps the basic Write method.</span>
<span class="hljs-keyword">type</span> Writer <span class="hljs-keyword">interface</span> {
<span class="hljs-comment">// Write writes len(p) bytes from p to the underlying data stream.</span>
<span class="hljs-comment">// It returns the number of bytes written from p (0 &lt;= n &lt;= len(p))</span>
<span class="hljs-comment">// and any error encountered that caused the write to stop early.</span>
<span class="hljs-comment">// Write must return a non-nil error if it returns n &lt; len(p).</span>
<span class="hljs-comment">// Write must not modify the slice data, even temporarily.</span>
<span class="hljs-comment">//</span>
<span class="hljs-comment">// Implementations must not retain p.</span>
Write(p []<span class="hljs-typename">byte</span>) (n <span class="hljs-typename">int</span>, err error)
}
<span class="hljs-comment">// Write writes len(p) bytes from p to the underlying data stream.</span>
<span class="hljs-comment">// It returns the number of bytes written from p (0 &lt;= n &lt;= len(p))</span>
<span class="hljs-comment">// and any error encountered that caused the write to stop early.</span>
<span class="hljs-comment">// Write must return a non-nil error if it returns n &lt; len(p).</span>
<span class="hljs-comment">// Write must not modify the slice data, even temporarily.</span>
<span class="hljs-comment">//</span>
<span class="hljs-comment">// Implementations must not retain p.</span>
Write(p []<span class="hljs-typename">byte</span>) (n <span class="hljs-typename">int</span>, err error)
</code></pre>
<p>io.Writer&#x985E;&#x578B;&#x5B9A;&#x7FA9;&#x4E86;&#x51FD;&#x6578;Fprintf&#x548C;&#x9019;&#x500B;&#x51FD;&#x6578;&#x8ABF;&#x7528;&#x8005;&#x4E4B;&#x9593;&#x7684;&#x7D04;&#x5B9A;&#x3002;&#x4E00;&#x65B9;&#x9762;&#x9019;&#x500B;&#x7D04;&#x5B9A;&#x9700;&#x8981;&#x8ABF;&#x7528;&#x8005;&#x63D0;&#x4F9B;&#x5177;&#x9AD4;&#x985E;&#x578B;&#x7684;&#x503C;&#x5C31;&#x50CF;*os.File&#x548C;*bytes.Buffer&#xFF0C;&#x9019;&#x4E9B;&#x985E;&#x578B;&#x90FD;&#x6709;&#x4E00;&#x500B;&#x7279;&#x5B9A;&#x7C64;&#x540D;&#x548C;&#x884C;&#x7232;&#x7684;Write&#x7684;&#x51FD;&#x6578;&#x3002;&#x53E6;&#x4E00;&#x65B9;&#x9762;&#x9019;&#x500B;&#x7D04;&#x5B9A;&#x4FDD;&#x8B49;&#x4E86;Fprintf&#x63A5;&#x53D7;&#x4EFB;&#x4F55;&#x6EFF;&#x8DB3;io.Writer&#x63A5;&#x53E3;&#x7684;&#x503C;&#x90FD;&#x53EF;&#x4EE5;&#x5DE5;&#x4F5C;&#x3002;Fprintf&#x51FD;&#x6578;&#x53EF;&#x80FD;&#x6C92;&#x6709;&#x5047;&#x5B9A;&#x5BEB;&#x5165;&#x7684;&#x662F;&#x4E00;&#x500B;&#x6587;&#x4EF6;&#x6216;&#x662F;&#x4E00;&#x6BB5;&#x5167;&#x5B58;&#xFF0C;&#x800C;&#x662F;&#x5BEB;&#x5165;&#x4E00;&#x500B;&#x53EF;&#x4EE5;&#x8ABF;&#x7528;Write&#x51FD;&#x6578;&#x7684;&#x503C;&#x3002;</p>
<p>&#x56E0;&#x7232;fmt.Fprintf&#x51FD;&#x6578;&#x6C92;&#x6709;&#x5C0D;&#x5177;&#x9AD4;&#x64CD;&#x4F5C;&#x7684;&#x503C;&#x505A;&#x4EFB;&#x4F55;&#x5047;&#x8A2D;&#x800C;&#x662F;&#x50C5;&#x50C5;&#x901A;&#x904E;io.Writer&#x63A5;&#x53E3;&#x7684;&#x7D04;&#x5B9A;&#x4F86;&#x4FDD;&#x8B49;&#x884C;&#x7232;&#xFF0C;&#x6240;&#x4EE5;&#x7B2C;&#x4E00;&#x500B;&#x53C3;&#x6578;&#x53EF;&#x4EE5;&#x5B89;&#x5168;&#x5730;&#x50B3;&#x5165;&#x4E00;&#x500B;&#x4EFB;&#x4F55;&#x5177;&#x9AD4;&#x985E;&#x578B;&#x7684;&#x503C;&#x96BB;&#x9700;&#x8981;&#x6EFF;&#x8DB3;io.Writer&#x63A5;&#x53E3;&#x3002;&#x4E00;&#x500B;&#x985E;&#x578B;&#x53EF;&#x4EE5;&#x81EA;&#x7531;&#x7684;&#x4F7F;&#x7528;&#x53E6;&#x4E00;&#x500B;&#x6EFF;&#x8DB3;&#x76F8;&#x540C;&#x63A5;&#x53E3;&#x7684;&#x985E;&#x578B;&#x4F86;&#x9032;&#x884C;&#x66FF;&#x63DB;&#x88AB;&#x7A31;&#x4F5C;&#x53EF;&#x66FF;&#x63DB;&#x6027;(LSP&#x91CC;&#x6C0F;&#x66FF;&#x63DB;)&#x3002;&#x9019;&#x662F;&#x4E00;&#x500B;&#x9762;&#x5411;&#x5C0D;&#x8C61;&#x7684;&#x7279;&#x5FB5;&#x3002;</p>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="7.2" data-chapter-title="接口類型" data-filepath="ch7/ch7-02.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="7.2" data-chapter-title="接口類型" data-filepath="ch7/ch7-02.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="7.3" data-chapter-title="實現接口的條件" data-filepath="ch7/ch7-03.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="7.3" data-chapter-title="實現接口的條件" data-filepath="ch7/ch7-03.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="7.4" data-chapter-title="flag.Value接口" data-filepath="ch7/ch7-04.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="7.4" data-chapter-title="flag.Value接口" data-filepath="ch7/ch7-04.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="7.5" data-chapter-title="接口值" data-filepath="ch7/ch7-05.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="7.5" data-chapter-title="接口值" data-filepath="ch7/ch7-05.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="7.6" data-chapter-title="sort.Interface接口" data-filepath="ch7/ch7-06.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="7.6" data-chapter-title="sort.Interface接口" data-filepath="ch7/ch7-06.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="7.7" data-chapter-title="http.Handler接口" data-filepath="ch7/ch7-07.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="7.7" data-chapter-title="http.Handler接口" data-filepath="ch7/ch7-07.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="7.8" data-chapter-title="error接口" data-filepath="ch7/ch7-08.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="7.8" data-chapter-title="error接口" data-filepath="ch7/ch7-08.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="7.9" data-chapter-title="示例: 表達式求值" data-filepath="ch7/ch7-09.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="7.9" data-chapter-title="示例: 表達式求值" data-filepath="ch7/ch7-09.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="7.10" data-chapter-title="類型斷言" data-filepath="ch7/ch7-10.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="7.10" data-chapter-title="類型斷言" data-filepath="ch7/ch7-10.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="7.11" data-chapter-title="基於類型斷言識别錯誤類型" data-filepath="ch7/ch7-11.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book" data-level="7.11" data-chapter-title="基於類型斷言識别錯誤類型" data-filepath="ch7/ch7-11.md" data-basepath=".." data-revision="Thu Dec 24 2015 14:42:02 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -1975,16 +1975,16 @@
</li>
<li class="chapter " data-level="14" data-path="errata.html">
<li class="chapter " data-level="14" data-path="CONTRIBUTORS.html">
<a href="../errata.html">
<a href="../CONTRIBUTORS.html">
<i class="fa fa-check"></i>
<b>14.</b>
勘誤
附録
</a>

Some files were not shown because too many files have changed in this diff Show More