This commit is contained in:
chai2010
2015-12-21 12:55:18 +08:00
parent 1d7534e3c3
commit 7ec2f7cdc1
152 changed files with 54426 additions and 8958 deletions

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="Wed Dec 16 2015 10:54:29 GMT+0800 (中国标准时间)">
<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-summary">
@@ -146,7 +146,7 @@
<b>0.5.</b>
</a>
@@ -212,7 +212,7 @@
<b>1.3.</b>
査找重的行
査找重的行
</a>
@@ -227,7 +227,7 @@
<b>1.4.</b>
GIF動
GIF動
</a>
@@ -257,7 +257,7 @@
<b>1.6.</b>
穫取多個URL
穫取多個URL
</a>
@@ -479,7 +479,7 @@
<b>3.3.</b>
</a>
@@ -494,7 +494,7 @@
<b>3.4.</b>
爾型
爾型
</a>
@@ -544,7 +544,7 @@
<b>4.</b>
復閤數據類型
複合數據類型
</a>
@@ -857,7 +857,7 @@
<b>6.2.</b>
基於指對象的方法
基於指對象的方法
</a>
@@ -887,7 +887,7 @@
<b>6.4.</b>
方法值和方法達式
方法值和方法達式
</a>
@@ -953,7 +953,7 @@
<b>7.1.</b>
接口是
接口是
</a>
@@ -1073,7 +1073,7 @@
<b>7.9.</b>
示例: 達式求值
示例: 達式求值
</a>
@@ -1103,7 +1103,7 @@
<b>7.11.</b>
基於類型斷言識錯誤類型
基於類型斷言識錯誤類型
</a>
@@ -1214,7 +1214,7 @@
<b>8.2.</b>
示例: 併的Clock服務
示例: 併的Clock服務
</a>
@@ -1229,7 +1229,7 @@
<b>8.3.</b>
示例: 併的Echo服務
示例: 併的Echo服務
</a>
@@ -1274,7 +1274,7 @@
<b>8.6.</b>
示例: 併的Web爬蟲
示例: 併的Web爬蟲
</a>
@@ -1289,7 +1289,7 @@
<b>8.7.</b>
基於select的多路
基於select的多路
</a>
@@ -1304,7 +1304,7 @@
<b>8.8.</b>
示例: 併的字典遍歷
示例: 併的字典遍歷
</a>
@@ -1319,7 +1319,7 @@
<b>8.9.</b>
的退齣
的退齣
</a>
@@ -1354,7 +1354,7 @@
<b>9.</b>
基於共享變量的併
基於共享變量的併
</a>
@@ -1415,7 +1415,7 @@
<b>9.4.</b>
內存
內存
</a>
@@ -1460,7 +1460,7 @@
<b>9.7.</b>
示例: 併的非阻塞緩存
示例: 併的非阻塞緩存
</a>
@@ -1475,7 +1475,7 @@
<b>9.8.</b>
Goroutines和
Goroutines和
</a>
@@ -1748,7 +1748,7 @@
<b>12.1.</b>
何需要反射?
何需要反射?
</a>
@@ -1793,7 +1793,7 @@
<b>12.4.</b>
示例: 編碼S達式
示例: 編碼S達式
</a>
@@ -1823,7 +1823,7 @@
<b>12.6.</b>
示例: 解碼S達式
示例: 解碼S達式
</a>
@@ -1975,50 +1975,14 @@
</li>
<li class="chapter " data-level="14" data-path="exercise/ex.html">
<a href="../exercise/ex.html">
<i class="fa fa-check"></i>
<b>14.</b>
習題解答
</a>
<ul class="articles">
<li class="chapter " data-level="14.1" data-path="exercise/ex-ch1.html">
<a href="../exercise/ex-ch1.html">
<i class="fa fa-check"></i>
<b>14.1.</b>
第一章 入門
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="15" data-path="errata.html">
<li class="chapter " data-level="14" data-path="errata.html">
<a href="../errata.html">
<i class="fa fa-check"></i>
<b>15.</b>
<b>14.</b>
勘誤
</a>
@@ -2060,7 +2024,7 @@
<section class="normal" id="section-">
<h2 id="21-&#x547D;&#x540D;">2.1. &#x547D;&#x540D;</h2>
<p>Go&#x8A9E;&#x8A00;&#x4E2D;&#x7684;&#x7684;&#x51FD;&#x6578;&#x540D;, &#x8B8A;&#x91CF;&#x540D;, &#x5E38;&#x91CF;&#x540D;, &#x985E;&#x578B;&#x540D;, &#x8A9E;&#x53E5;&#x6BB5;&#x6A19;&#x7C3D;&#x540D;, &#x548C; &#x5305;&#x540D; &#x7B49;&#x6240;&#x6709;&#x7684;&#x547D;&#x540D;, &#x90FD;&#x9075;&#x5FAA;&#x4E00;&#x500B;&#x547D;&#x540D;&#x898F;&#x5247;: &#x4E00;&#x500B;&#x540D;&#x5B57;&#x5FC5;&#x9B1A;&#x4EE5;&#x4E00;&#x500B;&#x5B57;&#x6BCD;(Unicode&#x5B57;&#x6BCD;)&#x6216;&#x4E0B;&#x5283;&#x7DAB;&#x958B;&#x982D;, &#x5F8C;&#x9EAB;&#x53EF;&#x4EE5;&#x8DDF;&#x4EFB;&#x610F;&#x6578;&#x91CF;&#x7684;&#x5B57;&#x6BCD;,&#x6578;&#x5B57;&#x6216;&#x4E0B;&#x5283;&#x7DAB;. &#x4E0D;&#x8855;&#x5927;&#x5C0F;&#x5BEB;&#x5B57;&#x6BCD;&#x662F;&#x4E0D;&#x8855;&#x7684;: <code>heapSort</code> &#x548C; <code>Heapsort</code> &#x662F;&#x5169;&#x500B;&#x4E0D;&#x8855;&#x7684;&#x540D;&#x5B57;.</p>
<p>Go&#x8A9E;&#x8A00;&#x4E2D;&#x7684;&#x7684;&#x51FD;&#x6578;&#x540D;, &#x8B8A;&#x91CF;&#x540D;, &#x5E38;&#x91CF;&#x540D;, &#x985E;&#x578B;&#x540D;, &#x8A9E;&#x53E5;&#x6BB5;&#x6A19;&#x7C64;&#x540D;, &#x548C; &#x5305;&#x540D; &#x7B49;&#x6240;&#x6709;&#x7684;&#x547D;&#x540D;, &#x90FD;&#x9075;&#x5FAA;&#x4E00;&#x500B;&#x547D;&#x540D;&#x898F;&#x5247;: &#x4E00;&#x500B;&#x540D;&#x5B57;&#x5FC5;&#x9B1A;&#x4EE5;&#x4E00;&#x500B;&#x5B57;&#x6BCD;(Unicode&#x5B57;&#x6BCD;)&#x6216;&#x4E0B;&#x5283;&#x7DDA;&#x958B;&#x982D;, &#x5F8C;&#x9762;&#x53EF;&#x4EE5;&#x8DDF;&#x4EFB;&#x610F;&#x6578;&#x91CF;&#x7684;&#x5B57;&#x6BCD;,&#x6578;&#x5B57;&#x6216;&#x4E0B;&#x5283;&#x7DDA;. &#x4E0D;&#x540C;&#x5927;&#x5C0F;&#x5BEB;&#x5B57;&#x6BCD;&#x662F;&#x4E0D;&#x540C;&#x7684;: <code>heapSort</code> &#x548C; <code>Heapsort</code> &#x662F;&#x5169;&#x500B;&#x4E0D;&#x540C;&#x7684;&#x540D;&#x5B57;.</p>
<p>Go&#x8A9E;&#x8A00;&#x985E;&#x4F3C; <code>if</code> &#x548C; <code>switch</code> &#x7684;&#x95DC;&#x9375;&#x5B57;&#x6709;25&#x500B;; &#x95DC;&#x9375;&#x5B57;&#x4E0D;&#x80FD;&#x7528;&#x65BC;&#x81EA;&#x5B9A;&#x7FA9;&#x540D;&#x5B57;, &#x96BB;&#x80FD;&#x5728;&#x7279;&#x5B9A;&#x8A9E;&#x6CD5;&#x4E2D;&#x4F7F;&#x7528;.</p>
<pre><code>break default func interface select
case defer go map struct
@@ -2079,9 +2043,9 @@ Functions: make len cap new append copy close delete
complex real imag
panic recover
</code></pre><p>&#x9019;&#x4E9B;&#x5167;&#x90E8;&#x9810;&#x5148;&#x5B9A;&#x7FA9;&#x7684;&#x540D;&#x5B57;&#x4E0D;&#x662F;&#x95DC;&#x9375;&#x5B57;, &#x4F60;&#x53EF;&#x4EE5;&#x5728;&#x5B9A;&#x7FA9;&#x4E2D;&#x91CD;&#x73FE;&#x4F7F;&#x7528;&#x5B83;&#x5011;. &#x5728;&#x4E00;&#x4E9B;&#x7279;&#x6B8A;&#x7684;&#x5834;&#x666F;&#x91CD;&#x65B0;&#x5B9A;&#x7FA9;&#x662F;&#x6709;&#x610F;&#x7FA9;&#x7684;, &#x4F46;&#x662F;&#x4E5F;&#x8981;&#x8A3B;&#x610F;&#x907F;&#x514D;&#x5F15;&#x8D77;&#x6DF7;&#x4E82;.</p>
<p>&#x5982;&#x679C;&#x4E00;&#x500B;&#x5BE6;&#x9AD4;&#x662F;&#x5728;&#x51FD;&#x6578;&#x5167;&#x90E8;&#x5B9A;&#x7FA9;, &#x90A3;&#x9EBC;&#x5B83;&#x7684;&#x5C31;&#x96BB;&#x5728;&#x51FD;&#x6578;&#x5167;&#x90E8;&#x6709;&#x6548;. &#x5982;&#x679C;&#x662F;&#x5728;&#x51FD;&#x6578;&#x5916;&#x90E8;&#x5B9A;&#x7FA9;, &#x90A3;&#x9EBC;&#x5C07;&#x5728;&#x7576;&#x524D;&#x5305;&#x7684;&#x6240;&#x6709;&#x6587;&#x4EF6;&#x4E2D;&#x90FD;&#x53EF;&#x4EE5;&#x8A2A;&#x554F;. &#x540D;&#x5B57;&#x7684;&#x958B;&#x982D;&#x5B57;&#x6BCD;&#x7684;&#x5927;&#x5C0F;&#x5BEB;&#x6C7A;&#x5B9A;&#x4E86;&#x540D;&#x5B57;&#x5728;&#x5305;&#x5916;&#x7684;&#x53EF;&#x898B;&#x6027;. &#x5982;&#x679C;&#x4E00;&#x500B;&#x540D;&#x5B57;&#x662F;&#x5927;&#x5BEB;&#x5B57;&#x6BCD;&#x958B;&#x982D;&#x7684;, &#x90A3;&#x9EBC;&#x5B83;&#x5C07;&#x662F;&#x5C0E;&#x9F63;&#x7684;, &#x4E5F;&#x5C31;&#x662F;&#x53EF;&#x4EE5;&#x88AB;&#x5916;&#x90E8;&#x7684;&#x5305;&#x8A2A;&#x554F;, &#x4F8B;&#x5982; <code>fmt</code> &#x5305;&#x7684; <code>Printf</code> &#x51FD;&#x6578;&#x5C31;&#x662F;&#x5C0E;&#x9F63;&#x7684;, &#x53EF;&#x4EE5;&#x5728; <code>fmt</code> &#x5305;&#x5916;&#x90E8;&#x8A2A;&#x554F;. &#x5305;&#x672C;&#x8EAB;&#x7684;&#x540D;&#x5B57;&#x4E00;&#x822C;&#x7E3D;&#x662F;&#x7528;&#x5C0F;&#x5BEB;&#x5B57;&#x6BCD;.</p>
<p>&#x540D;&#x5B57;&#x7684;&#x9577;&#x5EA6;&#x6C92;&#x6709;&#x9650;&#x88FD;, &#x4F46;&#x662F;Go&#x7684;&#x98A8;&#x683C;&#x662F;&#x76E1;&#x91CF;&#x4F7F;&#x7528;&#x77ED;&#x5C0F;&#x7684;&#x540D;&#x5B57;, &#x5C0D;&#x65BC;&#x4FB7;&#x90E8;&#x8B8A;&#x91CF;&#x5C24;&#x5176;&#x662F;&#x9019;&#x6A23;; &#x4F60;&#x6703;&#x7D93;&#x5E38;&#x770B;&#x5230; <code>i</code> &#x4E4B;&#x985E;&#x7684;&#x540D;&#x5B57;, &#x800C;&#x662F;&#x5197;&#x9577;&#x7684; <code>theLoopIndex</code>. &#x901A;&#x5E38;&#x4F86;&#x8AAA;, &#x5982;&#x679C;&#x4E00;&#x500B;&#x540D;&#x5B57;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#x6BD4;&#x8F03;&#x5927;, &#x751F;&#x547D;&#x9031;&#x671F;&#x8F03;&#x9577;, &#x90A3;&#x9EBC;&#x7528;&#x9577;&#x7684;&#x540D;&#x5B57;&#x5C07;&#x66F4;&#x6709;&#x610F;&#x7FA9;.</p>
<p>&#x5728;&#x7FD2;&#x6163;&#x4E0A;, Go&#x7A0B;&#x5E8F;&#x54E1;&#x63A8;&#x85A6;&#x4F7F;&#x7528;<code>&#x99DD;&#x5CEF;&#x5F0F;</code>&#x547D;&#x540D;, &#x7576;&#x540D;&#x5B57;&#x6709;&#x5E7E;&#x500B;&#x55AE;&#x8A5E;&#x7684;&#x6642;&#x512A;&#x5148;&#x4F7F;&#x7528;&#x5927;&#x5C0F;&#x5BEB;&#x5206;&#x9694;, &#x800C;&#x4E0D;&#x662F;&#x512A;&#x5148;&#x7528;&#x4E0B;&#x5283;&#x7DAB;&#x5206;&#x9694;. &#x56E0;&#x6B64;, &#x6A19;&#x6E96;&#x5EAB;&#x6709; <code>QuoteRuneToASCII</code> &#x548C; <code>parseRequestLine</code> &#x9019;&#x6A23;&#x7684;&#x51FD;&#x6578;&#x547D;&#x540D;, &#x4F46;&#x662F;&#x4E0D;&#x6703;&#x7528; <code>quote_rune_to_ASCII</code> &#x548C; <code>parse_request_line</code> &#x9019;&#x6A23;&#x7684;&#x547D;&#x540D;. &#x50CF; <code>ASCII</code> &#x548C; <code>HTML</code> &#x9019;&#x6A23;&#x7684;&#x7E2E;&#x7565;&#x8A5E;&#x907F;&#x514D;&#x4F7F;&#x7528;&#x5927;&#x5C0F;&#x5BEB;&#x6DF7;&#x95A4;, &#x5B83;&#x5011;&#x53EF;&#x80FD;&#x88AB;&#x7A31;&#x70BA; <code>htmlEscape</code>, <code>HTMLEscape</code> &#x6216; <code>escapeHTML</code>, &#x4F46;&#x4E0D;&#x6703;&#x662F; <code>escapeHtml</code>.</p>
<p>&#x5982;&#x679C;&#x4E00;&#x500B;&#x5BE6;&#x9AD4;&#x662F;&#x5728;&#x51FD;&#x6578;&#x5167;&#x90E8;&#x5B9A;&#x7FA9;, &#x90A3;&#x9EBD;&#x5B83;&#x7684;&#x5C31;&#x96BB;&#x5728;&#x51FD;&#x6578;&#x5167;&#x90E8;&#x6709;&#x6548;. &#x5982;&#x679C;&#x662F;&#x5728;&#x51FD;&#x6578;&#x5916;&#x90E8;&#x5B9A;&#x7FA9;, &#x90A3;&#x9EBD;&#x5C07;&#x5728;&#x7576;&#x524D;&#x5305;&#x7684;&#x6240;&#x6709;&#x6587;&#x4EF6;&#x4E2D;&#x90FD;&#x53EF;&#x4EE5;&#x8A2A;&#x554F;. &#x540D;&#x5B57;&#x7684;&#x958B;&#x982D;&#x5B57;&#x6BCD;&#x7684;&#x5927;&#x5C0F;&#x5BEB;&#x6C7A;&#x5B9A;&#x4E86;&#x540D;&#x5B57;&#x5728;&#x5305;&#x5916;&#x7684;&#x53EF;&#x898B;&#x6027;. &#x5982;&#x679C;&#x4E00;&#x500B;&#x540D;&#x5B57;&#x662F;&#x5927;&#x5BEB;&#x5B57;&#x6BCD;&#x958B;&#x982D;&#x7684;, &#x90A3;&#x9EBD;&#x5B83;&#x5C07;&#x662F;&#x5C0E;&#x9F63;&#x7684;, &#x4E5F;&#x5C31;&#x662F;&#x53EF;&#x4EE5;&#x88AB;&#x5916;&#x90E8;&#x7684;&#x5305;&#x8A2A;&#x554F;, &#x4F8B;&#x5982; <code>fmt</code> &#x5305;&#x7684; <code>Printf</code> &#x51FD;&#x6578;&#x5C31;&#x662F;&#x5C0E;&#x9F63;&#x7684;, &#x53EF;&#x4EE5;&#x5728; <code>fmt</code> &#x5305;&#x5916;&#x90E8;&#x8A2A;&#x554F;. &#x5305;&#x672C;&#x8EAB;&#x7684;&#x540D;&#x5B57;&#x4E00;&#x822C;&#x7E3D;&#x662F;&#x7528;&#x5C0F;&#x5BEB;&#x5B57;&#x6BCD;.</p>
<p>&#x540D;&#x5B57;&#x7684;&#x9577;&#x5EA6;&#x6C92;&#x6709;&#x9650;&#x88FD;, &#x4F46;&#x662F;Go&#x7684;&#x98A8;&#x683C;&#x662F;&#x76E1;&#x91CF;&#x4F7F;&#x7528;&#x77ED;&#x5C0F;&#x7684;&#x540D;&#x5B57;, &#x5C0D;&#x65BC;&#x5C40;&#x90E8;&#x8B8A;&#x91CF;&#x5C24;&#x5176;&#x662F;&#x9019;&#x6A23;; &#x4F60;&#x6703;&#x7D93;&#x5E38;&#x770B;&#x5230; <code>i</code> &#x4E4B;&#x985E;&#x7684;&#x540D;&#x5B57;, &#x800C;&#x662F;&#x5197;&#x9577;&#x7684; <code>theLoopIndex</code>. &#x901A;&#x5E38;&#x4F86;&#x8AAC;, &#x5982;&#x679C;&#x4E00;&#x500B;&#x540D;&#x5B57;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#x6BD4;&#x8F03;&#x5927;, &#x751F;&#x547D;&#x9031;&#x671F;&#x8F03;&#x9577;, &#x90A3;&#x9EBD;&#x7528;&#x9577;&#x7684;&#x540D;&#x5B57;&#x5C07;&#x66F4;&#x6709;&#x610F;&#x7FA9;.</p>
<p>&#x5728;&#x7FD2;&#x6163;&#x4E0A;, Go&#x7A0B;&#x5E8F;&#x54E1;&#x63A8;&#x85A6;&#x4F7F;&#x7528;<code>&#x99DD;&#x5CEF;&#x5F0F;</code>&#x547D;&#x540D;, &#x7576;&#x540D;&#x5B57;&#x6709;&#x5E7E;&#x500B;&#x55AE;&#x8A5E;&#x7684;&#x6642;&#x512A;&#x5148;&#x4F7F;&#x7528;&#x5927;&#x5C0F;&#x5BEB;&#x5206;&#x9694;, &#x800C;&#x4E0D;&#x662F;&#x512A;&#x5148;&#x7528;&#x4E0B;&#x5283;&#x7DDA;&#x5206;&#x9694;. &#x56E0;&#x6B64;, &#x6A19;&#x6E96;&#x5EAB;&#x6709; <code>QuoteRuneToASCII</code> &#x548C; <code>parseRequestLine</code> &#x9019;&#x6A23;&#x7684;&#x51FD;&#x6578;&#x547D;&#x540D;, &#x4F46;&#x662F;&#x4E0D;&#x6703;&#x7528; <code>quote_rune_to_ASCII</code> &#x548C; <code>parse_request_line</code> &#x9019;&#x6A23;&#x7684;&#x547D;&#x540D;. &#x50CF; <code>ASCII</code> &#x548C; <code>HTML</code> &#x9019;&#x6A23;&#x7684;&#x7E2E;&#x7565;&#x8A5E;&#x907F;&#x514D;&#x4F7F;&#x7528;&#x5927;&#x5C0F;&#x5BEB;&#x6DF7;&#x5408;, &#x5B83;&#x5011;&#x53EF;&#x80FD;&#x88AB;&#x7A31;&#x7232; <code>htmlEscape</code>, <code>HTMLEscape</code> &#x6216; <code>escapeHTML</code>, &#x4F46;&#x4E0D;&#x6703;&#x662F; <code>escapeHtml</code>.</p>
</section>

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="Wed Dec 16 2015 10:54:29 GMT+0800 (中国标准时间)">
<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-summary">
@@ -146,7 +146,7 @@
<b>0.5.</b>
</a>
@@ -212,7 +212,7 @@
<b>1.3.</b>
査找重的行
査找重的行
</a>
@@ -227,7 +227,7 @@
<b>1.4.</b>
GIF動
GIF動
</a>
@@ -257,7 +257,7 @@
<b>1.6.</b>
穫取多個URL
穫取多個URL
</a>
@@ -479,7 +479,7 @@
<b>3.3.</b>
</a>
@@ -494,7 +494,7 @@
<b>3.4.</b>
爾型
爾型
</a>
@@ -544,7 +544,7 @@
<b>4.</b>
復閤數據類型
複合數據類型
</a>
@@ -857,7 +857,7 @@
<b>6.2.</b>
基於指對象的方法
基於指對象的方法
</a>
@@ -887,7 +887,7 @@
<b>6.4.</b>
方法值和方法達式
方法值和方法達式
</a>
@@ -953,7 +953,7 @@
<b>7.1.</b>
接口是
接口是
</a>
@@ -1073,7 +1073,7 @@
<b>7.9.</b>
示例: 達式求值
示例: 達式求值
</a>
@@ -1103,7 +1103,7 @@
<b>7.11.</b>
基於類型斷言識錯誤類型
基於類型斷言識錯誤類型
</a>
@@ -1214,7 +1214,7 @@
<b>8.2.</b>
示例: 併的Clock服務
示例: 併的Clock服務
</a>
@@ -1229,7 +1229,7 @@
<b>8.3.</b>
示例: 併的Echo服務
示例: 併的Echo服務
</a>
@@ -1274,7 +1274,7 @@
<b>8.6.</b>
示例: 併的Web爬蟲
示例: 併的Web爬蟲
</a>
@@ -1289,7 +1289,7 @@
<b>8.7.</b>
基於select的多路
基於select的多路
</a>
@@ -1304,7 +1304,7 @@
<b>8.8.</b>
示例: 併的字典遍歷
示例: 併的字典遍歷
</a>
@@ -1319,7 +1319,7 @@
<b>8.9.</b>
的退齣
的退齣
</a>
@@ -1354,7 +1354,7 @@
<b>9.</b>
基於共享變量的併
基於共享變量的併
</a>
@@ -1415,7 +1415,7 @@
<b>9.4.</b>
內存
內存
</a>
@@ -1460,7 +1460,7 @@
<b>9.7.</b>
示例: 併的非阻塞緩存
示例: 併的非阻塞緩存
</a>
@@ -1475,7 +1475,7 @@
<b>9.8.</b>
Goroutines和
Goroutines和
</a>
@@ -1748,7 +1748,7 @@
<b>12.1.</b>
何需要反射?
何需要反射?
</a>
@@ -1793,7 +1793,7 @@
<b>12.4.</b>
示例: 編碼S達式
示例: 編碼S達式
</a>
@@ -1823,7 +1823,7 @@
<b>12.6.</b>
示例: 解碼S達式
示例: 解碼S達式
</a>
@@ -1975,50 +1975,14 @@
</li>
<li class="chapter " data-level="14" data-path="exercise/ex.html">
<a href="../exercise/ex.html">
<i class="fa fa-check"></i>
<b>14.</b>
習題解答
</a>
<ul class="articles">
<li class="chapter " data-level="14.1" data-path="exercise/ex-ch1.html">
<a href="../exercise/ex-ch1.html">
<i class="fa fa-check"></i>
<b>14.1.</b>
第一章 入門
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="15" data-path="errata.html">
<li class="chapter " data-level="14" data-path="errata.html">
<a href="../errata.html">
<i class="fa fa-check"></i>
<b>15.</b>
<b>14.</b>
勘誤
</a>
@@ -2060,9 +2024,9 @@
<section class="normal" id="section-">
<h2 id="22-&#x8072;&#x660E;">2.2. &#x8072;&#x660E;</h2>
<p>&#x8072;&#x660E;&#x5B9A;&#x7FA9;&#x4E86;&#x7A0B;&#x5E8F;&#x7684;&#x5165;&#x53E3;&#x4EE5;&#x53CA;&#x90E8;&#x5206;&#x6216;&#x5168;&#x90E8;&#x7684;&#x5C6C;&#x6027;. Go&#x4E3B;&#x8981;&#x6709;&#x56DB;&#x7A2E;&#x8072;&#x660E;&#x985E;&#x578B;: var, const, type, &#x548C; func, &#x5206;&#x5F46;&#x5C0D;&#x61C9; &#x8B8A;&#x91CF;, &#x5E38;&#x91CF;, &#x985E;&#x578B;, &#x548C; &#x51FD;&#x6578;&#x7684; &#x8072;&#x660E;. &#x9019;&#x4E00;&#x7AE0;&#x6211;&#x5011;&#x91CD;&#x9EDE;&#x8A0E;&#x8AD6;&#x8B8A;&#x91CF;&#x548C;&#x985E;&#x578B;&#x7684;&#x8072;&#x660E;, &#x7B2C;&#x4E09;&#x7AE0;&#x5C07;&#x8A0E;&#x8AD6;&#x5E38;&#x91CF;&#x7684;&#x8072;&#x660E;, &#x7B2C;&#x4E94;&#x7AE0;&#x5C07;&#x8A0E;&#x8AD6;&#x51FD;&#x6578;&#x7684;&#x8072;&#x660E;.</p>
<p>&#x4E00;&#x500B;Go&#x7A0B;&#x5E8F;&#x5B58;&#x5132;&#x5728;&#x4E00;&#x500B;&#x6216;&#x591A;&#x500B;&#x4EE5;<code>.go</code>&#x70BA;&#x5F8C;&#x7DB4;&#x540D;&#x7684;&#x6587;&#x4EF6;&#x4E2D;. &#x6BCF;&#x500B;&#x6587;&#x4EF6;&#x4EE5;&#x500B;&#x5305;&#x7684;&#x8072;&#x660E;&#x958B;&#x59CB;, &#x4EE5;&#x8AAA;&#x660E;&#x6587;&#x4EF6;&#x662F;&#x5C6C;&#x65BC;&#x5305;&#x7684;&#x4E00;&#x90E8;&#x5206;.
&#x5305;&#x8072;&#x660E;&#x4E4B;&#x5F8C;&#x662F; import &#x5C0E;&#x5165;&#x8072;&#x660E;, &#x7136;&#x5F8C;&#x662F;&#x5305;&#x4E00;&#x7D1A;&#x7684;&#x985E;&#x578B;/&#x8B8A;&#x91CF;/&#x5E38;&#x91CF;/&#x51FD;&#x6578;&#x7684;&#x8072;&#x660E;, &#x8072;&#x660E;&#x7684;&#x9806;&#x5E8F;&#x7121;&#x95DC;&#x7DCA;&#x8981;. &#x4F8B;&#x5982;, &#x4E0B;&#x9EAB;&#x7684;&#x4F8B;&#x5B50;&#x8072;&#x660E;&#x4E86;&#x4E00;&#x500B;&#x5E38;&#x91CF;, &#x4E00;&#x500B;&#x51FD;&#x6578;&#x548C;&#x5169;&#x500B;&#x8B8A;&#x91CF;:</p>
<p>&#x8072;&#x660E;&#x5B9A;&#x7FA9;&#x4E86;&#x7A0B;&#x5E8F;&#x7684;&#x5165;&#x53E3;&#x4EE5;&#x53CA;&#x90E8;&#x5206;&#x6216;&#x5168;&#x90E8;&#x7684;&#x5C6C;&#x6027;. Go&#x4E3B;&#x8981;&#x6709;&#x56DB;&#x7A2E;&#x8072;&#x660E;&#x985E;&#x578B;: var, const, type, &#x548C; func, &#x5206;&#x522B;&#x5C0D;&#x61C9; &#x8B8A;&#x91CF;, &#x5E38;&#x91CF;, &#x985E;&#x578B;, &#x548C; &#x51FD;&#x6578;&#x7684; &#x8072;&#x660E;. &#x9019;&#x4E00;&#x7AE0;&#x6211;&#x5011;&#x91CD;&#x9EDE;&#x8A0E;&#x8AD6;&#x8B8A;&#x91CF;&#x548C;&#x985E;&#x578B;&#x7684;&#x8072;&#x660E;, &#x7B2C;&#x4E09;&#x7AE0;&#x5C07;&#x8A0E;&#x8AD6;&#x5E38;&#x91CF;&#x7684;&#x8072;&#x660E;, &#x7B2C;&#x4E94;&#x7AE0;&#x5C07;&#x8A0E;&#x8AD6;&#x51FD;&#x6578;&#x7684;&#x8072;&#x660E;.</p>
<p>&#x4E00;&#x500B;Go&#x7A0B;&#x5E8F;&#x5B58;&#x5132;&#x5728;&#x4E00;&#x500B;&#x6216;&#x591A;&#x500B;&#x4EE5;<code>.go</code>&#x7232;&#x5F8C;&#x7DB4;&#x540D;&#x7684;&#x6587;&#x4EF6;&#x4E2D;. &#x6BCF;&#x500B;&#x6587;&#x4EF6;&#x4EE5;&#x500B;&#x5305;&#x7684;&#x8072;&#x660E;&#x958B;&#x59CB;, &#x4EE5;&#x8AAC;&#x660E;&#x6587;&#x4EF6;&#x662F;&#x5C6C;&#x65BC;&#x5305;&#x7684;&#x4E00;&#x90E8;&#x5206;.
&#x5305;&#x8072;&#x660E;&#x4E4B;&#x5F8C;&#x662F; import &#x5C0E;&#x5165;&#x8072;&#x660E;, &#x7136;&#x5F8C;&#x662F;&#x5305;&#x4E00;&#x7D1A;&#x7684;&#x985E;&#x578B;/&#x8B8A;&#x91CF;/&#x5E38;&#x91CF;/&#x51FD;&#x6578;&#x7684;&#x8072;&#x660E;, &#x8072;&#x660E;&#x7684;&#x9806;&#x5E8F;&#x7121;&#x95DC;&#x7DCA;&#x8981;. &#x4F8B;&#x5982;, &#x4E0B;&#x9762;&#x7684;&#x4F8B;&#x5B50;&#x8072;&#x660E;&#x4E86;&#x4E00;&#x500B;&#x5E38;&#x91CF;, &#x4E00;&#x500B;&#x51FD;&#x6578;&#x548C;&#x5169;&#x500B;&#x8B8A;&#x91CF;:</p>
<pre><code class="lang-Go">gopl.io/ch2/boiling
<span class="hljs-comment">// Boiling prints the boiling point of water.</span>
<span class="hljs-keyword">package</span> main
@@ -2079,9 +2043,9 @@
<span class="hljs-comment">// boiling point = 212&#xB0;F or 100&#xB0;C</span>
}
</code></pre>
<p>&#x5176;&#x4E2D; &#x5E38;&#x91CF; <code>boilingF</code> &#x662F;&#x5728;&#x5305;&#x4E00;&#x7D1A;&#x8072;&#x660E;&#x7684;, &#x7136;&#x5F8C; <code>f</code> &#x548C; <code>c</code> &#x662F;&#x5728; main &#x51FD;&#x6578;&#x5167;&#x90E8;&#x8072;&#x660E;&#x7684;. &#x5728;&#x5305;&#x4E00;&#x7D1A;&#x8072;&#x660E;&#x7684;&#x540D;&#x5B57;&#x53EF;&#x5728;&#x6574;&#x500B;&#x5305;&#x8A2A;&#x554F;, &#x800C;&#x4E0D;&#x50C5;&#x50C5;&#x5728;&#x5176;&#x8072;&#x660E;&#x7684;&#x6587;&#x4EF6;&#x4E2D;&#x8A2A;&#x554F;. &#x76F8;&#x6BD4;&#x4E4B;&#x4E0B;, &#x4FB7;&#x90E8;&#x8072;&#x660E;&#x7684;&#x540D;&#x5B57;&#x5C31;&#x96BB;&#x80FD;&#x5728;&#x51FD;&#x6578;&#x5167;&#x90E8;&#x5F88;&#x5C0F;&#x7684;&#x90E8;&#x5206;&#x53EF;&#x8A2A;&#x554F;.</p>
<p>&#x4E00;&#x500B;&#x51FD;&#x6578;&#x7684;&#x8072;&#x660E;&#x6709;&#x4E00;&#x500B;&#x51FD;&#x6578;&#x540D;&#x5B57;, &#x53C3;&#x6578;&#x5217;&#x9336;(&#x7531;&#x51FD;&#x6578;&#x7684;&#x8ABF;&#x7528;&#x8005;&#x63D0;&#x4F9B;&#x53C3;&#x6578;&#x8B8A;&#x91CF;&#x7684;&#x5177;&#x9AD4;&#x503C;), &#x4E00;&#x500B;&#x53EF;&#x9078;&#x7684;&#x8FD4;&#x8FF4;&#x503C;&#x5217;&#x9336;, &#x548C;&#x5305;&#x542B;&#x51FD;&#x6578;&#x8A9E;&#x53E5;&#x5B9A;&#x7FA9;&#x7684;&#x51FD;&#x6578;&#x9AD4;. &#x5982;&#x679C;&#x51FD;&#x6578;&#x6C92;&#x6709;&#x8FD4;&#x8FF4;&#x503C;, &#x90A3;&#x9EBC;&#x8FD4;&#x8FF4;&#x503C;&#x5217;&#x9336;&#x662F;&#x7701;&#x7565;&#x7684;. &#x57F7;&#x884C;&#x51FD;&#x6578;&#x5F9E;&#x51FD;&#x6578;&#x7684;&#x7B2C;&#x4E00;&#x500B;&#x8A9E;&#x53E5;&#x958B;&#x59CB;, &#x4F46;&#x662F;&#x9806;&#x5E8F;&#x57F7;&#x884C;&#x76F4;&#x5230;&#x9047;&#x5230; renturn &#x8FD4;&#x8FF4;&#x8A9E;&#x8A00;, &#x5982;&#x679C;&#x6C92;&#x6709;&#x8FD4;&#x8FF4;&#x8A9E;&#x53E5;&#x5247;&#x662F;&#x5230;&#x51FD;&#x6578;&#x672B;&#x5C3E;, &#x7136;&#x5F8C;&#x8FD4;&#x8FF4;&#x5230;&#x8ABF;&#x7528;&#x8005;.</p>
<p>&#x6211;&#x5011;&#x5DF2;&#x7D93;&#x770B;&#x5230;&#x904E;&#x5F88;&#x591A;&#x51FD;&#x6578;&#x7684;&#x4F8B;&#x5B50;&#x4E86;, &#x5728;&#x7B2C;&#x4E94;&#x7AE0;&#x5C07;&#x6DF1;&#x5165;&#x8A0E;&#x8AD6;&#x51FD;&#x6578;&#x7684;&#x7D30;&#x7BC0;, &#x9019;&#x88CF;&#x96BB;&#x7C97;&#x7565;&#x8AAA;&#x4E0B;. &#x4E0B;&#x9EAB;&#x7684; <code>fToC</code> &#x51FD;&#x6578;&#x5C01;&#x88DD;&#x4E86;&#x6EAB;&#x5EA6;&#x8F49;&#x63DB;&#x7684;&#x908F;&#x8F2F;, &#x9019;&#x6A23;&#x5B83;&#x96BB;&#x9700;&#x8981;&#x5B9A;&#x7FA9;&#x4E00;&#x6B21;, &#x5C31;&#x53EF;&#x4EE5;&#x5728;&#x591A;&#x500B;&#x5730;&#x65B9;&#x591A;&#x6B21;&#x4F7F;&#x7528;. &#x9019;&#x500B;&#x4F8B;&#x5B50;&#x4E2D;, main &#x51FD;&#x6578;&#x5C31;&#x8ABF;&#x7528;&#x4E86;&#x5169;&#x6B21; <code>fToC</code> &#x51FD;&#x6578;, &#x5206;&#x5F46;&#x662F;&#x4F7F;&#x7528;&#x4FB7;&#x90E8;&#x5B9A;&#x7FA9;&#x7684;&#x5169;&#x500B;&#x5E38;&#x91CF;&#x4F5C;&#x70BA;&#x51FD;&#x6578;&#x53C3;&#x6578;.</p>
<p>&#x5176;&#x4E2D; &#x5E38;&#x91CF; <code>boilingF</code> &#x662F;&#x5728;&#x5305;&#x4E00;&#x7D1A;&#x8072;&#x660E;&#x7684;, &#x7136;&#x5F8C; <code>f</code> &#x548C; <code>c</code> &#x662F;&#x5728; main &#x51FD;&#x6578;&#x5167;&#x90E8;&#x8072;&#x660E;&#x7684;. &#x5728;&#x5305;&#x4E00;&#x7D1A;&#x8072;&#x660E;&#x7684;&#x540D;&#x5B57;&#x53EF;&#x5728;&#x6574;&#x500B;&#x5305;&#x8A2A;&#x554F;, &#x800C;&#x4E0D;&#x50C5;&#x50C5;&#x5728;&#x5176;&#x8072;&#x660E;&#x7684;&#x6587;&#x4EF6;&#x4E2D;&#x8A2A;&#x554F;. &#x76F8;&#x6BD4;&#x4E4B;&#x4E0B;, &#x5C40;&#x90E8;&#x8072;&#x660E;&#x7684;&#x540D;&#x5B57;&#x5C31;&#x96BB;&#x80FD;&#x5728;&#x51FD;&#x6578;&#x5167;&#x90E8;&#x5F88;&#x5C0F;&#x7684;&#x90E8;&#x5206;&#x53EF;&#x8A2A;&#x554F;.</p>
<p>&#x4E00;&#x500B;&#x51FD;&#x6578;&#x7684;&#x8072;&#x660E;&#x6709;&#x4E00;&#x500B;&#x51FD;&#x6578;&#x540D;&#x5B57;, &#x53C3;&#x6578;&#x5217;&#x8868;(&#x7531;&#x51FD;&#x6578;&#x7684;&#x8ABF;&#x7528;&#x8005;&#x63D0;&#x4F9B;&#x53C3;&#x6578;&#x8B8A;&#x91CF;&#x7684;&#x5177;&#x9AD4;&#x503C;), &#x4E00;&#x500B;&#x53EF;&#x9078;&#x7684;&#x8FD4;&#x8FF4;&#x503C;&#x5217;&#x8868;, &#x548C;&#x5305;&#x542B;&#x51FD;&#x6578;&#x8A9E;&#x53E5;&#x5B9A;&#x7FA9;&#x7684;&#x51FD;&#x6578;&#x9AD4;. &#x5982;&#x679C;&#x51FD;&#x6578;&#x6C92;&#x6709;&#x8FD4;&#x8FF4;&#x503C;, &#x90A3;&#x9EBD;&#x8FD4;&#x8FF4;&#x503C;&#x5217;&#x8868;&#x662F;&#x7701;&#x7565;&#x7684;. &#x57F7;&#x884C;&#x51FD;&#x6578;&#x5F9E;&#x51FD;&#x6578;&#x7684;&#x7B2C;&#x4E00;&#x500B;&#x8A9E;&#x53E5;&#x958B;&#x59CB;, &#x4F46;&#x662F;&#x9806;&#x5E8F;&#x57F7;&#x884C;&#x76F4;&#x5230;&#x9047;&#x5230; renturn &#x8FD4;&#x8FF4;&#x8A9E;&#x8A00;, &#x5982;&#x679C;&#x6C92;&#x6709;&#x8FD4;&#x8FF4;&#x8A9E;&#x53E5;&#x5247;&#x662F;&#x5230;&#x51FD;&#x6578;&#x672B;&#x5C3E;, &#x7136;&#x5F8C;&#x8FD4;&#x8FF4;&#x5230;&#x8ABF;&#x7528;&#x8005;.</p>
<p>&#x6211;&#x5011;&#x5DF2;&#x7D93;&#x770B;&#x5230;&#x904E;&#x5F88;&#x591A;&#x51FD;&#x6578;&#x7684;&#x4F8B;&#x5B50;&#x4E86;, &#x5728;&#x7B2C;&#x4E94;&#x7AE0;&#x5C07;&#x6DF1;&#x5165;&#x8A0E;&#x8AD6;&#x51FD;&#x6578;&#x7684;&#x7D30;&#x7BC0;, &#x9019;&#x91CC;&#x96BB;&#x7C97;&#x7565;&#x8AAC;&#x4E0B;. &#x4E0B;&#x9762;&#x7684; <code>fToC</code> &#x51FD;&#x6578;&#x5C01;&#x88DD;&#x4E86;&#x6EAB;&#x5EA6;&#x8F49;&#x63DB;&#x7684;&#x908F;&#x8F2F;, &#x9019;&#x6A23;&#x5B83;&#x96BB;&#x9700;&#x8981;&#x5B9A;&#x7FA9;&#x4E00;&#x6B21;, &#x5C31;&#x53EF;&#x4EE5;&#x5728;&#x591A;&#x500B;&#x5730;&#x65B9;&#x591A;&#x6B21;&#x4F7F;&#x7528;. &#x9019;&#x500B;&#x4F8B;&#x5B50;&#x4E2D;, main &#x51FD;&#x6578;&#x5C31;&#x8ABF;&#x7528;&#x4E86;&#x5169;&#x6B21; <code>fToC</code> &#x51FD;&#x6578;, &#x5206;&#x522B;&#x662F;&#x4F7F;&#x7528;&#x5C40;&#x90E8;&#x5B9A;&#x7FA9;&#x7684;&#x5169;&#x500B;&#x5E38;&#x91CF;&#x4F5C;&#x7232;&#x51FD;&#x6578;&#x53C3;&#x6578;.</p>
<pre><code class="lang-Go">gopl.io/ch2/ftoc
<span class="hljs-comment">// Ftoc prints two Fahrenheit-to-Celsius conversions.</span>
<span class="hljs-keyword">package</span> main

View File

@@ -1,6 +1,6 @@
### 2.3.1. 簡短變量聲明
在函數內部, 有一種稱簡短變量聲明的形式可用於聲明和初始化部變量. 以 `名字 := 達式` 方式聲明變量, 變量的類型根據達式來推導. 這函數中是三個簡短變量聲明語句(§1.4):
在函數內部, 有一種稱簡短變量聲明的形式可用於聲明和初始化部變量. 以 `名字 := 達式` 方式聲明變量, 變量的類型根據達式來推導. 這函數中是三個簡短變量聲明語句(§1.4):
```Go
anim := gif.GIF{LoopCount: nframes}
@@ -8,7 +8,7 @@ freq := rand.Float64() * 3.0
t := 0.0
```
簡潔和靈活性, 簡短變量聲明用於大部分的部變量的聲明和初始化. var 方式的聲明往往是用於需要顯示指定類型的部變量, 或者因稍後會被賦值而初始值無關緊要的變量.
簡潔和靈活性, 簡短變量聲明用於大部分的部變量的聲明和初始化. var 方式的聲明往往是用於需要顯示指定類型的部變量, 或者因稍後會被賦值而初始值無關緊要的變量.
```Go
@@ -27,7 +27,7 @@ i, j := 0, 1
但是這種聲明多個變量的方式隻簡易在可以提高代碼可讀性的地方使用, 比如 for 循環的初始化部分.
請記住 `:=` 是一個變量聲明, 而 `=` 是一個賦值操作. 不要混淆多個變量的聲明和元組的多重(§2.4.1), 後者是將右邊的達式值賦給左邊對應位置的變量:
請記住 `:=` 是一個變量聲明, 而 `=` 是一個賦值操作. 不要混淆多個變量的聲明和元組的多重(§2.4.1), 後者是將右邊的達式值賦給左邊對應位置的變量:
```Go
i, j = j, i // 交換 i 和 j 的值
@@ -44,9 +44,9 @@ if err != nil {
f.Close()
```
有一個比較微妙的地方: 簡短變量聲明左邊的全部變量可能併不是全部都是剛剛聲明的. 如果有一些已經在相的詞法塊聲明過了(§2.7), 那簡短變量聲明對這些已經聲明過的變量就隻有賦值行了.
有一個比較微妙的地方: 簡短變量聲明左邊的全部變量可能併不是全部都是剛剛聲明的. 如果有一些已經在相的詞法塊聲明過了(§2.7), 那簡短變量聲明對這些已經聲明過的變量就隻有賦值行了.
在下的代碼中, 第一個語句聲明了 in 和 err 變量. 第二個語句隻聲明了 out, 然後對已經聲明的 err 進行賦值.
在下的代碼中, 第一個語句聲明了 in 和 err 變量. 第二個語句隻聲明了 out, 然後對已經聲明的 err 進行賦值.
```Go
in, err := os.Open(infile)
@@ -64,6 +64,6 @@ f, err := os.Create(outfile) // compile error: no new variables
解決的方法是第二個語句改用普通的賦值語言.
簡短變量聲明隻有對在變量已經在級詞法域聲明過的變量纔和賦值操作等, 如果變量是在外部詞法域聲明了, 那將會聲明一個新變量. 我們在本章後將會看到類似的例子.
簡短變量聲明隻有對在變量已經在級詞法域聲明過的變量纔和賦值操作等, 如果變量是在外部詞法域聲明了, 那將會聲明一個新變量. 我們在本章後將會看到類似的例子.

View File

@@ -1,10 +1,10 @@
### 2.3.2 指
### 2.3.2 指
一個變量對應一個保存了一個值的內存空間. 變量在聲明語句創建時綁定一個名字, 比如 x, 但是還有很多變量始終以達式方式引入, 例如 x[i] 或 x.f. 所有這些達式都讀取一個變量的值, 除非它們是齣現在賦值語句的左邊, 這種時候是給變量賦予一個新值.
一個變量對應一個保存了一個值的內存空間. 變量在聲明語句創建時綁定一個名字, 比如 x, 但是還有很多變量始終以達式方式引入, 例如 x[i] 或 x.f. 所有這些達式都讀取一個變量的值, 除非它們是齣現在賦值語句的左邊, 這種時候是給變量賦予一個新值.
一個指的值是一個變量的地址. 一個指對應變量在內存中的存儲位置. 併不是每一個值都會有一個地址, 但是對於每一個變量必然有對應的地址. 通過指, 我們可以直接讀或更新變量的值, 而不需要知道變量的名字(卽使變量有名字的話).
一個指的值是一個變量的地址. 一個指對應變量在內存中的存儲位置. 併不是每一個值都會有一個地址, 但是對於每一個變量必然有對應的地址. 通過指, 我們可以直接讀或更新變量的值, 而不需要知道變量的名字(卽使變量有名字的話).
如果這樣聲明一個變量 `var x int`, 那 `&x` 達式(x的地址)將生一個指整數變量的指, 對應的數據類型是 `*int`, 稱之 "指 int 的指". 如果指名字 p, 那可以 "p 指鍼指曏 x", 或者 "p 指保存了 x 變量的地址". `*p` 對應 p 指鍼指曏的變量的值. `*p` 達式讀取變量的值, int 類型, 時因 `*p` 對應一個變量, 所以可以齣現在賦值語句的左邊, 用於更新所指的變量的值.
如果這樣聲明一個變量 `var x int`, 那 `&x` 達式(x的地址)將生一個指整數變量的指, 對應的數據類型是 `*int`, 稱之 "指 int 的指". 如果指名字 p, 那可以 "p 指針指向 x", 或者 "p 指保存了 x 變量的地址". `*p` 對應 p 指針指向的變量的值. `*p` 達式讀取變量的值, int 類型, 時因 `*p` 對應一個變量, 所以可以齣現在賦值語句的左邊, 用於更新所指的變量的值.
```Go
x := 1
@@ -14,18 +14,18 @@ fmt.Println(*p) // "1"
fmt.Println(x) // "2"
```
對於聚類型, 比如結構體的每個字段, 或者是數組的每個元素, 也都是對應一個變量, 併且可以被穫取地址.
對於聚類型, 比如結構體的每個字段, 或者是數組的每個元素, 也都是對應一個變量, 併且可以被穫取地址.
變量有時候被稱可尋址的值. 如果變量由達式臨時生成, 那麼錶達式必鬚能接受 `&` 取地址操作.
變量有時候被稱可尋址的值. 如果變量由達式臨時生成, 那麽表達式必鬚能接受 `&` 取地址操作.
任何類型的指的零值都是 nil. 如果 `p != nil` 測試眞, 那 p 是指變量. 指直接也是可以進行相等測試的, 隻有當它們指曏衕一個變量或全部是 nil 時纔相等.
任何類型的指的零值都是 nil. 如果 `p != nil` 測試眞, 那 p 是指變量. 指直接也是可以進行相等測試的, 隻有當它們指向同一個變量或全部是 nil 時纔相等.
```Go
var x, y int
fmt.Println(&x == &x, &x == &y, &x == nil) // "true false false"
```
在Go語言中, 返迴函數中部變量的地址是安全的. 例如下的代碼, 調用 f 函數時創建 v 部變量, 在地址被返迴之後依然有效, 因為指鍼 p 依然引用這個變量.
在Go語言中, 返迴函數中部變量的地址是安全的. 例如下的代碼, 調用 f 函數時創建 v 部變量, 在地址被返迴之後依然有效, 因爲指針 p 依然引用這個變量.
```Go
var p = f()
@@ -36,13 +36,13 @@ func f() *int {
}
```
每次調用 f 函數都將返迴不的結果:
每次調用 f 函數都將返迴不的結果:
```Go
fmt.Println(f() == f()) // "false"
```
為指鍼包含了一個變量的地址, 因此將指鍼作為參數調用函數, 將可以在函數中通過指更新變量的值. 例如這個通過指來更新變量的值, 然後返迴更新後的值, 可用在一個達式中:
爲指針包含了一個變量的地址, 因此將指針作爲參數調用函數, 將可以在函數中通過指更新變量的值. 例如這個通過指來更新變量的值, 然後返迴更新後的值, 可用在一個達式中:
```Go
func incr(p *int) int {
@@ -55,9 +55,9 @@ incr(&v) // side effect: v is now 2
fmt.Println(incr(&v)) // "3" (and v is 3)
```
每次我們對變量取地址, 或者製指, 我們都創建了變量的新的名. 例如, *p 是 變量 v 的名. 指鍼特彆有加載的地方在於我們可以不用名字而訪問一個變量, 但是這是一把雙刃劍: 要找到一個變量的所有訪問者, 我們必鬚知道變量全部的名. 不僅僅是指創建名, 很多其他引用類型也會創建名, 例如 切片, 字典和管道, 甚至結構體, 數組和接口都會創建所引用變量的名.
每次我們對變量取地址, 或者製指, 我們都創建了變量的新的名. 例如, *p 是 變量 v 的名. 指針特别有加載的地方在於我們可以不用名字而訪問一個變量, 但是這是一把雙刃劍: 要找到一個變量的所有訪問者, 我們必鬚知道變量全部的名. 不僅僅是指創建名, 很多其他引用類型也會創建名, 例如 切片, 字典和管道, 甚至結構體, 數組和接口都會創建所引用變量的名.
是 flag 包的關鍵, 它使用命令行參數來設置對應的變量, 而這些分在整個程序中. 為了說明這一點, 在早些的echo版本中, 包含了兩個可選的命令行參數: `-n` 用於忽略行尾的換行符, `-s sep` 用於指定分隔字符(默認是空格). 這是第四個版本, 對應包 gopl.io/ch2/echo4.
是 flag 包的關鍵, 它使用命令行參數來設置對應的變量, 而這些分在整個程序中. 爲了説明這一點, 在早些的echo版本中, 包含了兩個可選的命令行參數: `-n` 用於忽略行尾的換行符, `-s sep` 用於指定分隔字符(默認是空格). 這是第四個版本, 對應包 gopl.io/ch2/echo4.
```Go
gopl.io/ch2/echo4
@@ -82,7 +82,7 @@ func main() {
}
```
`flag.Bool` 函數調用創建了一個新的爾型標誌參數變量. 它有三個屬性: 第一個是的名字"n", 然後是標誌的默認值(這是false), 最後是對應的描述信息. 如果用戶輸入了無效的標誌參數, 或者輸入 `-h``-help` 標誌參數, 將打印標誌參數的名字, 默認值和描述信息. 類似的, flag.String 用於創建一個字符串類型的標誌參數變量, 樣包含參數名, 默認值, 和描述信息. 變量 `sep``n` 是一個指標誌參數變量的指, 因此必鬚用 *sep 和 *n 的方式間接引用.
`flag.Bool` 函數調用創建了一個新的爾型標誌參數變量. 它有三個屬性: 第一個是的名字"n", 然後是標誌的默認值(這是false), 最後是對應的描述信息. 如果用戶輸入了無效的標誌參數, 或者輸入 `-h``-help` 標誌參數, 將打印標誌參數的名字, 默認值和描述信息. 類似的, flag.String 用於創建一個字符串類型的標誌參數變量, 樣包含參數名, 默認值, 和描述信息. 變量 `sep``n` 是一個指標誌參數變量的指, 因此必鬚用 *sep 和 *n 的方式間接引用.
當程序運行時, 必鬚在標誌參數變量使用之前調用 flag.Parse 函數更新標誌參數變量的值(之前是默認值). 非標誌參數的普通類型參數可以用 flag.Args() 訪問, 對應一個 字符串切片. 如果 flag.Parse 解析遇到錯誤, 將打印提示信息, 然後調用 os.Exit(2) 終止程序.

View File

@@ -1,19 +1,19 @@
### 2.3.3 new 函數
另一個創建變量的方法是用內建的 new 函數. 達式 `new(T)` 創建一個T類型的匿名變量, 初始化T類型的零值, 返迴返迴變量地址, 返迴指類型 `*T`.
另一個創建變量的方法是用內建的 new 函數. 達式 `new(T)` 創建一個T類型的匿名變量, 初始化T類型的零值, 返迴返迴變量地址, 返迴指類型 `*T`.
```Go
p := new(int) // p, *int 類型, 指匿名的 int 變量
p := new(int) // p, *int 類型, 指匿名的 int 變量
fmt.Println(*p) // "0"
*p = 2 // 設置 int 匿名變量的值 2
*p = 2 // 設置 int 匿名變量的值 2
fmt.Println(*p) // "2"
```
從 new 創建變量和普通聲明方式創建變量沒有什麼區彆, 除了不需要聲明一個臨時變量的名字外, 我們還可以在達式中使用 `new(T)`. 換言之, new 類似是一種語法醣, 而不是一個新的基礎概.
從 new 創建變量和普通聲明方式創建變量沒有什麽區别, 除了不需要聲明一個臨時變量的名字外, 我們還可以在達式中使用 `new(T)`. 換言之, new 類似是一種語法醣, 而不是一個新的基礎概.
的兩個 newInt 函數有着相的行:
的兩個 newInt 函數有着相的行:
```Go
func newInt() *int { func newInt() *int {
@@ -22,7 +22,7 @@ func newInt() *int { func newInt() *int {
}
```
每次調用 new 都是返迴一個新的變量的地址, 因此下兩個地址是不的:
每次調用 new 都是返迴一個新的變量的地址, 因此下兩個地址是不的:
```Go
p := new(int)
@@ -30,15 +30,15 @@ q := new(int)
fmt.Println(p == q) // "false"
```
當然也有特殊情況: 如果兩個類型都是空的, 也就是類型的大小是0, 例如 `struct{}``[0]int`, 有可能有相的地址(依賴具體的語言實現).
當然也有特殊情況: 如果兩個類型都是空的, 也就是類型的大小是0, 例如 `struct{}``[0]int`, 有可能有相的地址(依賴具體的語言實現).
new 函數使用相對比較少, 因對應結構體來, 可以直接用字量語法創建新變量的方法更靈活 (§4.4.1).
new 函數使用相對比較少, 因對應結構體來, 可以直接用字量語法創建新變量的方法更靈活 (§4.4.1).
由於 new 隻是一個預定義的函數, 它併不是一個關鍵字, 因此我們可以將 new 重新定義為彆的類型. 例如:
由於 new 隻是一個預定義的函數, 它併不是一個關鍵字, 因此我們可以將 new 重新定義爲别的類型. 例如:
```Go
func delta(old, new int) int { return new - old }
```
new 被定義 int 類型的變量, 因此 delta 函數內部就無法在使用內置的 new 函數了.
new 被定義 int 類型的變量, 因此 delta 函數內部就無法在使用內置的 new 函數了.

View File

@@ -1,8 +1,8 @@
### 2.3.4. 變量的生命週期
變量的生命週期指的是程序運行期間變量存在的有效時間間隔. 包級聲明的變量的生命週期和程序的生命週期是一的. 相比之下, 部變量的聲明週期是動態的: 從每次創建一個新變量的聲明語句被執行開始, 直到變量不在被引用止, 然後變量的存儲空間可能被迴收. 函數的參數變量和返迴值變量都是部變量. 它們在函數每次被調用的時候創建.
變量的生命週期指的是程序運行期間變量存在的有效時間間隔. 包級聲明的變量的生命週期和程序的生命週期是一的. 相比之下, 部變量的聲明週期是動態的: 從每次創建一個新變量的聲明語句被執行開始, 直到變量不在被引用止, 然後變量的存儲空間可能被迴收. 函數的參數變量和返迴值變量都是部變量. 它們在函數每次被調用的時候創建.
例如, 下是從 1.4 節的 Lissajous 程序摘的代碼片段:
例如, 下是從 1.4 節的 Lissajous 程序摘的代碼片段:
```Go
for t := 0.0; t < cycles*2*math.Pi; t += res {
@@ -15,11 +15,11 @@ for t := 0.0; t < cycles*2*math.Pi; t += res {
在每次循環的開始創建變量 t, 然後在每次循環迭代中創建 x 和 y.
垃圾收集器是如何知道一個變量是何時可以被迴收的呢? 這我們先避開完整的技細節, 但是基本的思路是, 從每個包級的變量和每個當前運行函數的每一個部變量開始, 通過指或引用的路徑, 是否可以找到該變量. 如果不存在這樣的路徑, 那麼說明該變量是不可達的, 也就是它併不會影響其餘的計算.
垃圾收集器是如何知道一個變量是何時可以被迴收的呢? 這我們先避開完整的技細節, 但是基本的思路是, 從每個包級的變量和每個當前運行函數的每一個部變量開始, 通過指或引用的路徑, 是否可以找到該變量. 如果不存在這樣的路徑, 那麽説明該變量是不可達的, 也就是它併不會影響其餘的計算.
一個變量的聲明週期隻取決於是否可達, 因此一個循環迭代內部的部變量的生命週期可能超齣其部作用域. 它可能在函數返迴之後依然存在.
一個變量的聲明週期隻取決於是否可達, 因此一個循環迭代內部的部變量的生命週期可能超齣其部作用域. 它可能在函數返迴之後依然存在.
編譯器會選擇在棧上還是在堆上分配部變量的存儲空間, 但可能令人驚訝的是, 這個選擇併不是由 var 或 new 來決定的.
編譯器會選擇在棧上還是在堆上分配部變量的存儲空間, 但可能令人驚訝的是, 這個選擇併不是由 var 或 new 來決定的.
```Go
var global *int
@@ -31,10 +31,10 @@ func f() { func g() {
}
```
的 x 必鬚在堆上分配, 因它在函數退齣後依然可以通過包的 global 變量找到, 雖然它是在函數內部定義的; 我們這個 x 部變量從 函數 f 中逃逸了. 相反, 當 g 函數返迴時, 變量 `*y` 將是不可達的, 也就是可以被迴收的. 因此, `*y` 併沒有從 函數 g 逃逸, 編譯器可以選擇在棧上分配 `*y` 的存儲空間, 雖然這用的是 new 方式.
在任何時候, 你併不需了編寫正確的代碼而要考慮變量的逃逸行, 要記住的是, 逃逸的變量需要額外分配內存, 時對性能的優化會生一定的影響.
的 x 必鬚在堆上分配, 因它在函數退齣後依然可以通過包的 global 變量找到, 雖然它是在函數內部定義的; 我們這個 x 部變量從 函數 f 中逃逸了. 相反, 當 g 函數返迴時, 變量 `*y` 將是不可達的, 也就是可以被迴收的. 因此, `*y` 併沒有從 函數 g 逃逸, 編譯器可以選擇在棧上分配 `*y` 的存儲空間, 雖然這用的是 new 方式.
在任何時候, 你併不需了編寫正確的代碼而要考慮變量的逃逸行, 要記住的是, 逃逸的變量需要額外分配內存, 時對性能的優化會生一定的影響.
垃圾收集器對編寫正確的代碼是一個鉅大的幫助, 但併不是你完全不用考慮內存了. 你雖然不需要顯式地分配和釋放內存, 但是要編寫高效的程序你還是需要知道變量的生命週期. 例如, 將指短生命週期對象的指保存到具有長生命週期的對象中, 特是全變量時, 會阻止對短生命週期對象的垃圾迴收.
垃圾收集器對編寫正確的代碼是一個鉅大的幫助, 但併不是你完全不用考慮內存了. 你雖然不需要顯式地分配和釋放內存, 但是要編寫高效的程序你還是需要知道變量的生命週期. 例如, 將指短生命週期對象的指保存到具有長生命週期的對象中, 特是全變量時, 會阻止對短生命週期對象的垃圾迴收.

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="Wed Dec 16 2015 10:54:29 GMT+0800 (中国标准时间)">
<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-summary">
@@ -146,7 +146,7 @@
<b>0.5.</b>
</a>
@@ -212,7 +212,7 @@
<b>1.3.</b>
査找重的行
査找重的行
</a>
@@ -227,7 +227,7 @@
<b>1.4.</b>
GIF動
GIF動
</a>
@@ -257,7 +257,7 @@
<b>1.6.</b>
穫取多個URL
穫取多個URL
</a>
@@ -479,7 +479,7 @@
<b>3.3.</b>
</a>
@@ -494,7 +494,7 @@
<b>3.4.</b>
爾型
爾型
</a>
@@ -544,7 +544,7 @@
<b>4.</b>
復閤數據類型
複合數據類型
</a>
@@ -857,7 +857,7 @@
<b>6.2.</b>
基於指對象的方法
基於指對象的方法
</a>
@@ -887,7 +887,7 @@
<b>6.4.</b>
方法值和方法達式
方法值和方法達式
</a>
@@ -953,7 +953,7 @@
<b>7.1.</b>
接口是
接口是
</a>
@@ -1073,7 +1073,7 @@
<b>7.9.</b>
示例: 達式求值
示例: 達式求值
</a>
@@ -1103,7 +1103,7 @@
<b>7.11.</b>
基於類型斷言識錯誤類型
基於類型斷言識錯誤類型
</a>
@@ -1214,7 +1214,7 @@
<b>8.2.</b>
示例: 併的Clock服務
示例: 併的Clock服務
</a>
@@ -1229,7 +1229,7 @@
<b>8.3.</b>
示例: 併的Echo服務
示例: 併的Echo服務
</a>
@@ -1274,7 +1274,7 @@
<b>8.6.</b>
示例: 併的Web爬蟲
示例: 併的Web爬蟲
</a>
@@ -1289,7 +1289,7 @@
<b>8.7.</b>
基於select的多路
基於select的多路
</a>
@@ -1304,7 +1304,7 @@
<b>8.8.</b>
示例: 併的字典遍歷
示例: 併的字典遍歷
</a>
@@ -1319,7 +1319,7 @@
<b>8.9.</b>
的退齣
的退齣
</a>
@@ -1354,7 +1354,7 @@
<b>9.</b>
基於共享變量的併
基於共享變量的併
</a>
@@ -1415,7 +1415,7 @@
<b>9.4.</b>
內存
內存
</a>
@@ -1460,7 +1460,7 @@
<b>9.7.</b>
示例: 併的非阻塞緩存
示例: 併的非阻塞緩存
</a>
@@ -1475,7 +1475,7 @@
<b>9.8.</b>
Goroutines和
Goroutines和
</a>
@@ -1748,7 +1748,7 @@
<b>12.1.</b>
何需要反射?
何需要反射?
</a>
@@ -1793,7 +1793,7 @@
<b>12.4.</b>
示例: 編碼S達式
示例: 編碼S達式
</a>
@@ -1823,7 +1823,7 @@
<b>12.6.</b>
示例: 解碼S達式
示例: 解碼S達式
</a>
@@ -1975,50 +1975,14 @@
</li>
<li class="chapter " data-level="14" data-path="exercise/ex.html">
<a href="../exercise/ex.html">
<i class="fa fa-check"></i>
<b>14.</b>
習題解答
</a>
<ul class="articles">
<li class="chapter " data-level="14.1" data-path="exercise/ex-ch1.html">
<a href="../exercise/ex-ch1.html">
<i class="fa fa-check"></i>
<b>14.1.</b>
第一章 入門
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="15" data-path="errata.html">
<li class="chapter " data-level="14" data-path="errata.html">
<a href="../errata.html">
<i class="fa fa-check"></i>
<b>15.</b>
<b>14.</b>
勘誤
</a>
@@ -2061,30 +2025,30 @@
<h2 id="23-&#x8B8A;&#x91CF;">2.3. &#x8B8A;&#x91CF;</h2>
<p>var &#x8072;&#x660E;&#x53EF;&#x4EE5;&#x5275;&#x5EFA;&#x4E00;&#x500B;&#x7279;&#x5B9A;&#x985E;&#x578B;&#x7684;&#x8B8A;&#x91CF;, &#x7136;&#x5F8C;&#x7D66;&#x8B8A;&#x91CF;&#x9644;&#x52A0;&#x4E00;&#x500B;&#x540D;&#x5B57;, &#x4F75;&#x4E14;&#x8A2D;&#x7F6E;&#x8B8A;&#x91CF;&#x7684;&#x521D;&#x59CB;&#x503C;. &#x8B8A;&#x91CF;&#x8072;&#x660E;&#x7684;&#x4E00;&#x822C;&#x8A9E;&#x6CD5;:</p>
<pre><code class="lang-Go"><span class="hljs-keyword">var</span> name <span class="hljs-keyword">type</span> = &#x9336;&#x9054;&#x5F0F;
<pre><code class="lang-Go"><span class="hljs-keyword">var</span> name <span class="hljs-keyword">type</span> = &#x8868;&#x9054;&#x5F0F;
</code></pre>
<p>&#x5176;&#x4E2D;&#x985E;&#x578B;&#x6216; <code>= &#x9336;&#x9054;&#x5F0F;</code> &#x53EF;&#x4EE5;&#x7701;&#x7565;&#x5176;&#x4E2D;&#x7684;&#x4E00;&#x500B;. &#x5982;&#x679C;&#x7701;&#x7565;&#x7684;&#x662F;&#x985E;&#x578B;&#x4FE1;&#x606F;, &#x90A3;&#x9EBC;&#x5C07;&#x6839;&#x64DA;&#x521D;&#x59CB;&#x5316;&#x9336;&#x9054;&#x5F0F;&#x985E;&#x63A8;&#x5C0E;&#x985E;&#x578B;&#x4FE1;&#x606F;. &#x5982;&#x679C;&#x521D;&#x59CB;&#x5316;&#x9336;&#x9054;&#x5F0F;&#x88AB;&#x7701;&#x7565;, &#x90A3;&#x9EBC;&#x5C07;&#x7528;&#x96F6;&#x503C;&#x521D;&#x59CB;&#x5316;&#x8B8A;&#x91CF;. &#x6578;&#x503C;&#x985E;&#x578B;&#x8B8A;&#x91CF;&#x7684;&#x96F6;&#x503C;&#x662F;0, &#x4F48;&#x723E;&#x985E;&#x578B;&#x8B8A;&#x91CF;&#x7684;&#x96F6;&#x503C;&#x662F; false, &#x5B57;&#x7B26;&#x4E32;&#x7684;&#x96F6;&#x503C;&#x662F;&#x7A7A;&#x5B57;&#x7B26;&#x4E32;, &#x63A5;&#x53E3;&#x6216;&#x5F15;&#x7528;&#x985E;&#x578B;(&#x5305;&#x62EC; &#x5207;&#x7247;, &#x5B57;&#x5178;, &#x901A;&#x9053; &#x548C; &#x51FD;&#x6578;)&#x7684;&#x8B8A;&#x91CF;&#x7684;&#x96F6;&#x503C;&#x662F; nil. &#x6578;&#x7D44;&#x6216;&#x7D50;&#x69CB;&#x9AD4;&#x7B49;&#x805A;&#x95A4;&#x985E;&#x578B;&#x7684;&#x96F6;&#x503C;&#x662F;&#x6BCF;&#x500B;&#x5143;&#x7D20;&#x6216;&#x5B57;&#x6BB5;&#x90FD;&#x662F;&#x96F6;&#x503C;.</p>
<p>&#x96F6;&#x503C;&#x6A5F;&#x88FD;&#x53EF;&#x4EE5;&#x78BA;&#x4FDD;&#x6BCF;&#x500B;&#x8072;&#x660E;&#x7684;&#x8B8A;&#x91CF;&#x7E3D;&#x662F;&#x6709;&#x4E00;&#x500B;&#x826F;&#x597D;&#x5B9A;&#x7FA9;&#x7684;&#x503C;, &#x5728; Go &#x4E2D;&#x4E0D;&#x5B58;&#x5728;&#x672A;&#x521D;&#x59CB;&#x5316;&#x7684;&#x8B8A;&#x91CF;. &#x9019;&#x500B;&#x53EF;&#x4EE5;&#x7C21;&#x5316;&#x5F88;&#x591A;&#x4EE3;&#x78BC;, &#x5728;&#x6C92;&#x6709;&#x589E;&#x52A0;&#x984D;&#x5916;&#x5DE5;&#x4F5C;&#x7684;&#x524D;&#x63D0;&#x4E0B;&#x78BA;&#x4FDD;&#x908A;&#x754C;&#x689D;&#x4EF6;&#x4E0B;&#x7684;&#x95A4;&#x7406;&#x884C;&#x70BA;. &#x4F8B;&#x5982;:</p>
<p>&#x5176;&#x4E2D;&#x985E;&#x578B;&#x6216; <code>= &#x8868;&#x9054;&#x5F0F;</code> &#x53EF;&#x4EE5;&#x7701;&#x7565;&#x5176;&#x4E2D;&#x7684;&#x4E00;&#x500B;. &#x5982;&#x679C;&#x7701;&#x7565;&#x7684;&#x662F;&#x985E;&#x578B;&#x4FE1;&#x606F;, &#x90A3;&#x9EBD;&#x5C07;&#x6839;&#x64DA;&#x521D;&#x59CB;&#x5316;&#x8868;&#x9054;&#x5F0F;&#x985E;&#x63A8;&#x5C0E;&#x985E;&#x578B;&#x4FE1;&#x606F;. &#x5982;&#x679C;&#x521D;&#x59CB;&#x5316;&#x8868;&#x9054;&#x5F0F;&#x88AB;&#x7701;&#x7565;, &#x90A3;&#x9EBD;&#x5C07;&#x7528;&#x96F6;&#x503C;&#x521D;&#x59CB;&#x5316;&#x8B8A;&#x91CF;. &#x6578;&#x503C;&#x985E;&#x578B;&#x8B8A;&#x91CF;&#x7684;&#x96F6;&#x503C;&#x662F;0, &#x5E03;&#x723E;&#x985E;&#x578B;&#x8B8A;&#x91CF;&#x7684;&#x96F6;&#x503C;&#x662F; false, &#x5B57;&#x7B26;&#x4E32;&#x7684;&#x96F6;&#x503C;&#x662F;&#x7A7A;&#x5B57;&#x7B26;&#x4E32;, &#x63A5;&#x53E3;&#x6216;&#x5F15;&#x7528;&#x985E;&#x578B;(&#x5305;&#x62EC; &#x5207;&#x7247;, &#x5B57;&#x5178;, &#x901A;&#x9053; &#x548C; &#x51FD;&#x6578;)&#x7684;&#x8B8A;&#x91CF;&#x7684;&#x96F6;&#x503C;&#x662F; nil. &#x6578;&#x7D44;&#x6216;&#x7D50;&#x69CB;&#x9AD4;&#x7B49;&#x805A;&#x5408;&#x985E;&#x578B;&#x7684;&#x96F6;&#x503C;&#x662F;&#x6BCF;&#x500B;&#x5143;&#x7D20;&#x6216;&#x5B57;&#x6BB5;&#x90FD;&#x662F;&#x96F6;&#x503C;.</p>
<p>&#x96F6;&#x503C;&#x6A5F;&#x88FD;&#x53EF;&#x4EE5;&#x78BA;&#x4FDD;&#x6BCF;&#x500B;&#x8072;&#x660E;&#x7684;&#x8B8A;&#x91CF;&#x7E3D;&#x662F;&#x6709;&#x4E00;&#x500B;&#x826F;&#x597D;&#x5B9A;&#x7FA9;&#x7684;&#x503C;, &#x5728; Go &#x4E2D;&#x4E0D;&#x5B58;&#x5728;&#x672A;&#x521D;&#x59CB;&#x5316;&#x7684;&#x8B8A;&#x91CF;. &#x9019;&#x500B;&#x53EF;&#x4EE5;&#x7C21;&#x5316;&#x5F88;&#x591A;&#x4EE3;&#x78BC;, &#x5728;&#x6C92;&#x6709;&#x589E;&#x52A0;&#x984D;&#x5916;&#x5DE5;&#x4F5C;&#x7684;&#x524D;&#x63D0;&#x4E0B;&#x78BA;&#x4FDD;&#x908A;&#x754C;&#x689D;&#x4EF6;&#x4E0B;&#x7684;&#x5408;&#x7406;&#x884C;&#x7232;. &#x4F8B;&#x5982;:</p>
<pre><code class="lang-Go"><span class="hljs-keyword">var</span> s <span class="hljs-typename">string</span>
fmt.Println(s) <span class="hljs-comment">// &quot;&quot;</span>
</code></pre>
<p>&#x9019;&#x6BB5;&#x4EE3;&#x78BC;&#x5C07;&#x6253;&#x5370;&#x4E00;&#x500B;&#x7A7A;&#x5B57;&#x7B26;&#x4E32;, &#x800C;&#x4E0D;&#x662F;&#x5C0E;&#x7DFB;&#x932F;&#x8AA4;&#x6216;&#x7522;&#x751F;&#x4E0D;&#x53EF;&#x9810;&#x77E5;&#x7684;&#x884C;&#x70BA;. Go &#x7A0B;&#x5E8F;&#x54E1;&#x7D93;&#x5E38;&#x8B93;&#x4E00;&#x4E9B;&#x805A;&#x95A4;&#x985E;&#x578B;&#x7684;&#x96F6;&#x503C;&#x4E5F;&#x6709;&#x610F;&#x7FA9;, &#x9019;&#x6A23;&#x4E0D;&#x7BA1;&#x4EFB;&#x4F55;&#x985E;&#x578B;&#x7684;&#x8B8A;&#x91CF;&#x7E3D;&#x662F;&#x6709;&#x4E00;&#x500B;&#x95A4;&#x7406;&#x7684;&#x96F6;&#x503C;&#x72C0;&#x614B;.</p>
<p>&#x53EF;&#x4EE5;&#x5728;&#x4E00;&#x500B;&#x8072;&#x660E;&#x8A9E;&#x53E5;&#x4E2D;&#x8855;&#x6642;&#x8072;&#x660E;&#x4E00;&#x7D44;&#x8B8A;&#x91CF;, &#x6216;&#x7528;&#x4E00;&#x7D44;&#x521D;&#x59CB;&#x5316;&#x9336;&#x9054;&#x5F0F;&#x8072;&#x660E;&#x4F75;&#x521D;&#x59CB;&#x5316;&#x4E00;&#x7D44;&#x8B8A;&#x91CF;.
&#x5982;&#x679C;&#x7701;&#x7565;&#x6BCF;&#x500B;&#x8B8A;&#x91CF;&#x7684;&#x985E;&#x578B;, &#x5C07;&#x53EF;&#x4EE5;&#x8072;&#x660E;&#x591A;&#x500B;&#x4E0D;&#x8855;&#x985E;&#x578B;&#x7684;&#x8B8A;&#x91CF;(&#x985E;&#x578B;&#x7531;&#x521D;&#x59CB;&#x5316;&#x9336;&#x9054;&#x5F0F;&#x63A8;&#x5C0E;):</p>
<p>&#x9019;&#x6BB5;&#x4EE3;&#x78BC;&#x5C07;&#x6253;&#x5370;&#x4E00;&#x500B;&#x7A7A;&#x5B57;&#x7B26;&#x4E32;, &#x800C;&#x4E0D;&#x662F;&#x5C0E;&#x81F4;&#x932F;&#x8AA4;&#x6216;&#x7523;&#x751F;&#x4E0D;&#x53EF;&#x9810;&#x77E5;&#x7684;&#x884C;&#x7232;. Go &#x7A0B;&#x5E8F;&#x54E1;&#x7D93;&#x5E38;&#x8B93;&#x4E00;&#x4E9B;&#x805A;&#x5408;&#x985E;&#x578B;&#x7684;&#x96F6;&#x503C;&#x4E5F;&#x6709;&#x610F;&#x7FA9;, &#x9019;&#x6A23;&#x4E0D;&#x7BA1;&#x4EFB;&#x4F55;&#x985E;&#x578B;&#x7684;&#x8B8A;&#x91CF;&#x7E3D;&#x662F;&#x6709;&#x4E00;&#x500B;&#x5408;&#x7406;&#x7684;&#x96F6;&#x503C;&#x72C0;&#x614B;.</p>
<p>&#x53EF;&#x4EE5;&#x5728;&#x4E00;&#x500B;&#x8072;&#x660E;&#x8A9E;&#x53E5;&#x4E2D;&#x540C;&#x6642;&#x8072;&#x660E;&#x4E00;&#x7D44;&#x8B8A;&#x91CF;, &#x6216;&#x7528;&#x4E00;&#x7D44;&#x521D;&#x59CB;&#x5316;&#x8868;&#x9054;&#x5F0F;&#x8072;&#x660E;&#x4F75;&#x521D;&#x59CB;&#x5316;&#x4E00;&#x7D44;&#x8B8A;&#x91CF;.
&#x5982;&#x679C;&#x7701;&#x7565;&#x6BCF;&#x500B;&#x8B8A;&#x91CF;&#x7684;&#x985E;&#x578B;, &#x5C07;&#x53EF;&#x4EE5;&#x8072;&#x660E;&#x591A;&#x500B;&#x4E0D;&#x540C;&#x985E;&#x578B;&#x7684;&#x8B8A;&#x91CF;(&#x985E;&#x578B;&#x7531;&#x521D;&#x59CB;&#x5316;&#x8868;&#x9054;&#x5F0F;&#x63A8;&#x5C0E;):</p>
<pre><code class="lang-Go"><span class="hljs-keyword">var</span> i, j, k <span class="hljs-typename">int</span> <span class="hljs-comment">// int, int, int</span>
<span class="hljs-keyword">var</span> b, f, s = <span class="hljs-constant">true</span>, <span class="hljs-number">2.3</span>, <span class="hljs-string">&quot;four&quot;</span> <span class="hljs-comment">// bool, float64, string</span>
</code></pre>
<p>&#x521D;&#x59CB;&#x5316;&#x53EF;&#x4EE5;&#x662F;&#x5B57;&#x9EAB;&#x91CF;&#x6216;&#x4EFB;&#x610F;&#x7684;&#x9336;&#x9054;&#x5F0F;. &#x5305;&#x7D1A;&#x5F46;&#x8072;&#x660E;&#x7684;&#x8B8A;&#x91CF;&#x6703;&#x5728; main &#x51FD;&#x6578;&#x57F7;&#x884C;&#x524D;&#x5B8C;&#x6210;&#x521D;&#x59CB;&#x5316; (&#xA7;2.6.2), &#x4FB7;&#x90E8;&#x8B8A;&#x91CF;&#x5C07;&#x5728;&#x8072;&#x660E;&#x8A9E;&#x53E5;&#x88AB;&#x57F7;&#x884C;&#x5230;&#x7684;&#x6642;&#x5019;&#x521D;&#x59CB;&#x5316;.</p>
<p>&#x521D;&#x59CB;&#x5316;&#x53EF;&#x4EE5;&#x662F;&#x5B57;&#x9762;&#x91CF;&#x6216;&#x4EFB;&#x610F;&#x7684;&#x8868;&#x9054;&#x5F0F;. &#x5305;&#x7D1A;&#x522B;&#x8072;&#x660E;&#x7684;&#x8B8A;&#x91CF;&#x6703;&#x5728; main &#x51FD;&#x6578;&#x57F7;&#x884C;&#x524D;&#x5B8C;&#x6210;&#x521D;&#x59CB;&#x5316; (&#xA7;2.6.2), &#x5C40;&#x90E8;&#x8B8A;&#x91CF;&#x5C07;&#x5728;&#x8072;&#x660E;&#x8A9E;&#x53E5;&#x88AB;&#x57F7;&#x884C;&#x5230;&#x7684;&#x6642;&#x5019;&#x521D;&#x59CB;&#x5316;.</p>
<p>&#x4E00;&#x7D44;&#x8B8A;&#x91CF;&#x7684;&#x521D;&#x59CB;&#x5316;&#x4E5F;&#x53EF;&#x4EE5;&#x901A;&#x904E;&#x8ABF;&#x7528;&#x4E00;&#x500B;&#x51FD;&#x6578;, &#x7531;&#x51FD;&#x6578;&#x8FD4;&#x8FF4;&#x7684;&#x591A;&#x500B;&#x8FD4;&#x8FF4;&#x503C;&#x521D;&#x59CB;&#x5316;:</p>
<pre><code class="lang-Go"><span class="hljs-keyword">var</span> f, err = os.Open(name) <span class="hljs-comment">// os.Open returns a file and an error</span>
</code></pre>
<h3 id="231-&#x7C21;&#x77ED;&#x8B8A;&#x91CF;&#x8072;&#x660E;">2.3.1. &#x7C21;&#x77ED;&#x8B8A;&#x91CF;&#x8072;&#x660E;</h3>
<p>&#x5728;&#x51FD;&#x6578;&#x5167;&#x90E8;, &#x6709;&#x4E00;&#x7A2E;&#x7A31;&#x70BA;&#x7C21;&#x77ED;&#x8B8A;&#x91CF;&#x8072;&#x660E;&#x7684;&#x5F62;&#x5F0F;&#x53EF;&#x7528;&#x65BC;&#x8072;&#x660E;&#x548C;&#x521D;&#x59CB;&#x5316;&#x4FB7;&#x90E8;&#x8B8A;&#x91CF;. &#x4EE5; <code>&#x540D;&#x5B57; := &#x9336;&#x9054;&#x5F0F;</code> &#x65B9;&#x5F0F;&#x8072;&#x660E;&#x8B8A;&#x91CF;, &#x8B8A;&#x91CF;&#x7684;&#x985E;&#x578B;&#x6839;&#x64DA;&#x9336;&#x9054;&#x5F0F;&#x4F86;&#x63A8;&#x5C0E;. &#x9019;&#x88CF;&#x51FD;&#x6578;&#x4E2D;&#x662F;&#x4E09;&#x500B;&#x7C21;&#x77ED;&#x8B8A;&#x91CF;&#x8072;&#x660E;&#x8A9E;&#x53E5;(&#xA7;1.4):</p>
<p>&#x5728;&#x51FD;&#x6578;&#x5167;&#x90E8;, &#x6709;&#x4E00;&#x7A2E;&#x7A31;&#x7232;&#x7C21;&#x77ED;&#x8B8A;&#x91CF;&#x8072;&#x660E;&#x7684;&#x5F62;&#x5F0F;&#x53EF;&#x7528;&#x65BC;&#x8072;&#x660E;&#x548C;&#x521D;&#x59CB;&#x5316;&#x5C40;&#x90E8;&#x8B8A;&#x91CF;. &#x4EE5; <code>&#x540D;&#x5B57; := &#x8868;&#x9054;&#x5F0F;</code> &#x65B9;&#x5F0F;&#x8072;&#x660E;&#x8B8A;&#x91CF;, &#x8B8A;&#x91CF;&#x7684;&#x985E;&#x578B;&#x6839;&#x64DA;&#x8868;&#x9054;&#x5F0F;&#x4F86;&#x63A8;&#x5C0E;. &#x9019;&#x91CC;&#x51FD;&#x6578;&#x4E2D;&#x662F;&#x4E09;&#x500B;&#x7C21;&#x77ED;&#x8B8A;&#x91CF;&#x8072;&#x660E;&#x8A9E;&#x53E5;(&#xA7;1.4):</p>
<pre><code class="lang-Go">anim := gif.GIF{LoopCount: nframes}
freq := rand.Float64() * <span class="hljs-number">3.0</span>
t := <span class="hljs-number">0.0</span>
</code></pre>
<p>&#x56E0;&#x70BA;&#x7C21;&#x6F54;&#x548C;&#x9748;&#x6D3B;&#x6027;, &#x7C21;&#x77ED;&#x8B8A;&#x91CF;&#x8072;&#x660E;&#x7528;&#x65BC;&#x5927;&#x90E8;&#x5206;&#x7684;&#x4FB7;&#x90E8;&#x8B8A;&#x91CF;&#x7684;&#x8072;&#x660E;&#x548C;&#x521D;&#x59CB;&#x5316;. var &#x65B9;&#x5F0F;&#x7684;&#x8072;&#x660E;&#x5F80;&#x5F80;&#x662F;&#x7528;&#x65BC;&#x9700;&#x8981;&#x986F;&#x793A;&#x6307;&#x5B9A;&#x985E;&#x578B;&#x7684;&#x4FB7;&#x90E8;&#x8B8A;&#x91CF;, &#x6216;&#x8005;&#x56E0;&#x70BA;&#x7A0D;&#x5F8C;&#x6703;&#x88AB;&#x8CE6;&#x503C;&#x800C;&#x521D;&#x59CB;&#x503C;&#x7121;&#x95DC;&#x7DCA;&#x8981;&#x7684;&#x8B8A;&#x91CF;.</p>
<p>&#x56E0;&#x7232;&#x7C21;&#x6F54;&#x548C;&#x9748;&#x6D3B;&#x6027;, &#x7C21;&#x77ED;&#x8B8A;&#x91CF;&#x8072;&#x660E;&#x7528;&#x65BC;&#x5927;&#x90E8;&#x5206;&#x7684;&#x5C40;&#x90E8;&#x8B8A;&#x91CF;&#x7684;&#x8072;&#x660E;&#x548C;&#x521D;&#x59CB;&#x5316;. var &#x65B9;&#x5F0F;&#x7684;&#x8072;&#x660E;&#x5F80;&#x5F80;&#x662F;&#x7528;&#x65BC;&#x9700;&#x8981;&#x986F;&#x793A;&#x6307;&#x5B9A;&#x985E;&#x578B;&#x7684;&#x5C40;&#x90E8;&#x8B8A;&#x91CF;, &#x6216;&#x8005;&#x56E0;&#x7232;&#x7A0D;&#x5F8C;&#x6703;&#x88AB;&#x8CE6;&#x503C;&#x800C;&#x521D;&#x59CB;&#x503C;&#x7121;&#x95DC;&#x7DCA;&#x8981;&#x7684;&#x8B8A;&#x91CF;.</p>
<pre><code class="lang-Go">i := <span class="hljs-number">100</span> <span class="hljs-comment">// an int</span>
<span class="hljs-keyword">var</span> boiling <span class="hljs-typename">float64</span> = <span class="hljs-number">100</span> <span class="hljs-comment">// a float64</span>
<span class="hljs-keyword">var</span> names []<span class="hljs-typename">string</span>
@@ -2095,7 +2059,7 @@ t := <span class="hljs-number">0.0</span>
<pre><code class="lang-Go">i, j := <span class="hljs-number">0</span>, <span class="hljs-number">1</span>
</code></pre>
<p>&#x4F46;&#x662F;&#x9019;&#x7A2E;&#x8072;&#x660E;&#x591A;&#x500B;&#x8B8A;&#x91CF;&#x7684;&#x65B9;&#x5F0F;&#x96BB;&#x7C21;&#x6613;&#x5728;&#x53EF;&#x4EE5;&#x63D0;&#x9AD8;&#x4EE3;&#x78BC;&#x53EF;&#x8B80;&#x6027;&#x7684;&#x5730;&#x65B9;&#x4F7F;&#x7528;, &#x6BD4;&#x5982; for &#x5FAA;&#x74B0;&#x7684;&#x521D;&#x59CB;&#x5316;&#x90E8;&#x5206;.</p>
<p>&#x8ACB;&#x8A18;&#x4F4F; <code>:=</code> &#x662F;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#x8072;&#x660E;, &#x800C; <code>=</code> &#x662F;&#x4E00;&#x500B;&#x8CE6;&#x503C;&#x64CD;&#x4F5C;. &#x4E0D;&#x8981;&#x6DF7;&#x6DC6;&#x591A;&#x500B;&#x8B8A;&#x91CF;&#x7684;&#x8072;&#x660E;&#x548C;&#x5143;&#x7D44;&#x7684;&#x591A;&#x91CD;(&#xA7;2.4.1), &#x5F8C;&#x8005;&#x662F;&#x5C07;&#x53F3;&#x908A;&#x7684;&#x9336;&#x9054;&#x5F0F;&#x503C;&#x8CE6;&#x7D66;&#x5DE6;&#x908A;&#x5C0D;&#x61C9;&#x4F4D;&#x7F6E;&#x7684;&#x8B8A;&#x91CF;:</p>
<p>&#x8ACB;&#x8A18;&#x4F4F; <code>:=</code> &#x662F;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#x8072;&#x660E;, &#x800C; <code>=</code> &#x662F;&#x4E00;&#x500B;&#x8CE6;&#x503C;&#x64CD;&#x4F5C;. &#x4E0D;&#x8981;&#x6DF7;&#x6DC6;&#x591A;&#x500B;&#x8B8A;&#x91CF;&#x7684;&#x8072;&#x660E;&#x548C;&#x5143;&#x7D44;&#x7684;&#x591A;&#x91CD;(&#xA7;2.4.1), &#x5F8C;&#x8005;&#x662F;&#x5C07;&#x53F3;&#x908A;&#x7684;&#x8868;&#x9054;&#x5F0F;&#x503C;&#x8CE6;&#x7D66;&#x5DE6;&#x908A;&#x5C0D;&#x61C9;&#x4F4D;&#x7F6E;&#x7684;&#x8B8A;&#x91CF;:</p>
<pre><code class="lang-Go">i, j = j, i <span class="hljs-comment">// &#x4EA4;&#x63DB; i &#x548C; j &#x7684;&#x503C;</span>
</code></pre>
<p>&#x548C;&#x666E;&#x901A; var &#x8B8A;&#x91CF;&#x8072;&#x660E;&#x4E00;&#x6A23;, &#x7C21;&#x77ED;&#x8B8A;&#x91CF;&#x8072;&#x660E;&#x4E5F;&#x53EF;&#x4EE5;&#x7528;&#x8ABF;&#x7528;&#x51FD;&#x6578;&#x7684;&#x8FD4;&#x8FF4;&#x503C;&#x4F86;&#x8072;&#x660E;, &#x50CF; os.Open &#x51FD;&#x6578;&#x8FD4;&#x8FF4;&#x5169;&#x500B;&#x503C;:</p>
@@ -2106,8 +2070,8 @@ t := <span class="hljs-number">0.0</span>
<span class="hljs-comment">// ...use f...</span>
f.Close()
</code></pre>
<p>&#x9019;&#x88CF;&#x6709;&#x4E00;&#x500B;&#x6BD4;&#x8F03;&#x5FAE;&#x5999;&#x7684;&#x5730;&#x65B9;: &#x7C21;&#x77ED;&#x8B8A;&#x91CF;&#x8072;&#x660E;&#x5DE6;&#x908A;&#x7684;&#x5168;&#x90E8;&#x8B8A;&#x91CF;&#x53EF;&#x80FD;&#x4F75;&#x4E0D;&#x662F;&#x5168;&#x90E8;&#x90FD;&#x662F;&#x525B;&#x525B;&#x8072;&#x660E;&#x7684;. &#x5982;&#x679C;&#x6709;&#x4E00;&#x4E9B;&#x5DF2;&#x7D93;&#x5728;&#x76F8;&#x8855;&#x7684;&#x8A5E;&#x6CD5;&#x584A;&#x8072;&#x660E;&#x904E;&#x4E86;(&#xA7;2.7), &#x90A3;&#x9EBC;&#x7C21;&#x77ED;&#x8B8A;&#x91CF;&#x8072;&#x660E;&#x5C0D;&#x9019;&#x4E9B;&#x5DF2;&#x7D93;&#x8072;&#x660E;&#x904E;&#x7684;&#x8B8A;&#x91CF;&#x5C31;&#x96BB;&#x6709;&#x8CE6;&#x503C;&#x884C;&#x70BA;&#x4E86;.</p>
<p>&#x5728;&#x4E0B;&#x9EAB;&#x7684;&#x4EE3;&#x78BC;&#x4E2D;, &#x7B2C;&#x4E00;&#x500B;&#x8A9E;&#x53E5;&#x8072;&#x660E;&#x4E86; in &#x548C; err &#x8B8A;&#x91CF;. &#x7B2C;&#x4E8C;&#x500B;&#x8A9E;&#x53E5;&#x96BB;&#x8072;&#x660E;&#x4E86; out, &#x7136;&#x5F8C;&#x5C0D;&#x5DF2;&#x7D93;&#x8072;&#x660E;&#x7684; err &#x9032;&#x884C;&#x8CE6;&#x503C;.</p>
<p>&#x9019;&#x91CC;&#x6709;&#x4E00;&#x500B;&#x6BD4;&#x8F03;&#x5FAE;&#x5999;&#x7684;&#x5730;&#x65B9;: &#x7C21;&#x77ED;&#x8B8A;&#x91CF;&#x8072;&#x660E;&#x5DE6;&#x908A;&#x7684;&#x5168;&#x90E8;&#x8B8A;&#x91CF;&#x53EF;&#x80FD;&#x4F75;&#x4E0D;&#x662F;&#x5168;&#x90E8;&#x90FD;&#x662F;&#x525B;&#x525B;&#x8072;&#x660E;&#x7684;. &#x5982;&#x679C;&#x6709;&#x4E00;&#x4E9B;&#x5DF2;&#x7D93;&#x5728;&#x76F8;&#x540C;&#x7684;&#x8A5E;&#x6CD5;&#x584A;&#x8072;&#x660E;&#x904E;&#x4E86;(&#xA7;2.7), &#x90A3;&#x9EBD;&#x7C21;&#x77ED;&#x8B8A;&#x91CF;&#x8072;&#x660E;&#x5C0D;&#x9019;&#x4E9B;&#x5DF2;&#x7D93;&#x8072;&#x660E;&#x904E;&#x7684;&#x8B8A;&#x91CF;&#x5C31;&#x96BB;&#x6709;&#x8CE6;&#x503C;&#x884C;&#x7232;&#x4E86;.</p>
<p>&#x5728;&#x4E0B;&#x9762;&#x7684;&#x4EE3;&#x78BC;&#x4E2D;, &#x7B2C;&#x4E00;&#x500B;&#x8A9E;&#x53E5;&#x8072;&#x660E;&#x4E86; in &#x548C; err &#x8B8A;&#x91CF;. &#x7B2C;&#x4E8C;&#x500B;&#x8A9E;&#x53E5;&#x96BB;&#x8072;&#x660E;&#x4E86; out, &#x7136;&#x5F8C;&#x5C0D;&#x5DF2;&#x7D93;&#x8072;&#x660E;&#x7684; err &#x9032;&#x884C;&#x8CE6;&#x503C;.</p>
<pre><code class="lang-Go">in, err := os.Open(infile)
<span class="hljs-comment">// ...</span>
out, err := os.Create(outfile)
@@ -2118,24 +2082,24 @@ out, err := os.Create(outfile)
f, err := os.Create(outfile) <span class="hljs-comment">// compile error: no new variables</span>
</code></pre>
<p>&#x89E3;&#x6C7A;&#x7684;&#x65B9;&#x6CD5;&#x662F;&#x7B2C;&#x4E8C;&#x500B;&#x8A9E;&#x53E5;&#x6539;&#x7528;&#x666E;&#x901A;&#x7684;&#x8CE6;&#x503C;&#x8A9E;&#x8A00;.</p>
<p>&#x7C21;&#x77ED;&#x8B8A;&#x91CF;&#x8072;&#x660E;&#x96BB;&#x6709;&#x5C0D;&#x5728;&#x8B8A;&#x91CF;&#x5DF2;&#x7D93;&#x5728;&#x8855;&#x7D1A;&#x8A5E;&#x6CD5;&#x57DF;&#x8072;&#x660E;&#x904E;&#x7684;&#x8B8A;&#x91CF;&#x7E94;&#x548C;&#x8CE6;&#x503C;&#x64CD;&#x4F5C;&#x7B49;&#x8855;, &#x5982;&#x679C;&#x8B8A;&#x91CF;&#x662F;&#x5728;&#x5916;&#x90E8;&#x8A5E;&#x6CD5;&#x57DF;&#x8072;&#x660E;&#x4E86;, &#x90A3;&#x9EBC;&#x5C07;&#x6703;&#x8072;&#x660E;&#x4E00;&#x500B;&#x65B0;&#x8B8A;&#x91CF;. &#x6211;&#x5011;&#x5728;&#x672C;&#x7AE0;&#x5F8C;&#x9EAB;&#x5C07;&#x6703;&#x770B;&#x5230;&#x985E;&#x4F3C;&#x7684;&#x4F8B;&#x5B50;.</p>
<h3 id="232-&#x6307;&#x937C;">2.3.2 &#x6307;&#x937C;</h3>
<p>&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#x5C0D;&#x61C9;&#x4E00;&#x500B;&#x4FDD;&#x5B58;&#x4E86;&#x4E00;&#x500B;&#x503C;&#x7684;&#x5167;&#x5B58;&#x7A7A;&#x9593;. &#x8B8A;&#x91CF;&#x5728;&#x8072;&#x660E;&#x8A9E;&#x53E5;&#x5275;&#x5EFA;&#x6642;&#x7D81;&#x5B9A;&#x4E00;&#x500B;&#x540D;&#x5B57;, &#x6BD4;&#x5982; x, &#x4F46;&#x662F;&#x9084;&#x6709;&#x5F88;&#x591A;&#x8B8A;&#x91CF;&#x59CB;&#x7D42;&#x4EE5;&#x9336;&#x9054;&#x5F0F;&#x65B9;&#x5F0F;&#x5F15;&#x5165;, &#x4F8B;&#x5982; x[i] &#x6216; x.f. &#x6240;&#x6709;&#x9019;&#x4E9B;&#x9336;&#x9054;&#x5F0F;&#x90FD;&#x8B80;&#x53D6;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#x7684;&#x503C;, &#x9664;&#x975E;&#x5B83;&#x5011;&#x662F;&#x9F63;&#x73FE;&#x5728;&#x8CE6;&#x503C;&#x8A9E;&#x53E5;&#x7684;&#x5DE6;&#x908A;, &#x9019;&#x7A2E;&#x6642;&#x5019;&#x662F;&#x7D66;&#x8B8A;&#x91CF;&#x8CE6;&#x4E88;&#x4E00;&#x500B;&#x65B0;&#x503C;.</p>
<p>&#x4E00;&#x500B;&#x6307;&#x937C;&#x7684;&#x503C;&#x662F;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#x7684;&#x5730;&#x5740;. &#x4E00;&#x500B;&#x6307;&#x937C;&#x5C0D;&#x61C9;&#x8B8A;&#x91CF;&#x5728;&#x5167;&#x5B58;&#x4E2D;&#x7684;&#x5B58;&#x5132;&#x4F4D;&#x7F6E;. &#x4F75;&#x4E0D;&#x662F;&#x6BCF;&#x4E00;&#x500B;&#x503C;&#x90FD;&#x6703;&#x6709;&#x4E00;&#x500B;&#x5730;&#x5740;, &#x4F46;&#x662F;&#x5C0D;&#x65BC;&#x6BCF;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#x5FC5;&#x7136;&#x6709;&#x5C0D;&#x61C9;&#x7684;&#x5730;&#x5740;. &#x901A;&#x904E;&#x6307;&#x937C;, &#x6211;&#x5011;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x8B80;&#x6216;&#x66F4;&#x65B0;&#x8B8A;&#x91CF;&#x7684;&#x503C;, &#x800C;&#x4E0D;&#x9700;&#x8981;&#x77E5;&#x9053;&#x8B8A;&#x91CF;&#x7684;&#x540D;&#x5B57;(&#x537D;&#x4F7F;&#x8B8A;&#x91CF;&#x6709;&#x540D;&#x5B57;&#x7684;&#x8A71;).</p>
<p>&#x5982;&#x679C;&#x9019;&#x6A23;&#x8072;&#x660E;&#x4E00;&#x500B;&#x8B8A;&#x91CF; <code>var x int</code>, &#x90A3;&#x9EBC; <code>&amp;x</code> &#x9336;&#x9054;&#x5F0F;(x&#x7684;&#x5730;&#x5740;)&#x5C07;&#x7522;&#x751F;&#x4E00;&#x500B;&#x6307;&#x66CF;&#x6574;&#x6578;&#x8B8A;&#x91CF;&#x7684;&#x6307;&#x937C;, &#x5C0D;&#x61C9;&#x7684;&#x6578;&#x64DA;&#x985E;&#x578B;&#x662F; <code>*int</code>, &#x7A31;&#x4E4B;&#x70BA; &quot;&#x6307;&#x66CF; int &#x7684;&#x6307;&#x937C;&quot;. &#x5982;&#x679C;&#x6307;&#x937C;&#x540D;&#x5B57;&#x70BA; p, &#x90A3;&#x9EBC;&#x53EF;&#x4EE5;&#x8AAA; &quot;p &#x6307;&#x937C;&#x6307;&#x66CF; x&quot;, &#x6216;&#x8005;&#x8AAA; &quot;p &#x6307;&#x937C;&#x4FDD;&#x5B58;&#x4E86; x &#x8B8A;&#x91CF;&#x7684;&#x5730;&#x5740;&quot;. <code>*p</code> &#x5C0D;&#x61C9; p &#x6307;&#x937C;&#x6307;&#x66CF;&#x7684;&#x8B8A;&#x91CF;&#x7684;&#x503C;. <code>*p</code> &#x9336;&#x9054;&#x5F0F;&#x8B80;&#x53D6;&#x8B8A;&#x91CF;&#x7684;&#x503C;, &#x70BA; int &#x985E;&#x578B;, &#x8855;&#x6642;&#x56E0;&#x70BA; <code>*p</code> &#x5C0D;&#x61C9;&#x4E00;&#x500B;&#x8B8A;&#x91CF;, &#x6240;&#x4EE5;&#x53EF;&#x4EE5;&#x9F63;&#x73FE;&#x5728;&#x8CE6;&#x503C;&#x8A9E;&#x53E5;&#x7684;&#x5DE6;&#x908A;, &#x7528;&#x65BC;&#x66F4;&#x65B0;&#x6240;&#x6307;&#x66CF;&#x7684;&#x8B8A;&#x91CF;&#x7684;&#x503C;.</p>
<p>&#x7C21;&#x77ED;&#x8B8A;&#x91CF;&#x8072;&#x660E;&#x96BB;&#x6709;&#x5C0D;&#x5728;&#x8B8A;&#x91CF;&#x5DF2;&#x7D93;&#x5728;&#x540C;&#x7D1A;&#x8A5E;&#x6CD5;&#x57DF;&#x8072;&#x660E;&#x904E;&#x7684;&#x8B8A;&#x91CF;&#x7E94;&#x548C;&#x8CE6;&#x503C;&#x64CD;&#x4F5C;&#x7B49;&#x540C;, &#x5982;&#x679C;&#x8B8A;&#x91CF;&#x662F;&#x5728;&#x5916;&#x90E8;&#x8A5E;&#x6CD5;&#x57DF;&#x8072;&#x660E;&#x4E86;, &#x90A3;&#x9EBD;&#x5C07;&#x6703;&#x8072;&#x660E;&#x4E00;&#x500B;&#x65B0;&#x8B8A;&#x91CF;. &#x6211;&#x5011;&#x5728;&#x672C;&#x7AE0;&#x5F8C;&#x9762;&#x5C07;&#x6703;&#x770B;&#x5230;&#x985E;&#x4F3C;&#x7684;&#x4F8B;&#x5B50;.</p>
<h3 id="232-&#x6307;&#x91DD;">2.3.2 &#x6307;&#x91DD;</h3>
<p>&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#x5C0D;&#x61C9;&#x4E00;&#x500B;&#x4FDD;&#x5B58;&#x4E86;&#x4E00;&#x500B;&#x503C;&#x7684;&#x5167;&#x5B58;&#x7A7A;&#x9593;. &#x8B8A;&#x91CF;&#x5728;&#x8072;&#x660E;&#x8A9E;&#x53E5;&#x5275;&#x5EFA;&#x6642;&#x7D81;&#x5B9A;&#x4E00;&#x500B;&#x540D;&#x5B57;, &#x6BD4;&#x5982; x, &#x4F46;&#x662F;&#x9084;&#x6709;&#x5F88;&#x591A;&#x8B8A;&#x91CF;&#x59CB;&#x7D42;&#x4EE5;&#x8868;&#x9054;&#x5F0F;&#x65B9;&#x5F0F;&#x5F15;&#x5165;, &#x4F8B;&#x5982; x[i] &#x6216; x.f. &#x6240;&#x6709;&#x9019;&#x4E9B;&#x8868;&#x9054;&#x5F0F;&#x90FD;&#x8B80;&#x53D6;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#x7684;&#x503C;, &#x9664;&#x975E;&#x5B83;&#x5011;&#x662F;&#x9F63;&#x73FE;&#x5728;&#x8CE6;&#x503C;&#x8A9E;&#x53E5;&#x7684;&#x5DE6;&#x908A;, &#x9019;&#x7A2E;&#x6642;&#x5019;&#x662F;&#x7D66;&#x8B8A;&#x91CF;&#x8CE6;&#x4E88;&#x4E00;&#x500B;&#x65B0;&#x503C;.</p>
<p>&#x4E00;&#x500B;&#x6307;&#x91DD;&#x7684;&#x503C;&#x662F;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#x7684;&#x5730;&#x5740;. &#x4E00;&#x500B;&#x6307;&#x91DD;&#x5C0D;&#x61C9;&#x8B8A;&#x91CF;&#x5728;&#x5167;&#x5B58;&#x4E2D;&#x7684;&#x5B58;&#x5132;&#x4F4D;&#x7F6E;. &#x4F75;&#x4E0D;&#x662F;&#x6BCF;&#x4E00;&#x500B;&#x503C;&#x90FD;&#x6703;&#x6709;&#x4E00;&#x500B;&#x5730;&#x5740;, &#x4F46;&#x662F;&#x5C0D;&#x65BC;&#x6BCF;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#x5FC5;&#x7136;&#x6709;&#x5C0D;&#x61C9;&#x7684;&#x5730;&#x5740;. &#x901A;&#x904E;&#x6307;&#x91DD;, &#x6211;&#x5011;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x8B80;&#x6216;&#x66F4;&#x65B0;&#x8B8A;&#x91CF;&#x7684;&#x503C;, &#x800C;&#x4E0D;&#x9700;&#x8981;&#x77E5;&#x9053;&#x8B8A;&#x91CF;&#x7684;&#x540D;&#x5B57;(&#x537D;&#x4F7F;&#x8B8A;&#x91CF;&#x6709;&#x540D;&#x5B57;&#x7684;&#x8A71;).</p>
<p>&#x5982;&#x679C;&#x9019;&#x6A23;&#x8072;&#x660E;&#x4E00;&#x500B;&#x8B8A;&#x91CF; <code>var x int</code>, &#x90A3;&#x9EBD; <code>&amp;x</code> &#x8868;&#x9054;&#x5F0F;(x&#x7684;&#x5730;&#x5740;)&#x5C07;&#x7523;&#x751F;&#x4E00;&#x500B;&#x6307;&#x5411;&#x6574;&#x6578;&#x8B8A;&#x91CF;&#x7684;&#x6307;&#x91DD;, &#x5C0D;&#x61C9;&#x7684;&#x6578;&#x64DA;&#x985E;&#x578B;&#x662F; <code>*int</code>, &#x7A31;&#x4E4B;&#x7232; &quot;&#x6307;&#x5411; int &#x7684;&#x6307;&#x91DD;&quot;. &#x5982;&#x679C;&#x6307;&#x91DD;&#x540D;&#x5B57;&#x7232; p, &#x90A3;&#x9EBD;&#x53EF;&#x4EE5;&#x8AAC; &quot;p &#x6307;&#x91DD;&#x6307;&#x5411; x&quot;, &#x6216;&#x8005;&#x8AAC; &quot;p &#x6307;&#x91DD;&#x4FDD;&#x5B58;&#x4E86; x &#x8B8A;&#x91CF;&#x7684;&#x5730;&#x5740;&quot;. <code>*p</code> &#x5C0D;&#x61C9; p &#x6307;&#x91DD;&#x6307;&#x5411;&#x7684;&#x8B8A;&#x91CF;&#x7684;&#x503C;. <code>*p</code> &#x8868;&#x9054;&#x5F0F;&#x8B80;&#x53D6;&#x8B8A;&#x91CF;&#x7684;&#x503C;, &#x7232; int &#x985E;&#x578B;, &#x540C;&#x6642;&#x56E0;&#x7232; <code>*p</code> &#x5C0D;&#x61C9;&#x4E00;&#x500B;&#x8B8A;&#x91CF;, &#x6240;&#x4EE5;&#x53EF;&#x4EE5;&#x9F63;&#x73FE;&#x5728;&#x8CE6;&#x503C;&#x8A9E;&#x53E5;&#x7684;&#x5DE6;&#x908A;, &#x7528;&#x65BC;&#x66F4;&#x65B0;&#x6240;&#x6307;&#x5411;&#x7684;&#x8B8A;&#x91CF;&#x7684;&#x503C;.</p>
<pre><code class="lang-Go">x := <span class="hljs-number">1</span>
p := &amp;x <span class="hljs-comment">// p, of type *int, points to x</span>
fmt.Println(*p) <span class="hljs-comment">// &quot;1&quot;</span>
*p = <span class="hljs-number">2</span> <span class="hljs-comment">// equivalent to x = 2</span>
fmt.Println(x) <span class="hljs-comment">// &quot;2&quot;</span>
</code></pre>
<p>&#x5C0D;&#x65BC;&#x805A;&#x95A4;&#x985E;&#x578B;, &#x6BD4;&#x5982;&#x7D50;&#x69CB;&#x9AD4;&#x7684;&#x6BCF;&#x500B;&#x5B57;&#x6BB5;, &#x6216;&#x8005;&#x662F;&#x6578;&#x7D44;&#x7684;&#x6BCF;&#x500B;&#x5143;&#x7D20;, &#x4E5F;&#x90FD;&#x662F;&#x5C0D;&#x61C9;&#x4E00;&#x500B;&#x8B8A;&#x91CF;, &#x4F75;&#x4E14;&#x53EF;&#x4EE5;&#x88AB;&#x7A6B;&#x53D6;&#x5730;&#x5740;.</p>
<p>&#x8B8A;&#x91CF;&#x6709;&#x6642;&#x5019;&#x88AB;&#x7A31;&#x70BA;&#x53EF;&#x5C0B;&#x5740;&#x7684;&#x503C;. &#x5982;&#x679C;&#x8B8A;&#x91CF;&#x7531;&#x9336;&#x9054;&#x5F0F;&#x81E8;&#x6642;&#x751F;&#x6210;, &#x90A3;&#x9EBC;&#x9336;&#x9054;&#x5F0F;&#x5FC5;&#x9B1A;&#x80FD;&#x63A5;&#x53D7; <code>&amp;</code> &#x53D6;&#x5730;&#x5740;&#x64CD;&#x4F5C;.</p>
<p>&#x4EFB;&#x4F55;&#x985E;&#x578B;&#x7684;&#x6307;&#x937C;&#x7684;&#x96F6;&#x503C;&#x90FD;&#x662F; nil. &#x5982;&#x679C; <code>p != nil</code> &#x6E2C;&#x8A66;&#x70BA;&#x771E;, &#x90A3;&#x9EBC; p &#x662F;&#x6307;&#x66CF;&#x8B8A;&#x91CF;. &#x6307;&#x937C;&#x76F4;&#x63A5;&#x4E5F;&#x662F;&#x53EF;&#x4EE5;&#x9032;&#x884C;&#x76F8;&#x7B49;&#x6E2C;&#x8A66;&#x7684;, &#x96BB;&#x6709;&#x7576;&#x5B83;&#x5011;&#x6307;&#x66CF;&#x8855;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#x6216;&#x5168;&#x90E8;&#x662F; nil &#x6642;&#x7E94;&#x76F8;&#x7B49;.</p>
<p>&#x5C0D;&#x65BC;&#x805A;&#x5408;&#x985E;&#x578B;, &#x6BD4;&#x5982;&#x7D50;&#x69CB;&#x9AD4;&#x7684;&#x6BCF;&#x500B;&#x5B57;&#x6BB5;, &#x6216;&#x8005;&#x662F;&#x6578;&#x7D44;&#x7684;&#x6BCF;&#x500B;&#x5143;&#x7D20;, &#x4E5F;&#x90FD;&#x662F;&#x5C0D;&#x61C9;&#x4E00;&#x500B;&#x8B8A;&#x91CF;, &#x4F75;&#x4E14;&#x53EF;&#x4EE5;&#x88AB;&#x7A6B;&#x53D6;&#x5730;&#x5740;.</p>
<p>&#x8B8A;&#x91CF;&#x6709;&#x6642;&#x5019;&#x88AB;&#x7A31;&#x7232;&#x53EF;&#x5C0B;&#x5740;&#x7684;&#x503C;. &#x5982;&#x679C;&#x8B8A;&#x91CF;&#x7531;&#x8868;&#x9054;&#x5F0F;&#x81E8;&#x6642;&#x751F;&#x6210;, &#x90A3;&#x9EBD;&#x8868;&#x9054;&#x5F0F;&#x5FC5;&#x9B1A;&#x80FD;&#x63A5;&#x53D7; <code>&amp;</code> &#x53D6;&#x5730;&#x5740;&#x64CD;&#x4F5C;.</p>
<p>&#x4EFB;&#x4F55;&#x985E;&#x578B;&#x7684;&#x6307;&#x91DD;&#x7684;&#x96F6;&#x503C;&#x90FD;&#x662F; nil. &#x5982;&#x679C; <code>p != nil</code> &#x6E2C;&#x8A66;&#x7232;&#x771E;, &#x90A3;&#x9EBD; p &#x662F;&#x6307;&#x5411;&#x8B8A;&#x91CF;. &#x6307;&#x91DD;&#x76F4;&#x63A5;&#x4E5F;&#x662F;&#x53EF;&#x4EE5;&#x9032;&#x884C;&#x76F8;&#x7B49;&#x6E2C;&#x8A66;&#x7684;, &#x96BB;&#x6709;&#x7576;&#x5B83;&#x5011;&#x6307;&#x5411;&#x540C;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#x6216;&#x5168;&#x90E8;&#x662F; nil &#x6642;&#x7E94;&#x76F8;&#x7B49;.</p>
<pre><code class="lang-Go"><span class="hljs-keyword">var</span> x, y <span class="hljs-typename">int</span>
fmt.Println(&amp;x == &amp;x, &amp;x == &amp;y, &amp;x == <span class="hljs-constant">nil</span>) <span class="hljs-comment">// &quot;true false false&quot;</span>
</code></pre>
<p>&#x5728;Go&#x8A9E;&#x8A00;&#x4E2D;, &#x8FD4;&#x8FF4;&#x51FD;&#x6578;&#x4E2D;&#x4FB7;&#x90E8;&#x8B8A;&#x91CF;&#x7684;&#x5730;&#x5740;&#x662F;&#x5B89;&#x5168;&#x7684;. &#x4F8B;&#x5982;&#x4E0B;&#x9EAB;&#x7684;&#x4EE3;&#x78BC;, &#x8ABF;&#x7528; f &#x51FD;&#x6578;&#x6642;&#x5275;&#x5EFA; v &#x4FB7;&#x90E8;&#x8B8A;&#x91CF;, &#x5728;&#x5730;&#x5740;&#x88AB;&#x8FD4;&#x8FF4;&#x4E4B;&#x5F8C;&#x4F9D;&#x7136;&#x6709;&#x6548;, &#x56E0;&#x70BA;&#x6307;&#x937C; p &#x4F9D;&#x7136;&#x5F15;&#x7528;&#x9019;&#x500B;&#x8B8A;&#x91CF;.</p>
<p>&#x5728;Go&#x8A9E;&#x8A00;&#x4E2D;, &#x8FD4;&#x8FF4;&#x51FD;&#x6578;&#x4E2D;&#x5C40;&#x90E8;&#x8B8A;&#x91CF;&#x7684;&#x5730;&#x5740;&#x662F;&#x5B89;&#x5168;&#x7684;. &#x4F8B;&#x5982;&#x4E0B;&#x9762;&#x7684;&#x4EE3;&#x78BC;, &#x8ABF;&#x7528; f &#x51FD;&#x6578;&#x6642;&#x5275;&#x5EFA; v &#x5C40;&#x90E8;&#x8B8A;&#x91CF;, &#x5728;&#x5730;&#x5740;&#x88AB;&#x8FD4;&#x8FF4;&#x4E4B;&#x5F8C;&#x4F9D;&#x7136;&#x6709;&#x6548;, &#x56E0;&#x7232;&#x6307;&#x91DD; p &#x4F9D;&#x7136;&#x5F15;&#x7528;&#x9019;&#x500B;&#x8B8A;&#x91CF;.</p>
<pre><code class="lang-Go"><span class="hljs-keyword">var</span> p = f()
<span class="hljs-keyword">func</span> f() *<span class="hljs-typename">int</span> {
@@ -2143,10 +2107,10 @@ fmt.Println(&amp;x == &amp;x, &amp;x == &amp;y, &amp;x == <span class="hljs-cons
<span class="hljs-keyword">return</span> &amp;v
}
</code></pre>
<p>&#x6BCF;&#x6B21;&#x8ABF;&#x7528; f &#x51FD;&#x6578;&#x90FD;&#x5C07;&#x8FD4;&#x8FF4;&#x4E0D;&#x8855;&#x7684;&#x7D50;&#x679C;:</p>
<p>&#x6BCF;&#x6B21;&#x8ABF;&#x7528; f &#x51FD;&#x6578;&#x90FD;&#x5C07;&#x8FD4;&#x8FF4;&#x4E0D;&#x540C;&#x7684;&#x7D50;&#x679C;:</p>
<pre><code class="lang-Go">fmt.Println(f() == f()) <span class="hljs-comment">// &quot;false&quot;</span>
</code></pre>
<p>&#x56E0;&#x70BA;&#x6307;&#x937C;&#x5305;&#x542B;&#x4E86;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#x7684;&#x5730;&#x5740;, &#x56E0;&#x6B64;&#x5C07;&#x6307;&#x937C;&#x4F5C;&#x70BA;&#x53C3;&#x6578;&#x8ABF;&#x7528;&#x51FD;&#x6578;, &#x5C07;&#x53EF;&#x4EE5;&#x5728;&#x51FD;&#x6578;&#x4E2D;&#x901A;&#x904E;&#x6307;&#x937C;&#x66F4;&#x65B0;&#x8B8A;&#x91CF;&#x7684;&#x503C;. &#x4F8B;&#x5982;&#x9019;&#x500B;&#x901A;&#x904E;&#x6307;&#x937C;&#x4F86;&#x66F4;&#x65B0;&#x8B8A;&#x91CF;&#x7684;&#x503C;, &#x7136;&#x5F8C;&#x8FD4;&#x8FF4;&#x66F4;&#x65B0;&#x5F8C;&#x7684;&#x503C;, &#x53EF;&#x7528;&#x5728;&#x4E00;&#x500B;&#x9336;&#x9054;&#x5F0F;&#x4E2D;:</p>
<p>&#x56E0;&#x7232;&#x6307;&#x91DD;&#x5305;&#x542B;&#x4E86;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#x7684;&#x5730;&#x5740;, &#x56E0;&#x6B64;&#x5C07;&#x6307;&#x91DD;&#x4F5C;&#x7232;&#x53C3;&#x6578;&#x8ABF;&#x7528;&#x51FD;&#x6578;, &#x5C07;&#x53EF;&#x4EE5;&#x5728;&#x51FD;&#x6578;&#x4E2D;&#x901A;&#x904E;&#x6307;&#x91DD;&#x66F4;&#x65B0;&#x8B8A;&#x91CF;&#x7684;&#x503C;. &#x4F8B;&#x5982;&#x9019;&#x500B;&#x901A;&#x904E;&#x6307;&#x91DD;&#x4F86;&#x66F4;&#x65B0;&#x8B8A;&#x91CF;&#x7684;&#x503C;, &#x7136;&#x5F8C;&#x8FD4;&#x8FF4;&#x66F4;&#x65B0;&#x5F8C;&#x7684;&#x503C;, &#x53EF;&#x7528;&#x5728;&#x4E00;&#x500B;&#x8868;&#x9054;&#x5F0F;&#x4E2D;:</p>
<pre><code class="lang-Go"><span class="hljs-keyword">func</span> incr(p *<span class="hljs-typename">int</span>) <span class="hljs-typename">int</span> {
*p++ <span class="hljs-comment">// increments what p points to; does not change p</span>
<span class="hljs-keyword">return</span> *p
@@ -2156,8 +2120,8 @@ v := <span class="hljs-number">1</span>
incr(&amp;v) <span class="hljs-comment">// side effect: v is now 2</span>
fmt.Println(incr(&amp;v)) <span class="hljs-comment">// &quot;3&quot; (and v is 3)</span>
</code></pre>
<p>&#x6BCF;&#x6B21;&#x6211;&#x5011;&#x5C0D;&#x8B8A;&#x91CF;&#x53D6;&#x5730;&#x5740;, &#x6216;&#x8005;&#x5FA9;&#x88FD;&#x6307;&#x937C;, &#x6211;&#x5011;&#x90FD;&#x5275;&#x5EFA;&#x4E86;&#x8B8A;&#x91CF;&#x7684;&#x65B0;&#x7684;&#x5F46;&#x540D;. &#x4F8B;&#x5982;, *p &#x662F; &#x8B8A;&#x91CF; v &#x7684;&#x5F46;&#x540D;. &#x6307;&#x937C;&#x7279;&#x5F46;&#x6709;&#x52A0;&#x8F09;&#x7684;&#x5730;&#x65B9;&#x5728;&#x65BC;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x4E0D;&#x7528;&#x540D;&#x5B57;&#x800C;&#x8A2A;&#x554F;&#x4E00;&#x500B;&#x8B8A;&#x91CF;, &#x4F46;&#x662F;&#x9019;&#x662F;&#x4E00;&#x628A;&#x96D9;&#x5203;&#x528D;: &#x8981;&#x627E;&#x5230;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#x7684;&#x6240;&#x6709;&#x8A2A;&#x554F;&#x8005;, &#x6211;&#x5011;&#x5FC5;&#x9B1A;&#x77E5;&#x9053;&#x8B8A;&#x91CF;&#x5168;&#x90E8;&#x7684;&#x5F46;&#x540D;. &#x4E0D;&#x50C5;&#x50C5;&#x662F;&#x6307;&#x937C;&#x5275;&#x5EFA;&#x5F46;&#x540D;, &#x5F88;&#x591A;&#x5176;&#x4ED6;&#x5F15;&#x7528;&#x985E;&#x578B;&#x4E5F;&#x6703;&#x5275;&#x5EFA;&#x5F46;&#x540D;, &#x4F8B;&#x5982; &#x5207;&#x7247;, &#x5B57;&#x5178;&#x548C;&#x7BA1;&#x9053;, &#x751A;&#x81F3;&#x7D50;&#x69CB;&#x9AD4;, &#x6578;&#x7D44;&#x548C;&#x63A5;&#x53E3;&#x90FD;&#x6703;&#x5275;&#x5EFA;&#x6240;&#x5F15;&#x7528;&#x8B8A;&#x91CF;&#x7684;&#x5F46;&#x540D;.</p>
<p>&#x6307;&#x937C;&#x662F; flag &#x5305;&#x7684;&#x95DC;&#x9375;, &#x5B83;&#x4F7F;&#x7528;&#x547D;&#x4EE4;&#x884C;&#x53C3;&#x6578;&#x4F86;&#x8A2D;&#x7F6E;&#x5C0D;&#x61C9;&#x7684;&#x8B8A;&#x91CF;, &#x800C;&#x9019;&#x4E9B;&#x5206;&#x4F48;&#x5728;&#x6574;&#x500B;&#x7A0B;&#x5E8F;&#x4E2D;. &#x70BA;&#x4E86;&#x8AAA;&#x660E;&#x9019;&#x4E00;&#x9EDE;, &#x5728;&#x65E9;&#x4E9B;&#x7684;echo&#x7248;&#x672C;&#x4E2D;, &#x5305;&#x542B;&#x4E86;&#x5169;&#x500B;&#x53EF;&#x9078;&#x7684;&#x547D;&#x4EE4;&#x884C;&#x53C3;&#x6578;: <code>-n</code> &#x7528;&#x65BC;&#x5FFD;&#x7565;&#x884C;&#x5C3E;&#x7684;&#x63DB;&#x884C;&#x7B26;, <code>-s sep</code> &#x7528;&#x65BC;&#x6307;&#x5B9A;&#x5206;&#x9694;&#x5B57;&#x7B26;(&#x9ED8;&#x8A8D;&#x662F;&#x7A7A;&#x683C;). &#x9019;&#x662F;&#x7B2C;&#x56DB;&#x500B;&#x7248;&#x672C;, &#x5C0D;&#x61C9;&#x5305; gopl.io/ch2/echo4.</p>
<p>&#x6BCF;&#x6B21;&#x6211;&#x5011;&#x5C0D;&#x8B8A;&#x91CF;&#x53D6;&#x5730;&#x5740;, &#x6216;&#x8005;&#x8907;&#x88FD;&#x6307;&#x91DD;, &#x6211;&#x5011;&#x90FD;&#x5275;&#x5EFA;&#x4E86;&#x8B8A;&#x91CF;&#x7684;&#x65B0;&#x7684;&#x522B;&#x540D;. &#x4F8B;&#x5982;, *p &#x662F; &#x8B8A;&#x91CF; v &#x7684;&#x522B;&#x540D;. &#x6307;&#x91DD;&#x7279;&#x522B;&#x6709;&#x52A0;&#x8F09;&#x7684;&#x5730;&#x65B9;&#x5728;&#x65BC;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x4E0D;&#x7528;&#x540D;&#x5B57;&#x800C;&#x8A2A;&#x554F;&#x4E00;&#x500B;&#x8B8A;&#x91CF;, &#x4F46;&#x662F;&#x9019;&#x662F;&#x4E00;&#x628A;&#x96D9;&#x5203;&#x528D;: &#x8981;&#x627E;&#x5230;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#x7684;&#x6240;&#x6709;&#x8A2A;&#x554F;&#x8005;, &#x6211;&#x5011;&#x5FC5;&#x9B1A;&#x77E5;&#x9053;&#x8B8A;&#x91CF;&#x5168;&#x90E8;&#x7684;&#x522B;&#x540D;. &#x4E0D;&#x50C5;&#x50C5;&#x662F;&#x6307;&#x91DD;&#x5275;&#x5EFA;&#x522B;&#x540D;, &#x5F88;&#x591A;&#x5176;&#x4ED6;&#x5F15;&#x7528;&#x985E;&#x578B;&#x4E5F;&#x6703;&#x5275;&#x5EFA;&#x522B;&#x540D;, &#x4F8B;&#x5982; &#x5207;&#x7247;, &#x5B57;&#x5178;&#x548C;&#x7BA1;&#x9053;, &#x751A;&#x81F3;&#x7D50;&#x69CB;&#x9AD4;, &#x6578;&#x7D44;&#x548C;&#x63A5;&#x53E3;&#x90FD;&#x6703;&#x5275;&#x5EFA;&#x6240;&#x5F15;&#x7528;&#x8B8A;&#x91CF;&#x7684;&#x522B;&#x540D;.</p>
<p>&#x6307;&#x91DD;&#x662F; flag &#x5305;&#x7684;&#x95DC;&#x9375;, &#x5B83;&#x4F7F;&#x7528;&#x547D;&#x4EE4;&#x884C;&#x53C3;&#x6578;&#x4F86;&#x8A2D;&#x7F6E;&#x5C0D;&#x61C9;&#x7684;&#x8B8A;&#x91CF;, &#x800C;&#x9019;&#x4E9B;&#x5206;&#x5E03;&#x5728;&#x6574;&#x500B;&#x7A0B;&#x5E8F;&#x4E2D;. &#x7232;&#x4E86;&#x8AAC;&#x660E;&#x9019;&#x4E00;&#x9EDE;, &#x5728;&#x65E9;&#x4E9B;&#x7684;echo&#x7248;&#x672C;&#x4E2D;, &#x5305;&#x542B;&#x4E86;&#x5169;&#x500B;&#x53EF;&#x9078;&#x7684;&#x547D;&#x4EE4;&#x884C;&#x53C3;&#x6578;: <code>-n</code> &#x7528;&#x65BC;&#x5FFD;&#x7565;&#x884C;&#x5C3E;&#x7684;&#x63DB;&#x884C;&#x7B26;, <code>-s sep</code> &#x7528;&#x65BC;&#x6307;&#x5B9A;&#x5206;&#x9694;&#x5B57;&#x7B26;(&#x9ED8;&#x8A8D;&#x662F;&#x7A7A;&#x683C;). &#x9019;&#x662F;&#x7B2C;&#x56DB;&#x500B;&#x7248;&#x672C;, &#x5C0D;&#x61C9;&#x5305; gopl.io/ch2/echo4.</p>
<pre><code class="lang-Go">gopl.io/ch2/echo4
<span class="hljs-comment">// Echo4 prints its command-line arguments.</span>
<span class="hljs-keyword">package</span> main
@@ -2179,7 +2143,7 @@ fmt.Println(incr(&amp;v)) <span class="hljs-comment">// &quot;3&quot; (and v is
}
}
</code></pre>
<p><code>flag.Bool</code> &#x51FD;&#x6578;&#x8ABF;&#x7528;&#x5275;&#x5EFA;&#x4E86;&#x4E00;&#x500B;&#x65B0;&#x7684;&#x4F48;&#x723E;&#x578B;&#x6A19;&#x8A8C;&#x53C3;&#x6578;&#x8B8A;&#x91CF;. &#x5B83;&#x6709;&#x4E09;&#x500B;&#x5C6C;&#x6027;: &#x7B2C;&#x4E00;&#x500B;&#x662F;&#x7684;&#x540D;&#x5B57;&quot;n&quot;, &#x7136;&#x5F8C;&#x662F;&#x6A19;&#x8A8C;&#x7684;&#x9ED8;&#x8A8D;&#x503C;(&#x9019;&#x88CF;&#x662F;false), &#x6700;&#x5F8C;&#x662F;&#x5C0D;&#x61C9;&#x7684;&#x63CF;&#x8FF0;&#x4FE1;&#x606F;. &#x5982;&#x679C;&#x7528;&#x6236;&#x8F38;&#x5165;&#x4E86;&#x7121;&#x6548;&#x7684;&#x6A19;&#x8A8C;&#x53C3;&#x6578;, &#x6216;&#x8005;&#x8F38;&#x5165; <code>-h</code> &#x6216; <code>-help</code> &#x6A19;&#x8A8C;&#x53C3;&#x6578;, &#x5C07;&#x6253;&#x5370;&#x6A19;&#x8A8C;&#x53C3;&#x6578;&#x7684;&#x540D;&#x5B57;, &#x9ED8;&#x8A8D;&#x503C;&#x548C;&#x63CF;&#x8FF0;&#x4FE1;&#x606F;. &#x985E;&#x4F3C;&#x7684;, flag.String &#x7528;&#x65BC;&#x5275;&#x5EFA;&#x4E00;&#x500B;&#x5B57;&#x7B26;&#x4E32;&#x985E;&#x578B;&#x7684;&#x6A19;&#x8A8C;&#x53C3;&#x6578;&#x8B8A;&#x91CF;, &#x8855;&#x6A23;&#x5305;&#x542B;&#x53C3;&#x6578;&#x540D;, &#x9ED8;&#x8A8D;&#x503C;, &#x548C;&#x63CF;&#x8FF0;&#x4FE1;&#x606F;. &#x8B8A;&#x91CF; <code>sep</code> &#x548C; <code>n</code> &#x662F;&#x4E00;&#x500B;&#x6307;&#x66CF;&#x6A19;&#x8A8C;&#x53C3;&#x6578;&#x8B8A;&#x91CF;&#x7684;&#x6307;&#x937C;, &#x56E0;&#x6B64;&#x5FC5;&#x9B1A;&#x7528; <em>sep &#x548C; </em>n &#x7684;&#x65B9;&#x5F0F;&#x9593;&#x63A5;&#x5F15;&#x7528;.</p>
<p><code>flag.Bool</code> &#x51FD;&#x6578;&#x8ABF;&#x7528;&#x5275;&#x5EFA;&#x4E86;&#x4E00;&#x500B;&#x65B0;&#x7684;&#x5E03;&#x723E;&#x578B;&#x6A19;&#x8A8C;&#x53C3;&#x6578;&#x8B8A;&#x91CF;. &#x5B83;&#x6709;&#x4E09;&#x500B;&#x5C6C;&#x6027;: &#x7B2C;&#x4E00;&#x500B;&#x662F;&#x7684;&#x540D;&#x5B57;&quot;n&quot;, &#x7136;&#x5F8C;&#x662F;&#x6A19;&#x8A8C;&#x7684;&#x9ED8;&#x8A8D;&#x503C;(&#x9019;&#x91CC;&#x662F;false), &#x6700;&#x5F8C;&#x662F;&#x5C0D;&#x61C9;&#x7684;&#x63CF;&#x8FF0;&#x4FE1;&#x606F;. &#x5982;&#x679C;&#x7528;&#x6236;&#x8F38;&#x5165;&#x4E86;&#x7121;&#x6548;&#x7684;&#x6A19;&#x8A8C;&#x53C3;&#x6578;, &#x6216;&#x8005;&#x8F38;&#x5165; <code>-h</code> &#x6216; <code>-help</code> &#x6A19;&#x8A8C;&#x53C3;&#x6578;, &#x5C07;&#x6253;&#x5370;&#x6A19;&#x8A8C;&#x53C3;&#x6578;&#x7684;&#x540D;&#x5B57;, &#x9ED8;&#x8A8D;&#x503C;&#x548C;&#x63CF;&#x8FF0;&#x4FE1;&#x606F;. &#x985E;&#x4F3C;&#x7684;, flag.String &#x7528;&#x65BC;&#x5275;&#x5EFA;&#x4E00;&#x500B;&#x5B57;&#x7B26;&#x4E32;&#x985E;&#x578B;&#x7684;&#x6A19;&#x8A8C;&#x53C3;&#x6578;&#x8B8A;&#x91CF;, &#x540C;&#x6A23;&#x5305;&#x542B;&#x53C3;&#x6578;&#x540D;, &#x9ED8;&#x8A8D;&#x503C;, &#x548C;&#x63CF;&#x8FF0;&#x4FE1;&#x606F;. &#x8B8A;&#x91CF; <code>sep</code> &#x548C; <code>n</code> &#x662F;&#x4E00;&#x500B;&#x6307;&#x5411;&#x6A19;&#x8A8C;&#x53C3;&#x6578;&#x8B8A;&#x91CF;&#x7684;&#x6307;&#x91DD;, &#x56E0;&#x6B64;&#x5FC5;&#x9B1A;&#x7528; <em>sep &#x548C; </em>n &#x7684;&#x65B9;&#x5F0F;&#x9593;&#x63A5;&#x5F15;&#x7528;.</p>
<p>&#x7576;&#x7A0B;&#x5E8F;&#x904B;&#x884C;&#x6642;, &#x5FC5;&#x9B1A;&#x5728;&#x6A19;&#x8A8C;&#x53C3;&#x6578;&#x8B8A;&#x91CF;&#x4F7F;&#x7528;&#x4E4B;&#x524D;&#x8ABF;&#x7528; flag.Parse &#x51FD;&#x6578;&#x66F4;&#x65B0;&#x6A19;&#x8A8C;&#x53C3;&#x6578;&#x8B8A;&#x91CF;&#x7684;&#x503C;(&#x4E4B;&#x524D;&#x662F;&#x9ED8;&#x8A8D;&#x503C;). &#x975E;&#x6A19;&#x8A8C;&#x53C3;&#x6578;&#x7684;&#x666E;&#x901A;&#x985E;&#x578B;&#x53C3;&#x6578;&#x53EF;&#x4EE5;&#x7528; flag.Args() &#x8A2A;&#x554F;, &#x5C0D;&#x61C9;&#x4E00;&#x500B; &#x5B57;&#x7B26;&#x4E32;&#x5207;&#x7247;. &#x5982;&#x679C; flag.Parse &#x89E3;&#x6790;&#x9047;&#x5230;&#x932F;&#x8AA4;, &#x5C07;&#x6253;&#x5370;&#x63D0;&#x793A;&#x4FE1;&#x606F;, &#x7136;&#x5F8C;&#x8ABF;&#x7528; os.Exit(2) &#x7D42;&#x6B62;&#x7A0B;&#x5E8F;.</p>
<p>&#x8B93;&#x6211;&#x5011;&#x904B;&#x884C;&#x4E00;&#x4E9B; echo &#x6E2C;&#x8A66;&#x7528;&#x4F8B;:</p>
<pre><code>$ go build gopl.io/ch2/echo4
@@ -2195,33 +2159,33 @@ Usage of ./echo4:
-s string
separator (default &quot; &quot;)
</code></pre><h3 id="233-new-&#x51FD;&#x6578;">2.3.3 new &#x51FD;&#x6578;</h3>
<p>&#x53E6;&#x4E00;&#x500B;&#x5275;&#x5EFA;&#x8B8A;&#x91CF;&#x7684;&#x65B9;&#x6CD5;&#x662F;&#x7528;&#x5167;&#x5EFA;&#x7684; new &#x51FD;&#x6578;. &#x9336;&#x9054;&#x5F0F; <code>new(T)</code> &#x5275;&#x5EFA;&#x4E00;&#x500B;T&#x985E;&#x578B;&#x7684;&#x533F;&#x540D;&#x8B8A;&#x91CF;, &#x521D;&#x59CB;&#x5316;&#x70BA;T&#x985E;&#x578B;&#x7684;&#x96F6;&#x503C;, &#x8FD4;&#x8FF4;&#x8FD4;&#x8FF4;&#x8B8A;&#x91CF;&#x5730;&#x5740;, &#x8FD4;&#x8FF4;&#x6307;&#x937C;&#x985E;&#x578B;&#x70BA; <code>*T</code>.</p>
<pre><code class="lang-Go">p := <span class="hljs-built_in">new</span>(<span class="hljs-typename">int</span>) <span class="hljs-comment">// p, *int &#x985E;&#x578B;, &#x6307;&#x66CF;&#x533F;&#x540D;&#x7684; int &#x8B8A;&#x91CF;</span>
<p>&#x53E6;&#x4E00;&#x500B;&#x5275;&#x5EFA;&#x8B8A;&#x91CF;&#x7684;&#x65B9;&#x6CD5;&#x662F;&#x7528;&#x5167;&#x5EFA;&#x7684; new &#x51FD;&#x6578;. &#x8868;&#x9054;&#x5F0F; <code>new(T)</code> &#x5275;&#x5EFA;&#x4E00;&#x500B;T&#x985E;&#x578B;&#x7684;&#x533F;&#x540D;&#x8B8A;&#x91CF;, &#x521D;&#x59CB;&#x5316;&#x7232;T&#x985E;&#x578B;&#x7684;&#x96F6;&#x503C;, &#x8FD4;&#x8FF4;&#x8FD4;&#x8FF4;&#x8B8A;&#x91CF;&#x5730;&#x5740;, &#x8FD4;&#x8FF4;&#x6307;&#x91DD;&#x985E;&#x578B;&#x7232; <code>*T</code>.</p>
<pre><code class="lang-Go">p := <span class="hljs-built_in">new</span>(<span class="hljs-typename">int</span>) <span class="hljs-comment">// p, *int &#x985E;&#x578B;, &#x6307;&#x5411;&#x533F;&#x540D;&#x7684; int &#x8B8A;&#x91CF;</span>
fmt.Println(*p) <span class="hljs-comment">// &quot;0&quot;</span>
*p = <span class="hljs-number">2</span> <span class="hljs-comment">// &#x8A2D;&#x7F6E; int &#x533F;&#x540D;&#x8B8A;&#x91CF;&#x7684;&#x503C;&#x70BA; 2</span>
*p = <span class="hljs-number">2</span> <span class="hljs-comment">// &#x8A2D;&#x7F6E; int &#x533F;&#x540D;&#x8B8A;&#x91CF;&#x7684;&#x503C;&#x7232; 2</span>
fmt.Println(*p) <span class="hljs-comment">// &quot;2&quot;</span>
</code></pre>
<p>&#x5F9E; new &#x5275;&#x5EFA;&#x8B8A;&#x91CF;&#x548C;&#x666E;&#x901A;&#x8072;&#x660E;&#x65B9;&#x5F0F;&#x5275;&#x5EFA;&#x8B8A;&#x91CF;&#x6C92;&#x6709;&#x4EC0;&#x9EBC;&#x5340;&#x5F46;, &#x9664;&#x4E86;&#x4E0D;&#x9700;&#x8981;&#x8072;&#x660E;&#x4E00;&#x500B;&#x81E8;&#x6642;&#x8B8A;&#x91CF;&#x7684;&#x540D;&#x5B57;&#x5916;, &#x6211;&#x5011;&#x9084;&#x53EF;&#x4EE5;&#x5728;&#x9336;&#x9054;&#x5F0F;&#x4E2D;&#x4F7F;&#x7528; <code>new(T)</code>. &#x63DB;&#x8A00;&#x4E4B;, new &#x985E;&#x4F3C;&#x662F;&#x4E00;&#x7A2E;&#x8A9E;&#x6CD5;&#x91A3;, &#x800C;&#x4E0D;&#x662F;&#x4E00;&#x500B;&#x65B0;&#x7684;&#x57FA;&#x790E;&#x6982;&#x5538;.</p>
<p>&#x4E0B;&#x9EAB;&#x7684;&#x5169;&#x500B; newInt &#x51FD;&#x6578;&#x6709;&#x7740;&#x76F8;&#x8855;&#x7684;&#x884C;&#x70BA;:</p>
<p>&#x5F9E; new &#x5275;&#x5EFA;&#x8B8A;&#x91CF;&#x548C;&#x666E;&#x901A;&#x8072;&#x660E;&#x65B9;&#x5F0F;&#x5275;&#x5EFA;&#x8B8A;&#x91CF;&#x6C92;&#x6709;&#x4EC0;&#x9EBD;&#x5340;&#x522B;, &#x9664;&#x4E86;&#x4E0D;&#x9700;&#x8981;&#x8072;&#x660E;&#x4E00;&#x500B;&#x81E8;&#x6642;&#x8B8A;&#x91CF;&#x7684;&#x540D;&#x5B57;&#x5916;, &#x6211;&#x5011;&#x9084;&#x53EF;&#x4EE5;&#x5728;&#x8868;&#x9054;&#x5F0F;&#x4E2D;&#x4F7F;&#x7528; <code>new(T)</code>. &#x63DB;&#x8A00;&#x4E4B;, new &#x985E;&#x4F3C;&#x662F;&#x4E00;&#x7A2E;&#x8A9E;&#x6CD5;&#x91A3;, &#x800C;&#x4E0D;&#x662F;&#x4E00;&#x500B;&#x65B0;&#x7684;&#x57FA;&#x790E;&#x6982;&#x5FF5;.</p>
<p>&#x4E0B;&#x9762;&#x7684;&#x5169;&#x500B; newInt &#x51FD;&#x6578;&#x6709;&#x7740;&#x76F8;&#x540C;&#x7684;&#x884C;&#x7232;:</p>
<pre><code class="lang-Go"><span class="hljs-keyword">func</span> newInt() *<span class="hljs-typename">int</span> { <span class="hljs-keyword">func</span> newInt() *<span class="hljs-typename">int</span> {
<span class="hljs-keyword">return</span> <span class="hljs-built_in">new</span>(<span class="hljs-typename">int</span>) <span class="hljs-keyword">var</span> dummy <span class="hljs-typename">int</span>
} <span class="hljs-keyword">return</span> &amp;dummy
}
</code></pre>
<p>&#x6BCF;&#x6B21;&#x8ABF;&#x7528; new &#x90FD;&#x662F;&#x8FD4;&#x8FF4;&#x4E00;&#x500B;&#x65B0;&#x7684;&#x8B8A;&#x91CF;&#x7684;&#x5730;&#x5740;, &#x56E0;&#x6B64;&#x4E0B;&#x9EAB;&#x5169;&#x500B;&#x5730;&#x5740;&#x662F;&#x4E0D;&#x8855;&#x7684;:</p>
<p>&#x6BCF;&#x6B21;&#x8ABF;&#x7528; new &#x90FD;&#x662F;&#x8FD4;&#x8FF4;&#x4E00;&#x500B;&#x65B0;&#x7684;&#x8B8A;&#x91CF;&#x7684;&#x5730;&#x5740;, &#x56E0;&#x6B64;&#x4E0B;&#x9762;&#x5169;&#x500B;&#x5730;&#x5740;&#x662F;&#x4E0D;&#x540C;&#x7684;:</p>
<pre><code class="lang-Go">p := <span class="hljs-built_in">new</span>(<span class="hljs-typename">int</span>)
q := <span class="hljs-built_in">new</span>(<span class="hljs-typename">int</span>)
fmt.Println(p == q) <span class="hljs-comment">// &quot;false&quot;</span>
</code></pre>
<p>&#x7576;&#x7136;&#x4E5F;&#x6709;&#x7279;&#x6B8A;&#x60C5;&#x6CC1;: &#x5982;&#x679C;&#x5169;&#x500B;&#x985E;&#x578B;&#x90FD;&#x662F;&#x7A7A;&#x7684;, &#x4E5F;&#x5C31;&#x662F;&#x8AAA;&#x985E;&#x578B;&#x7684;&#x5927;&#x5C0F;&#x662F;0, &#x4F8B;&#x5982; <code>struct{}</code> &#x548C; <code>[0]int</code>, &#x6709;&#x53EF;&#x80FD;&#x6709;&#x76F8;&#x8855;&#x7684;&#x5730;&#x5740;(&#x4F9D;&#x8CF4;&#x5177;&#x9AD4;&#x7684;&#x8A9E;&#x8A00;&#x5BE6;&#x73FE;).</p>
<p>new &#x51FD;&#x6578;&#x4F7F;&#x7528;&#x76F8;&#x5C0D;&#x6BD4;&#x8F03;&#x5C11;, &#x56E0;&#x70BA;&#x5C0D;&#x61C9;&#x7D50;&#x69CB;&#x9AD4;&#x4F86;&#x8AAA;, &#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x7528;&#x5B57;&#x9EAB;&#x91CF;&#x8A9E;&#x6CD5;&#x5275;&#x5EFA;&#x65B0;&#x8B8A;&#x91CF;&#x7684;&#x65B9;&#x6CD5;&#x66F4;&#x9748;&#x6D3B; (&#xA7;4.4.1).</p>
<p>&#x7531;&#x65BC; new &#x96BB;&#x662F;&#x4E00;&#x500B;&#x9810;&#x5B9A;&#x7FA9;&#x7684;&#x51FD;&#x6578;, &#x5B83;&#x4F75;&#x4E0D;&#x662F;&#x4E00;&#x500B;&#x95DC;&#x9375;&#x5B57;, &#x56E0;&#x6B64;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x5C07; new &#x91CD;&#x65B0;&#x5B9A;&#x7FA9;&#x70BA;&#x5F46;&#x7684;&#x985E;&#x578B;. &#x4F8B;&#x5982;:</p>
<p>&#x7576;&#x7136;&#x4E5F;&#x6709;&#x7279;&#x6B8A;&#x60C5;&#x6CC1;: &#x5982;&#x679C;&#x5169;&#x500B;&#x985E;&#x578B;&#x90FD;&#x662F;&#x7A7A;&#x7684;, &#x4E5F;&#x5C31;&#x662F;&#x8AAC;&#x985E;&#x578B;&#x7684;&#x5927;&#x5C0F;&#x662F;0, &#x4F8B;&#x5982; <code>struct{}</code> &#x548C; <code>[0]int</code>, &#x6709;&#x53EF;&#x80FD;&#x6709;&#x76F8;&#x540C;&#x7684;&#x5730;&#x5740;(&#x4F9D;&#x8CF4;&#x5177;&#x9AD4;&#x7684;&#x8A9E;&#x8A00;&#x5BE6;&#x73FE;).</p>
<p>new &#x51FD;&#x6578;&#x4F7F;&#x7528;&#x76F8;&#x5C0D;&#x6BD4;&#x8F03;&#x5C11;, &#x56E0;&#x7232;&#x5C0D;&#x61C9;&#x7D50;&#x69CB;&#x9AD4;&#x4F86;&#x8AAC;, &#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x7528;&#x5B57;&#x9762;&#x91CF;&#x8A9E;&#x6CD5;&#x5275;&#x5EFA;&#x65B0;&#x8B8A;&#x91CF;&#x7684;&#x65B9;&#x6CD5;&#x66F4;&#x9748;&#x6D3B; (&#xA7;4.4.1).</p>
<p>&#x7531;&#x65BC; new &#x96BB;&#x662F;&#x4E00;&#x500B;&#x9810;&#x5B9A;&#x7FA9;&#x7684;&#x51FD;&#x6578;, &#x5B83;&#x4F75;&#x4E0D;&#x662F;&#x4E00;&#x500B;&#x95DC;&#x9375;&#x5B57;, &#x56E0;&#x6B64;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x5C07; new &#x91CD;&#x65B0;&#x5B9A;&#x7FA9;&#x7232;&#x522B;&#x7684;&#x985E;&#x578B;. &#x4F8B;&#x5982;:</p>
<pre><code class="lang-Go"><span class="hljs-keyword">func</span> delta(old, <span class="hljs-built_in">new</span> <span class="hljs-typename">int</span>) <span class="hljs-typename">int</span> { <span class="hljs-keyword">return</span> <span class="hljs-built_in">new</span> - old }
</code></pre>
<p>&#x56E0;&#x70BA; new &#x88AB;&#x5B9A;&#x7FA9;&#x70BA; int &#x985E;&#x578B;&#x7684;&#x8B8A;&#x91CF;, &#x56E0;&#x6B64; delta &#x51FD;&#x6578;&#x5167;&#x90E8;&#x5C31;&#x7121;&#x6CD5;&#x5728;&#x4F7F;&#x7528;&#x5167;&#x7F6E;&#x7684; new &#x51FD;&#x6578;&#x4E86;.</p>
<p>&#x56E0;&#x7232; new &#x88AB;&#x5B9A;&#x7FA9;&#x7232; int &#x985E;&#x578B;&#x7684;&#x8B8A;&#x91CF;, &#x56E0;&#x6B64; delta &#x51FD;&#x6578;&#x5167;&#x90E8;&#x5C31;&#x7121;&#x6CD5;&#x5728;&#x4F7F;&#x7528;&#x5167;&#x7F6E;&#x7684; new &#x51FD;&#x6578;&#x4E86;.</p>
<h3 id="234-&#x8B8A;&#x91CF;&#x7684;&#x751F;&#x547D;&#x9031;&#x671F;">2.3.4. &#x8B8A;&#x91CF;&#x7684;&#x751F;&#x547D;&#x9031;&#x671F;</h3>
<p>&#x8B8A;&#x91CF;&#x7684;&#x751F;&#x547D;&#x9031;&#x671F;&#x6307;&#x7684;&#x662F;&#x7A0B;&#x5E8F;&#x904B;&#x884C;&#x671F;&#x9593;&#x8B8A;&#x91CF;&#x5B58;&#x5728;&#x7684;&#x6709;&#x6548;&#x6642;&#x9593;&#x9593;&#x9694;. &#x5305;&#x7D1A;&#x8072;&#x660E;&#x7684;&#x8B8A;&#x91CF;&#x7684;&#x751F;&#x547D;&#x9031;&#x671F;&#x548C;&#x7A0B;&#x5E8F;&#x7684;&#x751F;&#x547D;&#x9031;&#x671F;&#x662F;&#x4E00;&#x7DFB;&#x7684;. &#x76F8;&#x6BD4;&#x4E4B;&#x4E0B;, &#x4FB7;&#x90E8;&#x8B8A;&#x91CF;&#x7684;&#x8072;&#x660E;&#x9031;&#x671F;&#x662F;&#x52D5;&#x614B;&#x7684;: &#x5F9E;&#x6BCF;&#x6B21;&#x5275;&#x5EFA;&#x4E00;&#x500B;&#x65B0;&#x8B8A;&#x91CF;&#x7684;&#x8072;&#x660E;&#x8A9E;&#x53E5;&#x88AB;&#x57F7;&#x884C;&#x958B;&#x59CB;, &#x76F4;&#x5230;&#x8B8A;&#x91CF;&#x4E0D;&#x5728;&#x88AB;&#x5F15;&#x7528;&#x70BA;&#x6B62;, &#x7136;&#x5F8C;&#x8B8A;&#x91CF;&#x7684;&#x5B58;&#x5132;&#x7A7A;&#x9593;&#x53EF;&#x80FD;&#x88AB;&#x8FF4;&#x6536;. &#x51FD;&#x6578;&#x7684;&#x53C3;&#x6578;&#x8B8A;&#x91CF;&#x548C;&#x8FD4;&#x8FF4;&#x503C;&#x8B8A;&#x91CF;&#x90FD;&#x662F;&#x4FB7;&#x90E8;&#x8B8A;&#x91CF;. &#x5B83;&#x5011;&#x5728;&#x51FD;&#x6578;&#x6BCF;&#x6B21;&#x88AB;&#x8ABF;&#x7528;&#x7684;&#x6642;&#x5019;&#x5275;&#x5EFA;.</p>
<p>&#x4F8B;&#x5982;, &#x4E0B;&#x9EAB;&#x662F;&#x5F9E; 1.4 &#x7BC0;&#x7684; Lissajous &#x7A0B;&#x5E8F;&#x6458;&#x5F54;&#x7684;&#x4EE3;&#x78BC;&#x7247;&#x6BB5;:</p>
<p>&#x8B8A;&#x91CF;&#x7684;&#x751F;&#x547D;&#x9031;&#x671F;&#x6307;&#x7684;&#x662F;&#x7A0B;&#x5E8F;&#x904B;&#x884C;&#x671F;&#x9593;&#x8B8A;&#x91CF;&#x5B58;&#x5728;&#x7684;&#x6709;&#x6548;&#x6642;&#x9593;&#x9593;&#x9694;. &#x5305;&#x7D1A;&#x8072;&#x660E;&#x7684;&#x8B8A;&#x91CF;&#x7684;&#x751F;&#x547D;&#x9031;&#x671F;&#x548C;&#x7A0B;&#x5E8F;&#x7684;&#x751F;&#x547D;&#x9031;&#x671F;&#x662F;&#x4E00;&#x81F4;&#x7684;. &#x76F8;&#x6BD4;&#x4E4B;&#x4E0B;, &#x5C40;&#x90E8;&#x8B8A;&#x91CF;&#x7684;&#x8072;&#x660E;&#x9031;&#x671F;&#x662F;&#x52D5;&#x614B;&#x7684;: &#x5F9E;&#x6BCF;&#x6B21;&#x5275;&#x5EFA;&#x4E00;&#x500B;&#x65B0;&#x8B8A;&#x91CF;&#x7684;&#x8072;&#x660E;&#x8A9E;&#x53E5;&#x88AB;&#x57F7;&#x884C;&#x958B;&#x59CB;, &#x76F4;&#x5230;&#x8B8A;&#x91CF;&#x4E0D;&#x5728;&#x88AB;&#x5F15;&#x7528;&#x7232;&#x6B62;, &#x7136;&#x5F8C;&#x8B8A;&#x91CF;&#x7684;&#x5B58;&#x5132;&#x7A7A;&#x9593;&#x53EF;&#x80FD;&#x88AB;&#x8FF4;&#x6536;. &#x51FD;&#x6578;&#x7684;&#x53C3;&#x6578;&#x8B8A;&#x91CF;&#x548C;&#x8FD4;&#x8FF4;&#x503C;&#x8B8A;&#x91CF;&#x90FD;&#x662F;&#x5C40;&#x90E8;&#x8B8A;&#x91CF;. &#x5B83;&#x5011;&#x5728;&#x51FD;&#x6578;&#x6BCF;&#x6B21;&#x88AB;&#x8ABF;&#x7528;&#x7684;&#x6642;&#x5019;&#x5275;&#x5EFA;.</p>
<p>&#x4F8B;&#x5982;, &#x4E0B;&#x9762;&#x662F;&#x5F9E; 1.4 &#x7BC0;&#x7684; Lissajous &#x7A0B;&#x5E8F;&#x6458;&#x9332;&#x7684;&#x4EE3;&#x78BC;&#x7247;&#x6BB5;:</p>
<pre><code class="lang-Go"><span class="hljs-keyword">for</span> t := <span class="hljs-number">0.0</span>; t &lt; cycles*<span class="hljs-number">2</span>*math.Pi; t += res {
x := math.Sin(t)
y := math.Sin(t*freq + phase)
@@ -2230,9 +2194,9 @@ fmt.Println(p == q) <span class="hljs-comment">// &quot;false&quot;</span>
}
</code></pre>
<p>&#x5728;&#x6BCF;&#x6B21;&#x5FAA;&#x74B0;&#x7684;&#x958B;&#x59CB;&#x5275;&#x5EFA;&#x8B8A;&#x91CF; t, &#x7136;&#x5F8C;&#x5728;&#x6BCF;&#x6B21;&#x5FAA;&#x74B0;&#x8FED;&#x4EE3;&#x4E2D;&#x5275;&#x5EFA; x &#x548C; y.</p>
<p>&#x90A3;&#x9EBC;&#x5783;&#x573E;&#x6536;&#x96C6;&#x5668;&#x662F;&#x5982;&#x4F55;&#x77E5;&#x9053;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#x662F;&#x4F55;&#x6642;&#x53EF;&#x4EE5;&#x88AB;&#x8FF4;&#x6536;&#x7684;&#x5462;? &#x9019;&#x88CF;&#x6211;&#x5011;&#x5148;&#x907F;&#x958B;&#x5B8C;&#x6574;&#x7684;&#x6280;&#x672E;&#x7D30;&#x7BC0;, &#x4F46;&#x662F;&#x57FA;&#x672C;&#x7684;&#x601D;&#x8DEF;&#x662F;, &#x5F9E;&#x6BCF;&#x500B;&#x5305;&#x7D1A;&#x7684;&#x8B8A;&#x91CF;&#x548C;&#x6BCF;&#x500B;&#x7576;&#x524D;&#x904B;&#x884C;&#x51FD;&#x6578;&#x7684;&#x6BCF;&#x4E00;&#x500B;&#x4FB7;&#x90E8;&#x8B8A;&#x91CF;&#x958B;&#x59CB;, &#x901A;&#x904E;&#x6307;&#x937C;&#x6216;&#x5F15;&#x7528;&#x7684;&#x8DEF;&#x5F91;, &#x662F;&#x5426;&#x53EF;&#x4EE5;&#x627E;&#x5230;&#x8A72;&#x8B8A;&#x91CF;. &#x5982;&#x679C;&#x4E0D;&#x5B58;&#x5728;&#x9019;&#x6A23;&#x7684;&#x8DEF;&#x5F91;, &#x90A3;&#x9EBC;&#x8AAA;&#x660E;&#x8A72;&#x8B8A;&#x91CF;&#x662F;&#x4E0D;&#x53EF;&#x9054;&#x7684;, &#x4E5F;&#x5C31;&#x662F;&#x8AAA;&#x5B83;&#x4F75;&#x4E0D;&#x6703;&#x5F71;&#x97FF;&#x5176;&#x9918;&#x7684;&#x8A08;&#x7B97;.</p>
<p>&#x56E0;&#x70BA;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#x7684;&#x8072;&#x660E;&#x9031;&#x671F;&#x96BB;&#x53D6;&#x6C7A;&#x65BC;&#x662F;&#x5426;&#x53EF;&#x9054;, &#x56E0;&#x6B64;&#x4E00;&#x500B;&#x5FAA;&#x74B0;&#x8FED;&#x4EE3;&#x5167;&#x90E8;&#x7684;&#x4FB7;&#x90E8;&#x8B8A;&#x91CF;&#x7684;&#x751F;&#x547D;&#x9031;&#x671F;&#x53EF;&#x80FD;&#x8D85;&#x9F63;&#x5176;&#x4FB7;&#x90E8;&#x4F5C;&#x7528;&#x57DF;. &#x5B83;&#x53EF;&#x80FD;&#x5728;&#x51FD;&#x6578;&#x8FD4;&#x8FF4;&#x4E4B;&#x5F8C;&#x4F9D;&#x7136;&#x5B58;&#x5728;.</p>
<p>&#x7DE8;&#x8B6F;&#x5668;&#x6703;&#x9078;&#x64C7;&#x5728;&#x68E7;&#x4E0A;&#x9084;&#x662F;&#x5728;&#x5806;&#x4E0A;&#x5206;&#x914D;&#x4FB7;&#x90E8;&#x8B8A;&#x91CF;&#x7684;&#x5B58;&#x5132;&#x7A7A;&#x9593;, &#x4F46;&#x53EF;&#x80FD;&#x4EE4;&#x4EBA;&#x9A5A;&#x8A1D;&#x7684;&#x662F;, &#x9019;&#x500B;&#x9078;&#x64C7;&#x4F75;&#x4E0D;&#x662F;&#x7531; var &#x6216; new &#x4F86;&#x6C7A;&#x5B9A;&#x7684;.</p>
<p>&#x90A3;&#x9EBD;&#x5783;&#x573E;&#x6536;&#x96C6;&#x5668;&#x662F;&#x5982;&#x4F55;&#x77E5;&#x9053;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#x662F;&#x4F55;&#x6642;&#x53EF;&#x4EE5;&#x88AB;&#x8FF4;&#x6536;&#x7684;&#x5462;? &#x9019;&#x91CC;&#x6211;&#x5011;&#x5148;&#x907F;&#x958B;&#x5B8C;&#x6574;&#x7684;&#x6280;&#x8853;&#x7D30;&#x7BC0;, &#x4F46;&#x662F;&#x57FA;&#x672C;&#x7684;&#x601D;&#x8DEF;&#x662F;, &#x5F9E;&#x6BCF;&#x500B;&#x5305;&#x7D1A;&#x7684;&#x8B8A;&#x91CF;&#x548C;&#x6BCF;&#x500B;&#x7576;&#x524D;&#x904B;&#x884C;&#x51FD;&#x6578;&#x7684;&#x6BCF;&#x4E00;&#x500B;&#x5C40;&#x90E8;&#x8B8A;&#x91CF;&#x958B;&#x59CB;, &#x901A;&#x904E;&#x6307;&#x91DD;&#x6216;&#x5F15;&#x7528;&#x7684;&#x8DEF;&#x5F91;, &#x662F;&#x5426;&#x53EF;&#x4EE5;&#x627E;&#x5230;&#x8A72;&#x8B8A;&#x91CF;. &#x5982;&#x679C;&#x4E0D;&#x5B58;&#x5728;&#x9019;&#x6A23;&#x7684;&#x8DEF;&#x5F91;, &#x90A3;&#x9EBD;&#x8AAC;&#x660E;&#x8A72;&#x8B8A;&#x91CF;&#x662F;&#x4E0D;&#x53EF;&#x9054;&#x7684;, &#x4E5F;&#x5C31;&#x662F;&#x8AAC;&#x5B83;&#x4F75;&#x4E0D;&#x6703;&#x5F71;&#x97FF;&#x5176;&#x9918;&#x7684;&#x8A08;&#x7B97;.</p>
<p>&#x56E0;&#x7232;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#x7684;&#x8072;&#x660E;&#x9031;&#x671F;&#x96BB;&#x53D6;&#x6C7A;&#x65BC;&#x662F;&#x5426;&#x53EF;&#x9054;, &#x56E0;&#x6B64;&#x4E00;&#x500B;&#x5FAA;&#x74B0;&#x8FED;&#x4EE3;&#x5167;&#x90E8;&#x7684;&#x5C40;&#x90E8;&#x8B8A;&#x91CF;&#x7684;&#x751F;&#x547D;&#x9031;&#x671F;&#x53EF;&#x80FD;&#x8D85;&#x9F63;&#x5176;&#x5C40;&#x90E8;&#x4F5C;&#x7528;&#x57DF;. &#x5B83;&#x53EF;&#x80FD;&#x5728;&#x51FD;&#x6578;&#x8FD4;&#x8FF4;&#x4E4B;&#x5F8C;&#x4F9D;&#x7136;&#x5B58;&#x5728;.</p>
<p>&#x7DE8;&#x8B6F;&#x5668;&#x6703;&#x9078;&#x64C7;&#x5728;&#x68E7;&#x4E0A;&#x9084;&#x662F;&#x5728;&#x5806;&#x4E0A;&#x5206;&#x914D;&#x5C40;&#x90E8;&#x8B8A;&#x91CF;&#x7684;&#x5B58;&#x5132;&#x7A7A;&#x9593;, &#x4F46;&#x53EF;&#x80FD;&#x4EE4;&#x4EBA;&#x9A5A;&#x8A1D;&#x7684;&#x662F;, &#x9019;&#x500B;&#x9078;&#x64C7;&#x4F75;&#x4E0D;&#x662F;&#x7531; var &#x6216; new &#x4F86;&#x6C7A;&#x5B9A;&#x7684;.</p>
<pre><code class="lang-Go"><span class="hljs-keyword">var</span> global *<span class="hljs-typename">int</span>
<span class="hljs-keyword">func</span> f() { <span class="hljs-keyword">func</span> g() {
@@ -2241,9 +2205,9 @@ fmt.Println(p == q) <span class="hljs-comment">// &quot;false&quot;</span>
global = &amp;x }
}
</code></pre>
<p>&#x9019;&#x88CF;&#x7684; x &#x5FC5;&#x9B1A;&#x5728;&#x5806;&#x4E0A;&#x5206;&#x914D;, &#x56E0;&#x70BA;&#x5B83;&#x5728;&#x51FD;&#x6578;&#x9000;&#x9F63;&#x5F8C;&#x4F9D;&#x7136;&#x53EF;&#x4EE5;&#x901A;&#x904E;&#x5305;&#x7684; global &#x8B8A;&#x91CF;&#x627E;&#x5230;, &#x96D6;&#x7136;&#x5B83;&#x662F;&#x5728;&#x51FD;&#x6578;&#x5167;&#x90E8;&#x5B9A;&#x7FA9;&#x7684;; &#x6211;&#x5011;&#x8AAA;&#x9019;&#x500B; x &#x4FB7;&#x90E8;&#x8B8A;&#x91CF;&#x5F9E; &#x51FD;&#x6578; f &#x4E2D;&#x9003;&#x9038;&#x4E86;. &#x76F8;&#x53CD;, &#x7576; g &#x51FD;&#x6578;&#x8FD4;&#x8FF4;&#x6642;, &#x8B8A;&#x91CF; <code>*y</code> &#x5C07;&#x662F;&#x4E0D;&#x53EF;&#x9054;&#x7684;, &#x4E5F;&#x5C31;&#x662F;&#x53EF;&#x4EE5;&#x88AB;&#x8FF4;&#x6536;&#x7684;. &#x56E0;&#x6B64;, <code>*y</code> &#x4F75;&#x6C92;&#x6709;&#x5F9E; &#x51FD;&#x6578; g &#x9003;&#x9038;, &#x7DE8;&#x8B6F;&#x5668;&#x53EF;&#x4EE5;&#x9078;&#x64C7;&#x5728;&#x68E7;&#x4E0A;&#x5206;&#x914D; <code>*y</code> &#x7684;&#x5B58;&#x5132;&#x7A7A;&#x9593;, &#x96D6;&#x7136;&#x9019;&#x88CF;&#x7528;&#x7684;&#x662F; new &#x65B9;&#x5F0F;.
&#x5728;&#x4EFB;&#x4F55;&#x6642;&#x5019;, &#x4F60;&#x4F75;&#x4E0D;&#x9700;&#x70BA;&#x4E86;&#x7DE8;&#x5BEB;&#x6B63;&#x78BA;&#x7684;&#x4EE3;&#x78BC;&#x800C;&#x8981;&#x8003;&#x616E;&#x8B8A;&#x91CF;&#x7684;&#x9003;&#x9038;&#x884C;&#x70BA;, &#x8981;&#x8A18;&#x4F4F;&#x7684;&#x662F;, &#x9003;&#x9038;&#x7684;&#x8B8A;&#x91CF;&#x9700;&#x8981;&#x984D;&#x5916;&#x5206;&#x914D;&#x5167;&#x5B58;, &#x8855;&#x6642;&#x5C0D;&#x6027;&#x80FD;&#x7684;&#x512A;&#x5316;&#x6703;&#x7522;&#x751F;&#x4E00;&#x5B9A;&#x7684;&#x5F71;&#x97FF;.</p>
<p>&#x5783;&#x573E;&#x6536;&#x96C6;&#x5668;&#x5C0D;&#x7DE8;&#x5BEB;&#x6B63;&#x78BA;&#x7684;&#x4EE3;&#x78BC;&#x662F;&#x4E00;&#x500B;&#x9245;&#x5927;&#x7684;&#x5E6B;&#x52A9;, &#x4F46;&#x4F75;&#x4E0D;&#x662F;&#x8AAA;&#x4F60;&#x5B8C;&#x5168;&#x4E0D;&#x7528;&#x8003;&#x616E;&#x5167;&#x5B58;&#x4E86;. &#x4F60;&#x96D6;&#x7136;&#x4E0D;&#x9700;&#x8981;&#x986F;&#x5F0F;&#x5730;&#x5206;&#x914D;&#x548C;&#x91CB;&#x653E;&#x5167;&#x5B58;, &#x4F46;&#x662F;&#x8981;&#x7DE8;&#x5BEB;&#x9AD8;&#x6548;&#x7684;&#x7A0B;&#x5E8F;&#x4F60;&#x9084;&#x662F;&#x9700;&#x8981;&#x77E5;&#x9053;&#x8B8A;&#x91CF;&#x7684;&#x751F;&#x547D;&#x9031;&#x671F;. &#x4F8B;&#x5982;, &#x5C07;&#x6307;&#x66CF;&#x77ED;&#x751F;&#x547D;&#x9031;&#x671F;&#x5C0D;&#x8C61;&#x7684;&#x6307;&#x937C;&#x4FDD;&#x5B58;&#x5230;&#x5177;&#x6709;&#x9577;&#x751F;&#x547D;&#x9031;&#x671F;&#x7684;&#x5C0D;&#x8C61;&#x4E2D;, &#x7279;&#x5F46;&#x662F;&#x5168;&#x4FB7;&#x8B8A;&#x91CF;&#x6642;, &#x6703;&#x963B;&#x6B62;&#x5C0D;&#x77ED;&#x751F;&#x547D;&#x9031;&#x671F;&#x5C0D;&#x8C61;&#x7684;&#x5783;&#x573E;&#x8FF4;&#x6536;.</p>
<p>&#x9019;&#x91CC;&#x7684; x &#x5FC5;&#x9B1A;&#x5728;&#x5806;&#x4E0A;&#x5206;&#x914D;, &#x56E0;&#x7232;&#x5B83;&#x5728;&#x51FD;&#x6578;&#x9000;&#x9F63;&#x5F8C;&#x4F9D;&#x7136;&#x53EF;&#x4EE5;&#x901A;&#x904E;&#x5305;&#x7684; global &#x8B8A;&#x91CF;&#x627E;&#x5230;, &#x96D6;&#x7136;&#x5B83;&#x662F;&#x5728;&#x51FD;&#x6578;&#x5167;&#x90E8;&#x5B9A;&#x7FA9;&#x7684;; &#x6211;&#x5011;&#x8AAC;&#x9019;&#x500B; x &#x5C40;&#x90E8;&#x8B8A;&#x91CF;&#x5F9E; &#x51FD;&#x6578; f &#x4E2D;&#x9003;&#x9038;&#x4E86;. &#x76F8;&#x53CD;, &#x7576; g &#x51FD;&#x6578;&#x8FD4;&#x8FF4;&#x6642;, &#x8B8A;&#x91CF; <code>*y</code> &#x5C07;&#x662F;&#x4E0D;&#x53EF;&#x9054;&#x7684;, &#x4E5F;&#x5C31;&#x662F;&#x53EF;&#x4EE5;&#x88AB;&#x8FF4;&#x6536;&#x7684;. &#x56E0;&#x6B64;, <code>*y</code> &#x4F75;&#x6C92;&#x6709;&#x5F9E; &#x51FD;&#x6578; g &#x9003;&#x9038;, &#x7DE8;&#x8B6F;&#x5668;&#x53EF;&#x4EE5;&#x9078;&#x64C7;&#x5728;&#x68E7;&#x4E0A;&#x5206;&#x914D; <code>*y</code> &#x7684;&#x5B58;&#x5132;&#x7A7A;&#x9593;, &#x96D6;&#x7136;&#x9019;&#x91CC;&#x7528;&#x7684;&#x662F; new &#x65B9;&#x5F0F;.
&#x5728;&#x4EFB;&#x4F55;&#x6642;&#x5019;, &#x4F60;&#x4F75;&#x4E0D;&#x9700;&#x7232;&#x4E86;&#x7DE8;&#x5BEB;&#x6B63;&#x78BA;&#x7684;&#x4EE3;&#x78BC;&#x800C;&#x8981;&#x8003;&#x616E;&#x8B8A;&#x91CF;&#x7684;&#x9003;&#x9038;&#x884C;&#x7232;, &#x8981;&#x8A18;&#x4F4F;&#x7684;&#x662F;, &#x9003;&#x9038;&#x7684;&#x8B8A;&#x91CF;&#x9700;&#x8981;&#x984D;&#x5916;&#x5206;&#x914D;&#x5167;&#x5B58;, &#x540C;&#x6642;&#x5C0D;&#x6027;&#x80FD;&#x7684;&#x512A;&#x5316;&#x6703;&#x7523;&#x751F;&#x4E00;&#x5B9A;&#x7684;&#x5F71;&#x97FF;.</p>
<p>&#x5783;&#x573E;&#x6536;&#x96C6;&#x5668;&#x5C0D;&#x7DE8;&#x5BEB;&#x6B63;&#x78BA;&#x7684;&#x4EE3;&#x78BC;&#x662F;&#x4E00;&#x500B;&#x9245;&#x5927;&#x7684;&#x5E6B;&#x52A9;, &#x4F46;&#x4F75;&#x4E0D;&#x662F;&#x8AAC;&#x4F60;&#x5B8C;&#x5168;&#x4E0D;&#x7528;&#x8003;&#x616E;&#x5167;&#x5B58;&#x4E86;. &#x4F60;&#x96D6;&#x7136;&#x4E0D;&#x9700;&#x8981;&#x986F;&#x5F0F;&#x5730;&#x5206;&#x914D;&#x548C;&#x91CB;&#x653E;&#x5167;&#x5B58;, &#x4F46;&#x662F;&#x8981;&#x7DE8;&#x5BEB;&#x9AD8;&#x6548;&#x7684;&#x7A0B;&#x5E8F;&#x4F60;&#x9084;&#x662F;&#x9700;&#x8981;&#x77E5;&#x9053;&#x8B8A;&#x91CF;&#x7684;&#x751F;&#x547D;&#x9031;&#x671F;. &#x4F8B;&#x5982;, &#x5C07;&#x6307;&#x5411;&#x77ED;&#x751F;&#x547D;&#x9031;&#x671F;&#x5C0D;&#x8C61;&#x7684;&#x6307;&#x91DD;&#x4FDD;&#x5B58;&#x5230;&#x5177;&#x6709;&#x9577;&#x751F;&#x547D;&#x9031;&#x671F;&#x7684;&#x5C0D;&#x8C61;&#x4E2D;, &#x7279;&#x522B;&#x662F;&#x5168;&#x5C40;&#x8B8A;&#x91CF;&#x6642;, &#x6703;&#x963B;&#x6B62;&#x5C0D;&#x77ED;&#x751F;&#x547D;&#x9031;&#x671F;&#x5C0D;&#x8C61;&#x7684;&#x5783;&#x573E;&#x8FF4;&#x6536;.</p>
</section>

View File

@@ -1,6 +1,6 @@
### 2.4.1. 元組賦值
元組賦值是另一種形式的賦值語句, 允許時更新多個變量的值. 在賦值之前, 賦值語句右邊的所有達式將會先進行求值, 然後再統一更新左邊變量的值. 這對於處理有些時齣現在元組賦值語句左右兩邊的變量很有幫助, 例如我們可以這樣交換兩個變量的值:
元組賦值是另一種形式的賦值語句, 允許時更新多個變量的值. 在賦值之前, 賦值語句右邊的所有達式將會先進行求值, 然後再統一更新左邊變量的值. 這對於處理有些時齣現在元組賦值語句左右兩邊的變量很有幫助, 例如我們可以這樣交換兩個變量的值:
```Go
x, y = y, x
@@ -31,22 +31,22 @@ func fib(n int) int {
}
```
元組賦值也可以使一繫列瑣碎賦值更緊湊(譯註: 特是在for循環的初始化部分),
元組賦值也可以使一繫列瑣碎賦值更緊湊(譯註: 特是在for循環的初始化部分),
```Go
i, j, k = 2, 3, 5
```
但如果達式太雜的話, 應該盡量避免元組賦值; 因一個個單獨的賦值語句的可讀性會更好.
但如果達式太雜的話, 應該盡量避免元組賦值; 因一個個單獨的賦值語句的可讀性會更好.
某些達式會生多個值, 比如調用一個有多個返迴值的函數.
當這樣一個函數調用齣現在元組賦值右邊的達式中時(譯註: 右邊不能再有其他達式), 左邊變量的數目必鬚和右邊一.
某些達式會生多個值, 比如調用一個有多個返迴值的函數.
當這樣一個函數調用齣現在元組賦值右邊的達式中時(譯註: 右邊不能再有其他達式), 左邊變量的數目必鬚和右邊一.
```Go
f, err = os.Open("foo.txt") // function call returns two values
```
通常, 這類函數會用額外的返迴值達某種錯誤類型, 例如 os.Open 是返迴一個 error 類型的錯誤, 還有一些是返迴爾值, 通常被稱ok. 在稍後我們看到的三個操作都是類似的行. 如果 字典査找(§4.3), 類型斷言(§7.10), 或 通道接收(§8.4.2) 齣現在賦值語句的右邊, 它們都將生兩個結果, 有一個額外的爾結果示操作是否成功:
通常, 這類函數會用額外的返迴值達某種錯誤類型, 例如 os.Open 是返迴一個 error 類型的錯誤, 還有一些是返迴爾值, 通常被稱ok. 在稍後我們看到的三個操作都是類似的行. 如果 字典査找(§4.3), 類型斷言(§7.10), 或 通道接收(§8.4.2) 齣現在賦值語句的右邊, 它們都將生兩個結果, 有一個額外的爾結果示操作是否成功:
```Go
v, ok = m[key] // map lookup
@@ -54,7 +54,7 @@ v, ok = x.(T) // type assertion
v, ok = <-ch // channel receive
```
和變量的聲明一樣, 我們可以用下劃空白標識符 `_` 來丟棄不需要的值.
和變量的聲明一樣, 我們可以用下劃空白標識符 `_` 來丟棄不需要的值.
```Go
_, err = io.Copy(dst, src) // 丟棄字節數

View File

@@ -1,12 +1,12 @@
### 2.4.2. 可賦值性
賦值語句是顯示的賦值形式, 但是程序中還有很多地方會送隱式的賦值行: 函數調用將隱式地將調用參數的值賦值給函數的參數變量, 一個返迴語句將隱式地將返迴操作的值賦值給結果變量, 一個復閤類型的字量(§4.2)也會生賦值行. 例如下的語句:
賦值語句是顯示的賦值形式, 但是程序中還有很多地方會送隱式的賦值行: 函數調用將隱式地將調用參數的值賦值給函數的參數變量, 一個返迴語句將隱式地將返迴操作的值賦值給結果變量, 一個複合類型的字量(§4.2)也會生賦值行. 例如下的語句:
```Go
medals := []string{"gold", "silver", "bronze"}
```
隱式地對切片的每個元素進行賦值操作, 類似這樣寫的行:
隱式地對切片的每個元素進行賦值操作, 類似這樣寫的行:
```Go
medals[0] = "gold"
@@ -14,15 +14,15 @@ medals[1] = "silver"
medals[2] = "bronze"
```
字典和管道的元素, 雖然不是普通的變量, 但是也有類似的隱式賦值行.
字典和管道的元素, 雖然不是普通的變量, 但是也有類似的隱式賦值行.
不管是隱式還是顯示地賦值, 在賦值語句坐標的變量和右邊最終的求到的值必鬚有相的數據類型. 更直白地, 隻有右邊的值對於左邊的變量是可賦值的, 賦值語句纔是允許的.
不管是隱式還是顯示地賦值, 在賦值語句坐標的變量和右邊最終的求到的值必鬚有相的數據類型. 更直白地, 隻有右邊的值對於左邊的變量是可賦值的, 賦值語句纔是允許的.
可賦值性的規則對於不類型有不要求, 對每個新類型有關的地方我們會專門解釋.
對於目前我們已經討論過的類型, 它的規則是簡單的: 類型必鬚完全匹配, nil 可以賦值給任何指或引用類型的變量. 常量(§3.6)有更靈活的規則, 這樣可以避免不必要的顯示類型轉換.
可賦值性的規則對於不類型有不要求, 對每個新類型有關的地方我們會專門解釋.
對於目前我們已經討論過的類型, 它的規則是簡單的: 類型必鬚完全匹配, nil 可以賦值給任何指或引用類型的變量. 常量(§3.6)有更靈活的規則, 這樣可以避免不必要的顯示類型轉換.
對於兩個值是否可以用 `==``!=` 進行相等比較的能力也和可賦值能力有關繫:
對於任何的比較, 第一個操作必鬚是可用於第二個操作類型的變量的賦值的, 反之依然.
和前一樣, 我們會對每個新類型比較有關的地方會做專門解釋.
和前一樣, 我們會對每個新類型比較有關的地方會做專門解釋.

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="Wed Dec 16 2015 10:54:29 GMT+0800 (中国标准时间)">
<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-summary">
@@ -146,7 +146,7 @@
<b>0.5.</b>
</a>
@@ -212,7 +212,7 @@
<b>1.3.</b>
査找重的行
査找重的行
</a>
@@ -227,7 +227,7 @@
<b>1.4.</b>
GIF動
GIF動
</a>
@@ -257,7 +257,7 @@
<b>1.6.</b>
穫取多個URL
穫取多個URL
</a>
@@ -479,7 +479,7 @@
<b>3.3.</b>
</a>
@@ -494,7 +494,7 @@
<b>3.4.</b>
爾型
爾型
</a>
@@ -544,7 +544,7 @@
<b>4.</b>
復閤數據類型
複合數據類型
</a>
@@ -857,7 +857,7 @@
<b>6.2.</b>
基於指對象的方法
基於指對象的方法
</a>
@@ -887,7 +887,7 @@
<b>6.4.</b>
方法值和方法達式
方法值和方法達式
</a>
@@ -953,7 +953,7 @@
<b>7.1.</b>
接口是
接口是
</a>
@@ -1073,7 +1073,7 @@
<b>7.9.</b>
示例: 達式求值
示例: 達式求值
</a>
@@ -1103,7 +1103,7 @@
<b>7.11.</b>
基於類型斷言識錯誤類型
基於類型斷言識錯誤類型
</a>
@@ -1214,7 +1214,7 @@
<b>8.2.</b>
示例: 併的Clock服務
示例: 併的Clock服務
</a>
@@ -1229,7 +1229,7 @@
<b>8.3.</b>
示例: 併的Echo服務
示例: 併的Echo服務
</a>
@@ -1274,7 +1274,7 @@
<b>8.6.</b>
示例: 併的Web爬蟲
示例: 併的Web爬蟲
</a>
@@ -1289,7 +1289,7 @@
<b>8.7.</b>
基於select的多路
基於select的多路
</a>
@@ -1304,7 +1304,7 @@
<b>8.8.</b>
示例: 併的字典遍歷
示例: 併的字典遍歷
</a>
@@ -1319,7 +1319,7 @@
<b>8.9.</b>
的退齣
的退齣
</a>
@@ -1354,7 +1354,7 @@
<b>9.</b>
基於共享變量的併
基於共享變量的併
</a>
@@ -1415,7 +1415,7 @@
<b>9.4.</b>
內存
內存
</a>
@@ -1460,7 +1460,7 @@
<b>9.7.</b>
示例: 併的非阻塞緩存
示例: 併的非阻塞緩存
</a>
@@ -1475,7 +1475,7 @@
<b>9.8.</b>
Goroutines和
Goroutines和
</a>
@@ -1748,7 +1748,7 @@
<b>12.1.</b>
何需要反射?
何需要反射?
</a>
@@ -1793,7 +1793,7 @@
<b>12.4.</b>
示例: 編碼S達式
示例: 編碼S達式
</a>
@@ -1823,7 +1823,7 @@
<b>12.6.</b>
示例: 解碼S達式
示例: 解碼S達式
</a>
@@ -1975,50 +1975,14 @@
</li>
<li class="chapter " data-level="14" data-path="exercise/ex.html">
<a href="../exercise/ex.html">
<i class="fa fa-check"></i>
<b>14.</b>
習題解答
</a>
<ul class="articles">
<li class="chapter " data-level="14.1" data-path="exercise/ex-ch1.html">
<a href="../exercise/ex-ch1.html">
<i class="fa fa-check"></i>
<b>14.1.</b>
第一章 入門
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="15" data-path="errata.html">
<li class="chapter " data-level="14" data-path="errata.html">
<a href="../errata.html">
<i class="fa fa-check"></i>
<b>15.</b>
<b>14.</b>
勘誤
</a>
@@ -2060,23 +2024,23 @@
<section class="normal" id="section-">
<h2 id="24-&#x8CE6;&#x503C;">2.4. &#x8CE6;&#x503C;</h2>
<p>&#x4F7F;&#x7528;&#x8CE6;&#x503C;&#x8A9E;&#x53E5;&#x53EF;&#x4EE5;&#x66F4;&#x65B0;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#x7684;&#x503C;, &#x6700;&#x7C21;&#x55AE;&#x7684;&#x8CE6;&#x503C;&#x8A9E;&#x53E5;&#x662F;&#x5C07;&#x8981;&#x88AB;&#x8CE6;&#x503C;&#x7684;&#x8B8A;&#x91CF;&#x653E;&#x5728; <code>=</code> &#x7684;&#x5DE6;&#x908A;, &#x65B0;&#x503C;&#x7684;&#x9336;&#x9054;&#x5F0F;&#x653E;&#x5728; <code>=</code> &#x53F3;&#x908A;.</p>
<p>&#x4F7F;&#x7528;&#x8CE6;&#x503C;&#x8A9E;&#x53E5;&#x53EF;&#x4EE5;&#x66F4;&#x65B0;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#x7684;&#x503C;, &#x6700;&#x7C21;&#x55AE;&#x7684;&#x8CE6;&#x503C;&#x8A9E;&#x53E5;&#x662F;&#x5C07;&#x8981;&#x88AB;&#x8CE6;&#x503C;&#x7684;&#x8B8A;&#x91CF;&#x653E;&#x5728; <code>=</code> &#x7684;&#x5DE6;&#x908A;, &#x65B0;&#x503C;&#x7684;&#x8868;&#x9054;&#x5F0F;&#x653E;&#x5728; <code>=</code> &#x53F3;&#x908A;.</p>
<pre><code class="lang-Go">x = <span class="hljs-number">1</span> <span class="hljs-comment">// &#x547D;&#x4EE4;&#x8B8A;&#x91CF;&#x7684;&#x8CE6;&#x503C;</span>
*p = <span class="hljs-constant">true</span> <span class="hljs-comment">// &#x901A;&#x904E;&#x6307;&#x937C;&#x9593;&#x63A5;&#x8CE6;&#x503C;</span>
*p = <span class="hljs-constant">true</span> <span class="hljs-comment">// &#x901A;&#x904E;&#x6307;&#x91DD;&#x9593;&#x63A5;&#x8CE6;&#x503C;</span>
person.name = <span class="hljs-string">&quot;bob&quot;</span> <span class="hljs-comment">// &#x7D50;&#x69CB;&#x9AD4;&#x5B57;&#x6BB5;&#x8CE6;&#x503C;</span>
count[x] = count[x] * scale <span class="hljs-comment">// &#x6578;&#x7D44;, &#x5207;&#x7247; &#x6216; &#x5B57;&#x5178;&#x7684; &#x5143;&#x7D20;&#x8CE6;&#x503C;</span>
</code></pre>
<p>&#x7279;&#x5B9A;&#x7684;&#x8CE6;&#x503C;&#x8A9E;&#x53E5;&#x548C;&#x4E8C;&#x5143;&#x7B97;&#x672E;&#x5FA9;&#x95A4;&#x64CD;&#x4F5C;&#x6709;&#x4E00;&#x500B;&#x7C21;&#x6F54;&#x5F62;&#x5F0F;, &#x4F8B;&#x5982;&#x4E0A;&#x9EAB;&#x6700;&#x5F8C;&#x7684;&#x8A9E;&#x53E5;&#x53EF;&#x4EE5;&#x91CD;&#x5BEB;&#x70BA;:</p>
<p>&#x7279;&#x5B9A;&#x7684;&#x8CE6;&#x503C;&#x8A9E;&#x53E5;&#x548C;&#x4E8C;&#x5143;&#x7B97;&#x8853;&#x8907;&#x5408;&#x64CD;&#x4F5C;&#x6709;&#x4E00;&#x500B;&#x7C21;&#x6F54;&#x5F62;&#x5F0F;, &#x4F8B;&#x5982;&#x4E0A;&#x9762;&#x6700;&#x5F8C;&#x7684;&#x8A9E;&#x53E5;&#x53EF;&#x4EE5;&#x91CD;&#x5BEB;&#x7232;:</p>
<pre><code class="lang-Go">count[x] *= scale
</code></pre>
<p>&#x9019;&#x6A23;&#x53EF;&#x4EE5;&#x7701;&#x53BB;&#x5C0D;&#x8B8A;&#x91CF;&#x9336;&#x9054;&#x5F0F;&#x7684;&#x91CD;&#x5FA9;&#x8A08;&#x7B97;.</p>
<p>&#x9019;&#x6A23;&#x53EF;&#x4EE5;&#x7701;&#x53BB;&#x5C0D;&#x8B8A;&#x91CF;&#x8868;&#x9054;&#x5F0F;&#x7684;&#x91CD;&#x8907;&#x8A08;&#x7B97;.</p>
<p>&#x6578;&#x503C;&#x8B8A;&#x91CF;&#x4E5F;&#x53EF;&#x4EE5;&#x652F;&#x6301; <code>++</code> &#x905E;&#x589E;&#x548C; <code>--</code> &#x905E;&#x6E1B;&#x8A9E;&#x53E5;:</p>
<pre><code class="lang-Go">v := <span class="hljs-number">1</span>
v++ <span class="hljs-comment">// &#x7B49;&#x50F9;&#x65B9;&#x5F0F; v = v + 1; v &#x8B8A;&#x6210; 2 </span>
v-- <span class="hljs-comment">// &#x7B49;&#x50F9;&#x65B9;&#x5F0F; v = v - 1; v &#x8B8A;&#x6210; 1</span>
</code></pre>
<h3 id="241-&#x5143;&#x7D44;&#x8CE6;&#x503C;">2.4.1. &#x5143;&#x7D44;&#x8CE6;&#x503C;</h3>
<p>&#x5143;&#x7D44;&#x8CE6;&#x503C;&#x662F;&#x53E6;&#x4E00;&#x7A2E;&#x5F62;&#x5F0F;&#x7684;&#x8CE6;&#x503C;&#x8A9E;&#x53E5;, &#x5141;&#x8A31;&#x8855;&#x6642;&#x66F4;&#x65B0;&#x591A;&#x500B;&#x8B8A;&#x91CF;&#x7684;&#x503C;. &#x5728;&#x8CE6;&#x503C;&#x4E4B;&#x524D;, &#x8CE6;&#x503C;&#x8A9E;&#x53E5;&#x53F3;&#x908A;&#x7684;&#x6240;&#x6709;&#x9336;&#x9054;&#x5F0F;&#x5C07;&#x6703;&#x5148;&#x9032;&#x884C;&#x6C42;&#x503C;, &#x7136;&#x5F8C;&#x518D;&#x7D71;&#x4E00;&#x66F4;&#x65B0;&#x5DE6;&#x908A;&#x8B8A;&#x91CF;&#x7684;&#x503C;. &#x9019;&#x5C0D;&#x65BC;&#x8655;&#x7406;&#x6709;&#x4E9B;&#x8855;&#x6642;&#x9F63;&#x73FE;&#x5728;&#x5143;&#x7D44;&#x8CE6;&#x503C;&#x8A9E;&#x53E5;&#x5DE6;&#x53F3;&#x5169;&#x908A;&#x7684;&#x8B8A;&#x91CF;&#x5F88;&#x6709;&#x5E6B;&#x52A9;, &#x4F8B;&#x5982;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x9019;&#x6A23;&#x4EA4;&#x63DB;&#x5169;&#x500B;&#x8B8A;&#x91CF;&#x7684;&#x503C;:</p>
<p>&#x5143;&#x7D44;&#x8CE6;&#x503C;&#x662F;&#x53E6;&#x4E00;&#x7A2E;&#x5F62;&#x5F0F;&#x7684;&#x8CE6;&#x503C;&#x8A9E;&#x53E5;, &#x5141;&#x8A31;&#x540C;&#x6642;&#x66F4;&#x65B0;&#x591A;&#x500B;&#x8B8A;&#x91CF;&#x7684;&#x503C;. &#x5728;&#x8CE6;&#x503C;&#x4E4B;&#x524D;, &#x8CE6;&#x503C;&#x8A9E;&#x53E5;&#x53F3;&#x908A;&#x7684;&#x6240;&#x6709;&#x8868;&#x9054;&#x5F0F;&#x5C07;&#x6703;&#x5148;&#x9032;&#x884C;&#x6C42;&#x503C;, &#x7136;&#x5F8C;&#x518D;&#x7D71;&#x4E00;&#x66F4;&#x65B0;&#x5DE6;&#x908A;&#x8B8A;&#x91CF;&#x7684;&#x503C;. &#x9019;&#x5C0D;&#x65BC;&#x8655;&#x7406;&#x6709;&#x4E9B;&#x540C;&#x6642;&#x9F63;&#x73FE;&#x5728;&#x5143;&#x7D44;&#x8CE6;&#x503C;&#x8A9E;&#x53E5;&#x5DE6;&#x53F3;&#x5169;&#x908A;&#x7684;&#x8B8A;&#x91CF;&#x5F88;&#x6709;&#x5E6B;&#x52A9;, &#x4F8B;&#x5982;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x9019;&#x6A23;&#x4EA4;&#x63DB;&#x5169;&#x500B;&#x8B8A;&#x91CF;&#x7684;&#x503C;:</p>
<pre><code class="lang-Go">x, y = y, x
a[i], a[j] = a[j], a[i]
@@ -2098,39 +2062,39 @@ a[i], a[j] = a[j], a[i]
<span class="hljs-keyword">return</span> x
}
</code></pre>
<p>&#x5143;&#x7D44;&#x8CE6;&#x503C;&#x4E5F;&#x53EF;&#x4EE5;&#x4F7F;&#x4E00;&#x7E6B;&#x5217;&#x7463;&#x788E;&#x8CE6;&#x503C;&#x66F4;&#x7DCA;&#x6E4A;(&#x8B6F;&#x8A3B;: &#x7279;&#x5F46;&#x662F;&#x5728;for&#x5FAA;&#x74B0;&#x7684;&#x521D;&#x59CB;&#x5316;&#x90E8;&#x5206;),</p>
<p>&#x5143;&#x7D44;&#x8CE6;&#x503C;&#x4E5F;&#x53EF;&#x4EE5;&#x4F7F;&#x4E00;&#x7E6B;&#x5217;&#x7463;&#x788E;&#x8CE6;&#x503C;&#x66F4;&#x7DCA;&#x6E4A;(&#x8B6F;&#x8A3B;: &#x7279;&#x522B;&#x662F;&#x5728;for&#x5FAA;&#x74B0;&#x7684;&#x521D;&#x59CB;&#x5316;&#x90E8;&#x5206;),</p>
<pre><code class="lang-Go">i, j, k = <span class="hljs-number">2</span>, <span class="hljs-number">3</span>, <span class="hljs-number">5</span>
</code></pre>
<p>&#x4F46;&#x5982;&#x679C;&#x9336;&#x9054;&#x5F0F;&#x592A;&#x5FA9;&#x96DC;&#x7684;&#x8A71;, &#x61C9;&#x8A72;&#x76E1;&#x91CF;&#x907F;&#x514D;&#x5143;&#x7D44;&#x8CE6;&#x503C;; &#x56E0;&#x70BA;&#x4E00;&#x500B;&#x500B;&#x55AE;&#x7368;&#x7684;&#x8CE6;&#x503C;&#x8A9E;&#x53E5;&#x7684;&#x53EF;&#x8B80;&#x6027;&#x6703;&#x66F4;&#x597D;.</p>
<p>&#x67D0;&#x4E9B;&#x9336;&#x9054;&#x5F0F;&#x6703;&#x7522;&#x751F;&#x591A;&#x500B;&#x503C;, &#x6BD4;&#x5982;&#x8ABF;&#x7528;&#x4E00;&#x500B;&#x6709;&#x591A;&#x500B;&#x8FD4;&#x8FF4;&#x503C;&#x7684;&#x51FD;&#x6578;.
&#x7576;&#x9019;&#x6A23;&#x4E00;&#x500B;&#x51FD;&#x6578;&#x8ABF;&#x7528;&#x9F63;&#x73FE;&#x5728;&#x5143;&#x7D44;&#x8CE6;&#x503C;&#x53F3;&#x908A;&#x7684;&#x9336;&#x9054;&#x5F0F;&#x4E2D;&#x6642;(&#x8B6F;&#x8A3B;: &#x53F3;&#x908A;&#x4E0D;&#x80FD;&#x518D;&#x6709;&#x5176;&#x4ED6;&#x9336;&#x9054;&#x5F0F;), &#x5DE6;&#x908A;&#x8B8A;&#x91CF;&#x7684;&#x6578;&#x76EE;&#x5FC5;&#x9B1A;&#x548C;&#x53F3;&#x908A;&#x4E00;&#x7DFB;.</p>
<p>&#x4F46;&#x5982;&#x679C;&#x8868;&#x9054;&#x5F0F;&#x592A;&#x8907;&#x96DC;&#x7684;&#x8A71;, &#x61C9;&#x8A72;&#x76E1;&#x91CF;&#x907F;&#x514D;&#x5143;&#x7D44;&#x8CE6;&#x503C;; &#x56E0;&#x7232;&#x4E00;&#x500B;&#x500B;&#x55AE;&#x7368;&#x7684;&#x8CE6;&#x503C;&#x8A9E;&#x53E5;&#x7684;&#x53EF;&#x8B80;&#x6027;&#x6703;&#x66F4;&#x597D;.</p>
<p>&#x67D0;&#x4E9B;&#x8868;&#x9054;&#x5F0F;&#x6703;&#x7523;&#x751F;&#x591A;&#x500B;&#x503C;, &#x6BD4;&#x5982;&#x8ABF;&#x7528;&#x4E00;&#x500B;&#x6709;&#x591A;&#x500B;&#x8FD4;&#x8FF4;&#x503C;&#x7684;&#x51FD;&#x6578;.
&#x7576;&#x9019;&#x6A23;&#x4E00;&#x500B;&#x51FD;&#x6578;&#x8ABF;&#x7528;&#x9F63;&#x73FE;&#x5728;&#x5143;&#x7D44;&#x8CE6;&#x503C;&#x53F3;&#x908A;&#x7684;&#x8868;&#x9054;&#x5F0F;&#x4E2D;&#x6642;(&#x8B6F;&#x8A3B;: &#x53F3;&#x908A;&#x4E0D;&#x80FD;&#x518D;&#x6709;&#x5176;&#x4ED6;&#x8868;&#x9054;&#x5F0F;), &#x5DE6;&#x908A;&#x8B8A;&#x91CF;&#x7684;&#x6578;&#x76EE;&#x5FC5;&#x9B1A;&#x548C;&#x53F3;&#x908A;&#x4E00;&#x81F4;.</p>
<pre><code class="lang-Go">f, err = os.Open(<span class="hljs-string">&quot;foo.txt&quot;</span>) <span class="hljs-comment">// function call returns two values</span>
</code></pre>
<p>&#x901A;&#x5E38;, &#x9019;&#x985E;&#x51FD;&#x6578;&#x6703;&#x7528;&#x984D;&#x5916;&#x7684;&#x8FD4;&#x8FF4;&#x503C;&#x9336;&#x9054;&#x67D0;&#x7A2E;&#x932F;&#x8AA4;&#x985E;&#x578B;, &#x4F8B;&#x5982; os.Open &#x662F;&#x8FD4;&#x8FF4;&#x4E00;&#x500B; error &#x985E;&#x578B;&#x7684;&#x932F;&#x8AA4;, &#x9084;&#x6709;&#x4E00;&#x4E9B;&#x662F;&#x8FD4;&#x8FF4;&#x4F48;&#x723E;&#x503C;, &#x901A;&#x5E38;&#x88AB;&#x7A31;&#x70BA;ok. &#x5728;&#x7A0D;&#x5F8C;&#x6211;&#x5011;&#x770B;&#x5230;&#x7684;&#x4E09;&#x500B;&#x64CD;&#x4F5C;&#x90FD;&#x662F;&#x985E;&#x4F3C;&#x7684;&#x884C;&#x70BA;. &#x5982;&#x679C; &#x5B57;&#x5178;&#x67FB;&#x627E;(&#xA7;4.3), &#x985E;&#x578B;&#x65B7;&#x8A00;(&#xA7;7.10), &#x6216; &#x901A;&#x9053;&#x63A5;&#x6536;(&#xA7;8.4.2) &#x9F63;&#x73FE;&#x5728;&#x8CE6;&#x503C;&#x8A9E;&#x53E5;&#x7684;&#x53F3;&#x908A;, &#x5B83;&#x5011;&#x90FD;&#x5C07;&#x7522;&#x751F;&#x5169;&#x500B;&#x7D50;&#x679C;, &#x6709;&#x4E00;&#x500B;&#x984D;&#x5916;&#x7684;&#x4F48;&#x723E;&#x7D50;&#x679C;&#x9336;&#x793A;&#x64CD;&#x4F5C;&#x662F;&#x5426;&#x6210;&#x529F;:</p>
<p>&#x901A;&#x5E38;, &#x9019;&#x985E;&#x51FD;&#x6578;&#x6703;&#x7528;&#x984D;&#x5916;&#x7684;&#x8FD4;&#x8FF4;&#x503C;&#x8868;&#x9054;&#x67D0;&#x7A2E;&#x932F;&#x8AA4;&#x985E;&#x578B;, &#x4F8B;&#x5982; os.Open &#x662F;&#x8FD4;&#x8FF4;&#x4E00;&#x500B; error &#x985E;&#x578B;&#x7684;&#x932F;&#x8AA4;, &#x9084;&#x6709;&#x4E00;&#x4E9B;&#x662F;&#x8FD4;&#x8FF4;&#x5E03;&#x723E;&#x503C;, &#x901A;&#x5E38;&#x88AB;&#x7A31;&#x7232;ok. &#x5728;&#x7A0D;&#x5F8C;&#x6211;&#x5011;&#x770B;&#x5230;&#x7684;&#x4E09;&#x500B;&#x64CD;&#x4F5C;&#x90FD;&#x662F;&#x985E;&#x4F3C;&#x7684;&#x884C;&#x7232;. &#x5982;&#x679C; &#x5B57;&#x5178;&#x67FB;&#x627E;(&#xA7;4.3), &#x985E;&#x578B;&#x65B7;&#x8A00;(&#xA7;7.10), &#x6216; &#x901A;&#x9053;&#x63A5;&#x6536;(&#xA7;8.4.2) &#x9F63;&#x73FE;&#x5728;&#x8CE6;&#x503C;&#x8A9E;&#x53E5;&#x7684;&#x53F3;&#x908A;, &#x5B83;&#x5011;&#x90FD;&#x5C07;&#x7523;&#x751F;&#x5169;&#x500B;&#x7D50;&#x679C;, &#x6709;&#x4E00;&#x500B;&#x984D;&#x5916;&#x7684;&#x5E03;&#x723E;&#x7D50;&#x679C;&#x8868;&#x793A;&#x64CD;&#x4F5C;&#x662F;&#x5426;&#x6210;&#x529F;:</p>
<pre><code class="lang-Go">v, ok = m[key] <span class="hljs-comment">// map lookup</span>
v, ok = x.(T) <span class="hljs-comment">// type assertion</span>
v, ok = &lt;-ch <span class="hljs-comment">// channel receive</span>
</code></pre>
<p>&#x548C;&#x8B8A;&#x91CF;&#x7684;&#x8072;&#x660E;&#x4E00;&#x6A23;, &#x6211;&#x5011;&#x53EF;&#x4EE5;&#x7528;&#x4E0B;&#x5283;&#x7DAB;&#x7A7A;&#x767D;&#x6A19;&#x8B58;&#x7B26; <code>_</code> &#x4F86;&#x4E1F;&#x68C4;&#x4E0D;&#x9700;&#x8981;&#x7684;&#x503C;.</p>
<p>&#x548C;&#x8B8A;&#x91CF;&#x7684;&#x8072;&#x660E;&#x4E00;&#x6A23;, &#x6211;&#x5011;&#x53EF;&#x4EE5;&#x7528;&#x4E0B;&#x5283;&#x7DDA;&#x7A7A;&#x767D;&#x6A19;&#x8B58;&#x7B26; <code>_</code> &#x4F86;&#x4E1F;&#x68C4;&#x4E0D;&#x9700;&#x8981;&#x7684;&#x503C;.</p>
<pre><code class="lang-Go">_, err = io.Copy(dst, src) <span class="hljs-comment">// &#x4E1F;&#x68C4;&#x5B57;&#x7BC0;&#x6578;</span>
_, ok = x.(T) <span class="hljs-comment">// &#x96BB;&#x6AA2;&#x6E2C;&#x985E;&#x578B;, &#x5FFD;&#x7565;&#x5177;&#x9AD4;&#x503C;</span>
</code></pre>
<h3 id="242-&#x53EF;&#x8CE6;&#x503C;&#x6027;">2.4.2. &#x53EF;&#x8CE6;&#x503C;&#x6027;</h3>
<p>&#x8CE6;&#x503C;&#x8A9E;&#x53E5;&#x662F;&#x986F;&#x793A;&#x7684;&#x8CE6;&#x503C;&#x5F62;&#x5F0F;, &#x4F46;&#x662F;&#x7A0B;&#x5E8F;&#x4E2D;&#x9084;&#x6709;&#x5F88;&#x591A;&#x5730;&#x65B9;&#x6703;&#x9AEE;&#x9001;&#x96B1;&#x5F0F;&#x7684;&#x8CE6;&#x503C;&#x884C;&#x70BA;: &#x51FD;&#x6578;&#x8ABF;&#x7528;&#x5C07;&#x96B1;&#x5F0F;&#x5730;&#x5C07;&#x8ABF;&#x7528;&#x53C3;&#x6578;&#x7684;&#x503C;&#x8CE6;&#x503C;&#x7D66;&#x51FD;&#x6578;&#x7684;&#x53C3;&#x6578;&#x8B8A;&#x91CF;, &#x4E00;&#x500B;&#x8FD4;&#x8FF4;&#x8A9E;&#x53E5;&#x5C07;&#x96B1;&#x5F0F;&#x5730;&#x5C07;&#x8FD4;&#x8FF4;&#x64CD;&#x4F5C;&#x7684;&#x503C;&#x8CE6;&#x503C;&#x7D66;&#x7D50;&#x679C;&#x8B8A;&#x91CF;, &#x4E00;&#x500B;&#x5FA9;&#x95A4;&#x985E;&#x578B;&#x7684;&#x5B57;&#x9EAB;&#x91CF;(&#xA7;4.2)&#x4E5F;&#x6703;&#x7522;&#x751F;&#x8CE6;&#x503C;&#x884C;&#x70BA;. &#x4F8B;&#x5982;&#x4E0B;&#x9EAB;&#x7684;&#x8A9E;&#x53E5;:</p>
<p>&#x8CE6;&#x503C;&#x8A9E;&#x53E5;&#x662F;&#x986F;&#x793A;&#x7684;&#x8CE6;&#x503C;&#x5F62;&#x5F0F;, &#x4F46;&#x662F;&#x7A0B;&#x5E8F;&#x4E2D;&#x9084;&#x6709;&#x5F88;&#x591A;&#x5730;&#x65B9;&#x6703;&#x767C;&#x9001;&#x96B1;&#x5F0F;&#x7684;&#x8CE6;&#x503C;&#x884C;&#x7232;: &#x51FD;&#x6578;&#x8ABF;&#x7528;&#x5C07;&#x96B1;&#x5F0F;&#x5730;&#x5C07;&#x8ABF;&#x7528;&#x53C3;&#x6578;&#x7684;&#x503C;&#x8CE6;&#x503C;&#x7D66;&#x51FD;&#x6578;&#x7684;&#x53C3;&#x6578;&#x8B8A;&#x91CF;, &#x4E00;&#x500B;&#x8FD4;&#x8FF4;&#x8A9E;&#x53E5;&#x5C07;&#x96B1;&#x5F0F;&#x5730;&#x5C07;&#x8FD4;&#x8FF4;&#x64CD;&#x4F5C;&#x7684;&#x503C;&#x8CE6;&#x503C;&#x7D66;&#x7D50;&#x679C;&#x8B8A;&#x91CF;, &#x4E00;&#x500B;&#x8907;&#x5408;&#x985E;&#x578B;&#x7684;&#x5B57;&#x9762;&#x91CF;(&#xA7;4.2)&#x4E5F;&#x6703;&#x7523;&#x751F;&#x8CE6;&#x503C;&#x884C;&#x7232;. &#x4F8B;&#x5982;&#x4E0B;&#x9762;&#x7684;&#x8A9E;&#x53E5;:</p>
<pre><code class="lang-Go">medals := []<span class="hljs-typename">string</span>{<span class="hljs-string">&quot;gold&quot;</span>, <span class="hljs-string">&quot;silver&quot;</span>, <span class="hljs-string">&quot;bronze&quot;</span>}
</code></pre>
<p>&#x96B1;&#x5F0F;&#x5730;&#x5C0D;&#x5207;&#x7247;&#x7684;&#x6BCF;&#x500B;&#x5143;&#x7D20;&#x9032;&#x884C;&#x8CE6;&#x503C;&#x64CD;&#x4F5C;, &#x985E;&#x4F3C;&#x9019;&#x6A23;&#x5BEB;&#x7684;&#x884C;&#x70BA;:</p>
<p>&#x96B1;&#x5F0F;&#x5730;&#x5C0D;&#x5207;&#x7247;&#x7684;&#x6BCF;&#x500B;&#x5143;&#x7D20;&#x9032;&#x884C;&#x8CE6;&#x503C;&#x64CD;&#x4F5C;, &#x985E;&#x4F3C;&#x9019;&#x6A23;&#x5BEB;&#x7684;&#x884C;&#x7232;:</p>
<pre><code class="lang-Go">medals[<span class="hljs-number">0</span>] = <span class="hljs-string">&quot;gold&quot;</span>
medals[<span class="hljs-number">1</span>] = <span class="hljs-string">&quot;silver&quot;</span>
medals[<span class="hljs-number">2</span>] = <span class="hljs-string">&quot;bronze&quot;</span>
</code></pre>
<p>&#x5B57;&#x5178;&#x548C;&#x7BA1;&#x9053;&#x7684;&#x5143;&#x7D20;, &#x96D6;&#x7136;&#x4E0D;&#x662F;&#x666E;&#x901A;&#x7684;&#x8B8A;&#x91CF;, &#x4F46;&#x662F;&#x4E5F;&#x6709;&#x985E;&#x4F3C;&#x7684;&#x96B1;&#x5F0F;&#x8CE6;&#x503C;&#x884C;&#x70BA;.</p>
<p>&#x4E0D;&#x7BA1;&#x662F;&#x96B1;&#x5F0F;&#x9084;&#x662F;&#x986F;&#x793A;&#x5730;&#x8CE6;&#x503C;, &#x5728;&#x8CE6;&#x503C;&#x8A9E;&#x53E5;&#x5750;&#x6A19;&#x7684;&#x8B8A;&#x91CF;&#x548C;&#x53F3;&#x908A;&#x6700;&#x7D42;&#x7684;&#x6C42;&#x5230;&#x7684;&#x503C;&#x5FC5;&#x9B1A;&#x6709;&#x76F8;&#x8855;&#x7684;&#x6578;&#x64DA;&#x985E;&#x578B;. &#x66F4;&#x76F4;&#x767D;&#x5730;&#x8AAA;, &#x96BB;&#x6709;&#x53F3;&#x908A;&#x7684;&#x503C;&#x5C0D;&#x65BC;&#x5DE6;&#x908A;&#x7684;&#x8B8A;&#x91CF;&#x662F;&#x53EF;&#x8CE6;&#x503C;&#x7684;, &#x8CE6;&#x503C;&#x8A9E;&#x53E5;&#x7E94;&#x662F;&#x5141;&#x8A31;&#x7684;.</p>
<p>&#x53EF;&#x8CE6;&#x503C;&#x6027;&#x7684;&#x898F;&#x5247;&#x5C0D;&#x65BC;&#x4E0D;&#x8855;&#x985E;&#x578B;&#x6709;&#x4E0D;&#x8855;&#x8981;&#x6C42;, &#x5C0D;&#x6BCF;&#x500B;&#x65B0;&#x985E;&#x578B;&#x6709;&#x95DC;&#x7684;&#x5730;&#x65B9;&#x6211;&#x5011;&#x6703;&#x5C08;&#x9580;&#x89E3;&#x91CB;.
&#x5C0D;&#x65BC;&#x76EE;&#x524D;&#x6211;&#x5011;&#x5DF2;&#x7D93;&#x8A0E;&#x8AD6;&#x904E;&#x7684;&#x985E;&#x578B;, &#x5B83;&#x7684;&#x898F;&#x5247;&#x662F;&#x7C21;&#x55AE;&#x7684;: &#x985E;&#x578B;&#x5FC5;&#x9B1A;&#x5B8C;&#x5168;&#x5339;&#x914D;, nil &#x53EF;&#x4EE5;&#x8CE6;&#x503C;&#x7D66;&#x4EFB;&#x4F55;&#x6307;&#x937C;&#x6216;&#x5F15;&#x7528;&#x985E;&#x578B;&#x7684;&#x8B8A;&#x91CF;. &#x5E38;&#x91CF;(&#xA7;3.6)&#x6709;&#x66F4;&#x9748;&#x6D3B;&#x7684;&#x898F;&#x5247;, &#x9019;&#x6A23;&#x53EF;&#x4EE5;&#x907F;&#x514D;&#x4E0D;&#x5FC5;&#x8981;&#x7684;&#x986F;&#x793A;&#x985E;&#x578B;&#x8F49;&#x63DB;.</p>
<p>&#x5B57;&#x5178;&#x548C;&#x7BA1;&#x9053;&#x7684;&#x5143;&#x7D20;, &#x96D6;&#x7136;&#x4E0D;&#x662F;&#x666E;&#x901A;&#x7684;&#x8B8A;&#x91CF;, &#x4F46;&#x662F;&#x4E5F;&#x6709;&#x985E;&#x4F3C;&#x7684;&#x96B1;&#x5F0F;&#x8CE6;&#x503C;&#x884C;&#x7232;.</p>
<p>&#x4E0D;&#x7BA1;&#x662F;&#x96B1;&#x5F0F;&#x9084;&#x662F;&#x986F;&#x793A;&#x5730;&#x8CE6;&#x503C;, &#x5728;&#x8CE6;&#x503C;&#x8A9E;&#x53E5;&#x5750;&#x6A19;&#x7684;&#x8B8A;&#x91CF;&#x548C;&#x53F3;&#x908A;&#x6700;&#x7D42;&#x7684;&#x6C42;&#x5230;&#x7684;&#x503C;&#x5FC5;&#x9B1A;&#x6709;&#x76F8;&#x540C;&#x7684;&#x6578;&#x64DA;&#x985E;&#x578B;. &#x66F4;&#x76F4;&#x767D;&#x5730;&#x8AAC;, &#x96BB;&#x6709;&#x53F3;&#x908A;&#x7684;&#x503C;&#x5C0D;&#x65BC;&#x5DE6;&#x908A;&#x7684;&#x8B8A;&#x91CF;&#x662F;&#x53EF;&#x8CE6;&#x503C;&#x7684;, &#x8CE6;&#x503C;&#x8A9E;&#x53E5;&#x7E94;&#x662F;&#x5141;&#x8A31;&#x7684;.</p>
<p>&#x53EF;&#x8CE6;&#x503C;&#x6027;&#x7684;&#x898F;&#x5247;&#x5C0D;&#x65BC;&#x4E0D;&#x540C;&#x985E;&#x578B;&#x6709;&#x4E0D;&#x540C;&#x8981;&#x6C42;, &#x5C0D;&#x6BCF;&#x500B;&#x65B0;&#x985E;&#x578B;&#x6709;&#x95DC;&#x7684;&#x5730;&#x65B9;&#x6211;&#x5011;&#x6703;&#x5C08;&#x9580;&#x89E3;&#x91CB;.
&#x5C0D;&#x65BC;&#x76EE;&#x524D;&#x6211;&#x5011;&#x5DF2;&#x7D93;&#x8A0E;&#x8AD6;&#x904E;&#x7684;&#x985E;&#x578B;, &#x5B83;&#x7684;&#x898F;&#x5247;&#x662F;&#x7C21;&#x55AE;&#x7684;: &#x985E;&#x578B;&#x5FC5;&#x9B1A;&#x5B8C;&#x5168;&#x5339;&#x914D;, nil &#x53EF;&#x4EE5;&#x8CE6;&#x503C;&#x7D66;&#x4EFB;&#x4F55;&#x6307;&#x91DD;&#x6216;&#x5F15;&#x7528;&#x985E;&#x578B;&#x7684;&#x8B8A;&#x91CF;. &#x5E38;&#x91CF;(&#xA7;3.6)&#x6709;&#x66F4;&#x9748;&#x6D3B;&#x7684;&#x898F;&#x5247;, &#x9019;&#x6A23;&#x53EF;&#x4EE5;&#x907F;&#x514D;&#x4E0D;&#x5FC5;&#x8981;&#x7684;&#x986F;&#x793A;&#x985E;&#x578B;&#x8F49;&#x63DB;.</p>
<p>&#x5C0D;&#x65BC;&#x5169;&#x500B;&#x503C;&#x662F;&#x5426;&#x53EF;&#x4EE5;&#x7528; <code>==</code> &#x6216; <code>!=</code> &#x9032;&#x884C;&#x76F8;&#x7B49;&#x6BD4;&#x8F03;&#x7684;&#x80FD;&#x529B;&#x4E5F;&#x548C;&#x53EF;&#x8CE6;&#x503C;&#x80FD;&#x529B;&#x6709;&#x95DC;&#x7E6B;:
&#x5C0D;&#x65BC;&#x4EFB;&#x4F55;&#x7684;&#x6BD4;&#x8F03;, &#x7B2C;&#x4E00;&#x500B;&#x64CD;&#x4F5C;&#x5FC5;&#x9B1A;&#x662F;&#x53EF;&#x7528;&#x65BC;&#x7B2C;&#x4E8C;&#x500B;&#x64CD;&#x4F5C;&#x985E;&#x578B;&#x7684;&#x8B8A;&#x91CF;&#x7684;&#x8CE6;&#x503C;&#x7684;, &#x53CD;&#x4E4B;&#x4F9D;&#x7136;.
&#x548C;&#x524D;&#x9EAB;&#x4E00;&#x6A23;, &#x6211;&#x5011;&#x6703;&#x5C0D;&#x6BCF;&#x500B;&#x65B0;&#x985E;&#x578B;&#x6BD4;&#x8F03;&#x6709;&#x95DC;&#x7684;&#x5730;&#x65B9;&#x6703;&#x505A;&#x5C08;&#x9580;&#x89E3;&#x91CB;.</p>
&#x548C;&#x524D;&#x9762;&#x4E00;&#x6A23;, &#x6211;&#x5011;&#x6703;&#x5C0D;&#x6BCF;&#x500B;&#x65B0;&#x985E;&#x578B;&#x6BD4;&#x8F03;&#x6709;&#x95DC;&#x7684;&#x5730;&#x65B9;&#x6703;&#x505A;&#x5C08;&#x9580;&#x89E3;&#x91CB;.</p>
</section>

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="Wed Dec 16 2015 10:54:29 GMT+0800 (中国标准时间)">
<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-summary">
@@ -146,7 +146,7 @@
<b>0.5.</b>
</a>
@@ -212,7 +212,7 @@
<b>1.3.</b>
査找重的行
査找重的行
</a>
@@ -227,7 +227,7 @@
<b>1.4.</b>
GIF動
GIF動
</a>
@@ -257,7 +257,7 @@
<b>1.6.</b>
穫取多個URL
穫取多個URL
</a>
@@ -479,7 +479,7 @@
<b>3.3.</b>
</a>
@@ -494,7 +494,7 @@
<b>3.4.</b>
爾型
爾型
</a>
@@ -544,7 +544,7 @@
<b>4.</b>
復閤數據類型
複合數據類型
</a>
@@ -857,7 +857,7 @@
<b>6.2.</b>
基於指對象的方法
基於指對象的方法
</a>
@@ -887,7 +887,7 @@
<b>6.4.</b>
方法值和方法達式
方法值和方法達式
</a>
@@ -953,7 +953,7 @@
<b>7.1.</b>
接口是
接口是
</a>
@@ -1073,7 +1073,7 @@
<b>7.9.</b>
示例: 達式求值
示例: 達式求值
</a>
@@ -1103,7 +1103,7 @@
<b>7.11.</b>
基於類型斷言識錯誤類型
基於類型斷言識錯誤類型
</a>
@@ -1214,7 +1214,7 @@
<b>8.2.</b>
示例: 併的Clock服務
示例: 併的Clock服務
</a>
@@ -1229,7 +1229,7 @@
<b>8.3.</b>
示例: 併的Echo服務
示例: 併的Echo服務
</a>
@@ -1274,7 +1274,7 @@
<b>8.6.</b>
示例: 併的Web爬蟲
示例: 併的Web爬蟲
</a>
@@ -1289,7 +1289,7 @@
<b>8.7.</b>
基於select的多路
基於select的多路
</a>
@@ -1304,7 +1304,7 @@
<b>8.8.</b>
示例: 併的字典遍歷
示例: 併的字典遍歷
</a>
@@ -1319,7 +1319,7 @@
<b>8.9.</b>
的退齣
的退齣
</a>
@@ -1354,7 +1354,7 @@
<b>9.</b>
基於共享變量的併
基於共享變量的併
</a>
@@ -1415,7 +1415,7 @@
<b>9.4.</b>
內存
內存
</a>
@@ -1460,7 +1460,7 @@
<b>9.7.</b>
示例: 併的非阻塞緩存
示例: 併的非阻塞緩存
</a>
@@ -1475,7 +1475,7 @@
<b>9.8.</b>
Goroutines和
Goroutines和
</a>
@@ -1748,7 +1748,7 @@
<b>12.1.</b>
何需要反射?
何需要反射?
</a>
@@ -1793,7 +1793,7 @@
<b>12.4.</b>
示例: 編碼S達式
示例: 編碼S達式
</a>
@@ -1823,7 +1823,7 @@
<b>12.6.</b>
示例: 解碼S達式
示例: 解碼S達式
</a>
@@ -1975,50 +1975,14 @@
</li>
<li class="chapter " data-level="14" data-path="exercise/ex.html">
<a href="../exercise/ex.html">
<i class="fa fa-check"></i>
<b>14.</b>
習題解答
</a>
<ul class="articles">
<li class="chapter " data-level="14.1" data-path="exercise/ex-ch1.html">
<a href="../exercise/ex-ch1.html">
<i class="fa fa-check"></i>
<b>14.1.</b>
第一章 入門
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="15" data-path="errata.html">
<li class="chapter " data-level="14" data-path="errata.html">
<a href="../errata.html">
<i class="fa fa-check"></i>
<b>15.</b>
<b>14.</b>
勘誤
</a>
@@ -2060,17 +2024,17 @@
<section class="normal" id="section-">
<h2 id="25-&#x985E;&#x578B;&#x8072;&#x660E;">2.5. &#x985E;&#x578B;&#x8072;&#x660E;</h2>
<p>&#x8B8A;&#x91CF;&#x6216;&#x9336;&#x9054;&#x5F0F;&#x7684;&#x985E;&#x578B;&#x5B9A;&#x7FA9;&#x4E86;&#x5C0D;&#x61C9;&#x5B58;&#x5132;&#x503C;&#x7684;&#x7279;&#x5FB5;, &#x4F8B;&#x5982;&#x6578;&#x503C;&#x7684;&#x5B58;&#x5132;&#x5927;&#x5C0F;(&#x6216;&#x8005;&#x662F;&#x5143;&#x7D20;&#x7684;bit&#x500B;&#x6578;), &#x5B83;&#x5011;&#x5728;&#x5167;&#x90E8;&#x662F;&#x5982;&#x4F55;&#x9336;&#x9054;&#x7684;, &#x662F;&#x5426;&#x652F;&#x6301;&#x4E00;&#x4E9B;&#x64CD;&#x4F5C;&#x7B26;, &#x4EE5;&#x53CA;&#x5B83;&#x5011;&#x81EA;&#x5DF1;&#x95DC;&#x806F;&#x7684;&#x65B9;&#x6CD5;&#x96C6;,</p>
<p>&#x5728;&#x4EFB;&#x4F55;&#x7A0B;&#x5E8F;&#x4E2D;&#x90FD;&#x6703;&#x6709;&#x4E00;&#x4E9B;&#x8B8A;&#x91CF;&#x6709;&#x7740;&#x76F8;&#x8855;&#x7684;&#x5167;&#x90E8;&#x5BE6;&#x73FE;, &#x4F46;&#x662F;&#x9336;&#x793A;&#x5B8C;&#x5168;&#x4E0D;&#x8855;&#x7684;&#x6982;&#x5538;.
&#x4F8B;&#x5982;, int &#x985E;&#x578B;&#x7684;&#x8B8A;&#x91CF;&#x53EF;&#x4EE5;&#x7528;&#x4F86;&#x9336;&#x793A;&#x4E00;&#x500B;&#x5FAA;&#x74B0;&#x7684;&#x8FED;&#x4EE3;&#x7D22;&#x5F15;, &#x6216;&#x8005;&#x4E00;&#x500B;&#x6642;&#x9593;&#x6233;, &#x6216;&#x8005;&#x4E00;&#x500B;&#x6587;&#x4EF6;&#x63CF;&#x8FF0;&#x7B26;, &#x6216;&#x8005;&#x4E00;&#x500B;&#x6708;&#x4EFD;; &#x4E00;&#x500B; float64 &#x985E;&#x578B;&#x7684;&#x8B8A;&#x91CF;&#x53EF;&#x4EE5;&#x7528;&#x4F86;&#x9336;&#x793A;&#x6BCF;&#x79D2;&#x5E7E;&#x7C73;&#x7684;&#x901F;&#x5EA6;, &#x6216;&#x8005;&#x662F;&#x4E0D;&#x8855;&#x6EAB;&#x5EA6;&#x55AE;&#x4F4D;&#x7684;&#x6EAB;&#x5EA6;;
&#x4E00;&#x500B;&#x5B57;&#x7B26;&#x4E32;&#x53EF;&#x4EE5;&#x7528;&#x4F86;&#x9336;&#x793A;&#x4E00;&#x500B;&#x5BC6;&#x78BC;&#x6216;&#x8005;&#x4E00;&#x500B;&#x9854;&#x8272;&#x7684;&#x540D;&#x7A31;.</p>
<p>&#x4E00;&#x500B;&#x985E;&#x578B;&#x7684;&#x8072;&#x660E;&#x5275;&#x5EFA;&#x4E86;&#x4E00;&#x500B;&#x65B0;&#x7684;&#x985E;&#x578B;&#x540D;&#x7A31;, &#x548C;&#x73FE;&#x6709;&#x985E;&#x578B;&#x5177;&#x6709;&#x76F8;&#x8855;&#x7684;&#x5E95;&#x5C64;&#x7D50;&#x69CB;.
&#x65B0;&#x547D;&#x540D;&#x7684;&#x985E;&#x578B;&#x63D0;&#x4F9B;&#x4E86;&#x4E00;&#x500B;&#x65B9;&#x6CD5;, &#x7528;&#x4F86;&#x5206;&#x9694;&#x4E0D;&#x8855;&#x6982;&#x5538;&#x7684;&#x985E;&#x578B;, &#x537D;&#x4F7F;&#x5B83;&#x5011;&#x5E95;&#x5C64;&#x985E;&#x578B;&#x76F8;&#x8855;&#x4E5F;&#x662F;&#x4E0D;&#x517C;&#x5BB9;&#x7684;.</p>
<p>&#x8B8A;&#x91CF;&#x6216;&#x8868;&#x9054;&#x5F0F;&#x7684;&#x985E;&#x578B;&#x5B9A;&#x7FA9;&#x4E86;&#x5C0D;&#x61C9;&#x5B58;&#x5132;&#x503C;&#x7684;&#x7279;&#x5FB5;, &#x4F8B;&#x5982;&#x6578;&#x503C;&#x7684;&#x5B58;&#x5132;&#x5927;&#x5C0F;(&#x6216;&#x8005;&#x662F;&#x5143;&#x7D20;&#x7684;bit&#x500B;&#x6578;), &#x5B83;&#x5011;&#x5728;&#x5167;&#x90E8;&#x662F;&#x5982;&#x4F55;&#x8868;&#x9054;&#x7684;, &#x662F;&#x5426;&#x652F;&#x6301;&#x4E00;&#x4E9B;&#x64CD;&#x4F5C;&#x7B26;, &#x4EE5;&#x53CA;&#x5B83;&#x5011;&#x81EA;&#x5DF1;&#x95DC;&#x806F;&#x7684;&#x65B9;&#x6CD5;&#x96C6;,</p>
<p>&#x5728;&#x4EFB;&#x4F55;&#x7A0B;&#x5E8F;&#x4E2D;&#x90FD;&#x6703;&#x6709;&#x4E00;&#x4E9B;&#x8B8A;&#x91CF;&#x6709;&#x7740;&#x76F8;&#x540C;&#x7684;&#x5167;&#x90E8;&#x5BE6;&#x73FE;, &#x4F46;&#x662F;&#x8868;&#x793A;&#x5B8C;&#x5168;&#x4E0D;&#x540C;&#x7684;&#x6982;&#x5FF5;.
&#x4F8B;&#x5982;, int &#x985E;&#x578B;&#x7684;&#x8B8A;&#x91CF;&#x53EF;&#x4EE5;&#x7528;&#x4F86;&#x8868;&#x793A;&#x4E00;&#x500B;&#x5FAA;&#x74B0;&#x7684;&#x8FED;&#x4EE3;&#x7D22;&#x5F15;, &#x6216;&#x8005;&#x4E00;&#x500B;&#x6642;&#x9593;&#x6233;, &#x6216;&#x8005;&#x4E00;&#x500B;&#x6587;&#x4EF6;&#x63CF;&#x8FF0;&#x7B26;, &#x6216;&#x8005;&#x4E00;&#x500B;&#x6708;&#x4EFD;; &#x4E00;&#x500B; float64 &#x985E;&#x578B;&#x7684;&#x8B8A;&#x91CF;&#x53EF;&#x4EE5;&#x7528;&#x4F86;&#x8868;&#x793A;&#x6BCF;&#x79D2;&#x5E7E;&#x7C73;&#x7684;&#x901F;&#x5EA6;, &#x6216;&#x8005;&#x662F;&#x4E0D;&#x540C;&#x6EAB;&#x5EA6;&#x55AE;&#x4F4D;&#x7684;&#x6EAB;&#x5EA6;;
&#x4E00;&#x500B;&#x5B57;&#x7B26;&#x4E32;&#x53EF;&#x4EE5;&#x7528;&#x4F86;&#x8868;&#x793A;&#x4E00;&#x500B;&#x5BC6;&#x78BC;&#x6216;&#x8005;&#x4E00;&#x500B;&#x9854;&#x8272;&#x7684;&#x540D;&#x7A31;.</p>
<p>&#x4E00;&#x500B;&#x985E;&#x578B;&#x7684;&#x8072;&#x660E;&#x5275;&#x5EFA;&#x4E86;&#x4E00;&#x500B;&#x65B0;&#x7684;&#x985E;&#x578B;&#x540D;&#x7A31;, &#x548C;&#x73FE;&#x6709;&#x985E;&#x578B;&#x5177;&#x6709;&#x76F8;&#x540C;&#x7684;&#x5E95;&#x5C64;&#x7D50;&#x69CB;.
&#x65B0;&#x547D;&#x540D;&#x7684;&#x985E;&#x578B;&#x63D0;&#x4F9B;&#x4E86;&#x4E00;&#x500B;&#x65B9;&#x6CD5;, &#x7528;&#x4F86;&#x5206;&#x9694;&#x4E0D;&#x540C;&#x6982;&#x5FF5;&#x7684;&#x985E;&#x578B;, &#x537D;&#x4F7F;&#x5B83;&#x5011;&#x5E95;&#x5C64;&#x985E;&#x578B;&#x76F8;&#x540C;&#x4E5F;&#x662F;&#x4E0D;&#x517C;&#x5BB9;&#x7684;.</p>
<pre><code class="lang-Go"><span class="hljs-keyword">type</span> name underlying-<span class="hljs-keyword">type</span>
</code></pre>
<p>&#x985E;&#x578B;&#x7684;&#x8072;&#x660E;&#x4E00;&#x822C;&#x9F63;&#x73FE;&#x5728;&#x5305;&#x7D1A;&#x5F46;, &#x56E0;&#x6B64;&#x5982;&#x679C;&#x65B0;&#x5275;&#x5EFA;&#x7684;&#x985E;&#x578B;&#x540D;&#x5B57;&#x540D;&#x5B57;&#x7684;&#x9996;&#x5B57;&#x7B26;&#x5927;&#x5BEB;, &#x5247;&#x5728;&#x5916;&#x90E8;&#x5305;&#x4E5F;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;.</p>
<p>&#x70BA;&#x4E86;&#x8AAA;&#x660E;&#x985E;&#x578B;&#x8072;&#x660E;, &#x6211;&#x5011;&#x5C07;&#x4E0D;&#x8855;&#x6EAB;&#x5EA6;&#x55AE;&#x4F4D;&#x5206;&#x5F46;&#x5B9A;&#x7FA9;&#x70BA;&#x4E0D;&#x8855;&#x7684;&#x985E;&#x578B;:</p>
<p>&#x70BA;&#x4E86;&#x8AAA;&#x660E;&#x985E;&#x578B;&#x8072;&#x660E;,&#x8B93;&#x6211;&#x5011;&#x628A;&#x4E0D;&#x8855;&#x6EAB;&#x5EA6;&#x7BC4;&#x570D;&#x5206;&#x70BA;&#x4E0D;&#x8855;&#x7684;&#x985E;&#x578B;:</p>
<p>&#x985E;&#x578B;&#x7684;&#x8072;&#x660E;&#x4E00;&#x822C;&#x9F63;&#x73FE;&#x5728;&#x5305;&#x7D1A;&#x522B;, &#x56E0;&#x6B64;&#x5982;&#x679C;&#x65B0;&#x5275;&#x5EFA;&#x7684;&#x985E;&#x578B;&#x540D;&#x5B57;&#x540D;&#x5B57;&#x7684;&#x9996;&#x5B57;&#x7B26;&#x5927;&#x5BEB;, &#x5247;&#x5728;&#x5916;&#x90E8;&#x5305;&#x4E5F;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;.</p>
<p>&#x7232;&#x4E86;&#x8AAC;&#x660E;&#x985E;&#x578B;&#x8072;&#x660E;, &#x6211;&#x5011;&#x5C07;&#x4E0D;&#x540C;&#x6EAB;&#x5EA6;&#x55AE;&#x4F4D;&#x5206;&#x522B;&#x5B9A;&#x7FA9;&#x7232;&#x4E0D;&#x540C;&#x7684;&#x985E;&#x578B;:</p>
<p>&#x7232;&#x4E86;&#x8AAC;&#x660E;&#x985E;&#x578B;&#x8072;&#x660E;,&#x8B93;&#x6211;&#x5011;&#x628A;&#x4E0D;&#x540C;&#x6EAB;&#x5EA6;&#x8303;&#x570D;&#x5206;&#x7232;&#x4E0D;&#x540C;&#x7684;&#x985E;&#x578B;:</p>
<pre><code class="lang-Go">gopl.io/ch2/tempconv0
<span class="hljs-comment">// Package tempconv performs Celsius and Fahrenheit temperature computations.</span>
<span class="hljs-keyword">package</span> tempconv
@@ -2090,20 +2054,20 @@
<span class="hljs-keyword">func</span> FToC(f Fahrenheit) Celsius { <span class="hljs-keyword">return</span> Celsius((f - <span class="hljs-number">32</span>) * <span class="hljs-number">5</span> / <span class="hljs-number">9</span>) }
</code></pre>
<p>&#x9019;&#x500B;&#x5305;&#x5B9A;&#x7FA9;&#x4E86;&#x5169;&#x7A2E;&#x985E;&#x578B;, Celsius &#x548C; Fahrenheit &#x5206;&#x5F46;&#x5C0D;&#x61C9;&#x4E0D;&#x8855;&#x7684;&#x6EAB;&#x5EA6;&#x55AE;&#x4F4D;. &#x5B83;&#x5011;&#x90FD;&#x6709;&#x7740;&#x76F8;&#x8855;&#x7684;&#x5E95;&#x5C64;&#x985E;&#x578B; float64, &#x4F46;&#x662F;&#x5B83;&#x5011;&#x662F;&#x4E0D;&#x8855;&#x7684;&#x6578;&#x64DA;&#x985E;&#x578B;, &#x56E0;&#x6B64;&#x5B83;&#x5011;&#x4E0D;&#x53EF;&#x4EE5;&#x88AB;&#x76F8;&#x4E92;&#x6BD4;&#x8F03;&#x6216;&#x6DF7;&#x5728;&#x4E00;&#x500B;&#x9336;&#x9054;&#x5F0F;&#x8A08;&#x7B97;. &#x53EF;&#x4EE5;&#x5340;&#x5206;&#x985E;&#x578B;, &#x53EF;&#x4EE5;&#x907F;&#x514D;&#x4E00;&#x4E9B;&#x50CF;&#x7121;&#x610F;&#x4E2D;&#x7D50;&#x95A4;&#x55AE;&#x4F4D;&#x7684;&#x6EAB;&#x5EA6;&#x9032;&#x884C;&#x8A08;&#x7B97;&#x7684;&#x932F;&#x8AA4;; &#x56E0;&#x70BA;&#x9700;&#x8981;&#x4E00;&#x500B;&#x985E;&#x4F3C; Celsius(t) &#x6216; Fahrenheit(t) &#x986F;&#x5F0F;&#x7684;&#x8F49;&#x578B;&#x64CD;&#x4F5C;&#x7E94;&#x80FD;&#x5C07; float64 &#x8F49;&#x70BA;&#x5C0D;&#x61C9;&#x7684;&#x985E;&#x578B;. Celsius(t) &#x548C; Fahrenheit(t) &#x662F;&#x985E;&#x578B;&#x8F49;&#x63DB;&#x64CD;&#x4F5C;, &#x4F75;&#x4E0D;&#x662F;&#x51FD;&#x6578;&#x8ABF;&#x7528;. &#x985E;&#x578B;&#x8F49;&#x63DB;&#x4E0D;&#x6703;&#x6539;&#x8B8A;&#x503C;&#x672C;&#x8EAB;, &#x4F46;&#x662F;&#x6703;&#x4F7F;&#x5B83;&#x5011;&#x7684;&#x8A9E;&#x7FA9;&#x9AEE;&#x751F;&#x8B8A;&#x5316;. &#x53E6;&#x4E00;&#x65B9;&#x9EAB;, &#x51FD;&#x6578; CToF &#x548C; FToC &#x5247;&#x662F;&#x5C0D;&#x5169;&#x500B;&#x4E0D;&#x8855;&#x7684;&#x6EAB;&#x5EA6;&#x55AE;&#x4F4D;&#x9032;&#x884C;&#x8F49;&#x63DB;, &#x5B83;&#x5011;&#x6703;&#x8FD4;&#x8FF4;&#x4E0D;&#x8855;&#x7684;&#x503C;.</p>
<p>&#x5C0D;&#x65BC;&#x6BCF;&#x4E00;&#x500B;&#x985E;&#x578B; T, &#x90FD;&#x6709;&#x4E00;&#x500B;&#x5C0D;&#x61C9;&#x7684;&#x985E;&#x578B;&#x8F49;&#x63DB;&#x64CD;&#x4F5C; T(x), &#x7528;&#x65BC;&#x5C07; x &#x8F49;&#x70BA; T &#x985E;&#x578B;.
&#x96BB;&#x6709;&#x7576;&#x5169;&#x500B;&#x985E;&#x578B;&#x7684;&#x5E95;&#x5C64;&#x57FA;&#x790E;&#x985E;&#x578B;&#x76F8;&#x8855;&#x6642;, &#x7E94;&#x5141;&#x8A31;&#x9019;&#x7A2E;&#x8F49;&#x578B;&#x64CD;&#x4F5C;, &#x6216;&#x8005;&#x662F;&#x5169;&#x8005;&#x90FD;&#x662F;&#x6307;&#x66CF;&#x76F8;&#x8855;&#x5E95;&#x5C64;&#x7D50;&#x69CB;&#x7684;&#x6307;&#x937C;&#x985E;&#x578B;,
&#x9019;&#x4E9B;&#x8F49;&#x63DB;&#x96BB;&#x6539;&#x8B8A;&#x985E;&#x578B;&#x800C;&#x4E0D;&#x6703;&#x5F71;&#x97FF;&#x503C;&#x672C;&#x8EAB;. &#x5982;&#x679C;x&#x662F;&#x53EF;&#x4EE5;&#x8CE6;&#x503C;&#x7D66;T&#x985E;&#x578B;&#x7684;, &#x90A3;&#x9EBC;x&#x5FC5;&#x7136;&#x53EF;&#x4EE5;&#x88AB;&#x8F49;&#x70BA;T&#x985E;&#x578B;, &#x4F46;&#x662F;&#x4E00;&#x822C;&#x6C92;&#x6709;&#x5FC5;&#x8981;.</p>
<p>&#x6578;&#x503C;&#x985E;&#x578B;&#x4E4B;&#x9593;&#x7684;&#x8F49;&#x578B;&#x4E5F;&#x662F;&#x5141;&#x8A31;&#x7684;, &#x4F75;&#x4E14;&#x5728;&#x5B57;&#x7B26;&#x4E32;&#x548C;&#x4E00;&#x4E9B;&#x7279;&#x5B9A;&#x5207;&#x7247;&#x4E4B;&#x9593;&#x4E5F;&#x662F;&#x53EF;&#x4EE5;&#x8F49;&#x63DB;&#x7684;, &#x5728;&#x4E0B;&#x4E00;&#x7AE0;&#x6211;&#x5011;&#x6703;&#x770B;&#x5230;&#x9019;&#x6A23;&#x7684;&#x4F8B;&#x5B50;. &#x9019;&#x985E;&#x8F49;&#x63DB;&#x53EF;&#x80FD;&#x6539;&#x8B8A;&#x503C;&#x7684;&#x9336;&#x73FE;. &#x4F8B;&#x5982;, &#x5C07;&#x4E00;&#x500B;&#x6D6E;&#x9EDE;&#x6578;&#x8F49;&#x70BA;&#x6574;&#x6578;&#x5C07;&#x4E1F;&#x68C4;&#x5C0F;&#x6578;&#x90E8;&#x5206;, &#x5C07;&#x4E00;&#x500B;&#x5B57;&#x7B26;&#x4E32;&#x8F49;&#x70BA; []byte &#x5207;&#x7247;&#x5C07;&#x62F7;&#x8C9D;&#x4E00;&#x500B;&#x5B57;&#x7B26;&#x4E32;&#x6578;&#x64DA;&#x7684;&#x526F;&#x672C;. &#x5728;&#x4EFB;&#x4F55;&#x60C5;&#x6CC1;&#x4E0B;, &#x904B;&#x884C;&#x6642;&#x4E0D;&#x6703;&#x9AEE;&#x9001;&#x8F49;&#x63DB;&#x5931;&#x6557;&#x7684;&#x932F;&#x8AA4;(&#x8B6F;&#x8A3B;: &#x932F;&#x8AA4;&#x96BB;&#x6703;&#x9AEE;&#x751F;&#x5728;&#x7DE8;&#x8B6F;&#x968E;&#x6BB5;).</p>
<p>&#x5E95;&#x5C64;&#x6578;&#x64DA;&#x985E;&#x578B;&#x6C7A;&#x5B9A;&#x4E86;&#x5167;&#x90E8;&#x7D50;&#x69CB;&#x548C;&#x9336;&#x9054;&#x65B9;&#x5F0F;, &#x4E5F;&#x5305;&#x6C7A;&#x5B9A;&#x662F;&#x5426;&#x53EF;&#x4EE5;&#x50CF;&#x5E95;&#x5C64;&#x985E;&#x578B;&#x4E00;&#x6A23;&#x5C0D;&#x5167;&#x7F6E;&#x904B;&#x7B97;&#x7B26;&#x7684;&#x652F;&#x6301;.
&#x9019;&#x610F;&#x5473;&#x7740;, Celsius &#x548C; Fahrenheit &#x985E;&#x578B;&#x7684;&#x7B97;&#x672E;&#x884C;&#x70BA;&#x548C;&#x5E95;&#x5C64;&#x7684; float64 &#x985E;&#x578B;&#x4E00;&#x6A23;, &#x6B63;&#x5982;&#x4F60;&#x6240;&#x671F;&#x671B;&#x7684;.</p>
<p>&#x9019;&#x500B;&#x5305;&#x5B9A;&#x7FA9;&#x4E86;&#x5169;&#x7A2E;&#x985E;&#x578B;, Celsius &#x548C; Fahrenheit &#x5206;&#x522B;&#x5C0D;&#x61C9;&#x4E0D;&#x540C;&#x7684;&#x6EAB;&#x5EA6;&#x55AE;&#x4F4D;. &#x5B83;&#x5011;&#x90FD;&#x6709;&#x7740;&#x76F8;&#x540C;&#x7684;&#x5E95;&#x5C64;&#x985E;&#x578B; float64, &#x4F46;&#x662F;&#x5B83;&#x5011;&#x662F;&#x4E0D;&#x540C;&#x7684;&#x6578;&#x64DA;&#x985E;&#x578B;, &#x56E0;&#x6B64;&#x5B83;&#x5011;&#x4E0D;&#x53EF;&#x4EE5;&#x88AB;&#x76F8;&#x4E92;&#x6BD4;&#x8F03;&#x6216;&#x6DF7;&#x5728;&#x4E00;&#x500B;&#x8868;&#x9054;&#x5F0F;&#x8A08;&#x7B97;. &#x53EF;&#x4EE5;&#x5340;&#x5206;&#x985E;&#x578B;, &#x53EF;&#x4EE5;&#x907F;&#x514D;&#x4E00;&#x4E9B;&#x50CF;&#x7121;&#x610F;&#x4E2D;&#x7D50;&#x5408;&#x55AE;&#x4F4D;&#x7684;&#x6EAB;&#x5EA6;&#x9032;&#x884C;&#x8A08;&#x7B97;&#x7684;&#x932F;&#x8AA4;; &#x56E0;&#x7232;&#x9700;&#x8981;&#x4E00;&#x500B;&#x985E;&#x4F3C; Celsius(t) &#x6216; Fahrenheit(t) &#x986F;&#x5F0F;&#x7684;&#x8F49;&#x578B;&#x64CD;&#x4F5C;&#x7E94;&#x80FD;&#x5C07; float64 &#x8F49;&#x7232;&#x5C0D;&#x61C9;&#x7684;&#x985E;&#x578B;. Celsius(t) &#x548C; Fahrenheit(t) &#x662F;&#x985E;&#x578B;&#x8F49;&#x63DB;&#x64CD;&#x4F5C;, &#x4F75;&#x4E0D;&#x662F;&#x51FD;&#x6578;&#x8ABF;&#x7528;. &#x985E;&#x578B;&#x8F49;&#x63DB;&#x4E0D;&#x6703;&#x6539;&#x8B8A;&#x503C;&#x672C;&#x8EAB;, &#x4F46;&#x662F;&#x6703;&#x4F7F;&#x5B83;&#x5011;&#x7684;&#x8A9E;&#x7FA9;&#x767C;&#x751F;&#x8B8A;&#x5316;. &#x53E6;&#x4E00;&#x65B9;&#x9762;, &#x51FD;&#x6578; CToF &#x548C; FToC &#x5247;&#x662F;&#x5C0D;&#x5169;&#x500B;&#x4E0D;&#x540C;&#x7684;&#x6EAB;&#x5EA6;&#x55AE;&#x4F4D;&#x9032;&#x884C;&#x8F49;&#x63DB;, &#x5B83;&#x5011;&#x6703;&#x8FD4;&#x8FF4;&#x4E0D;&#x540C;&#x7684;&#x503C;.</p>
<p>&#x5C0D;&#x65BC;&#x6BCF;&#x4E00;&#x500B;&#x985E;&#x578B; T, &#x90FD;&#x6709;&#x4E00;&#x500B;&#x5C0D;&#x61C9;&#x7684;&#x985E;&#x578B;&#x8F49;&#x63DB;&#x64CD;&#x4F5C; T(x), &#x7528;&#x65BC;&#x5C07; x &#x8F49;&#x7232; T &#x985E;&#x578B;.
&#x96BB;&#x6709;&#x7576;&#x5169;&#x500B;&#x985E;&#x578B;&#x7684;&#x5E95;&#x5C64;&#x57FA;&#x790E;&#x985E;&#x578B;&#x76F8;&#x540C;&#x6642;, &#x7E94;&#x5141;&#x8A31;&#x9019;&#x7A2E;&#x8F49;&#x578B;&#x64CD;&#x4F5C;, &#x6216;&#x8005;&#x662F;&#x5169;&#x8005;&#x90FD;&#x662F;&#x6307;&#x5411;&#x76F8;&#x540C;&#x5E95;&#x5C64;&#x7D50;&#x69CB;&#x7684;&#x6307;&#x91DD;&#x985E;&#x578B;,
&#x9019;&#x4E9B;&#x8F49;&#x63DB;&#x96BB;&#x6539;&#x8B8A;&#x985E;&#x578B;&#x800C;&#x4E0D;&#x6703;&#x5F71;&#x97FF;&#x503C;&#x672C;&#x8EAB;. &#x5982;&#x679C;x&#x662F;&#x53EF;&#x4EE5;&#x8CE6;&#x503C;&#x7D66;T&#x985E;&#x578B;&#x7684;, &#x90A3;&#x9EBD;x&#x5FC5;&#x7136;&#x53EF;&#x4EE5;&#x88AB;&#x8F49;&#x7232;T&#x985E;&#x578B;, &#x4F46;&#x662F;&#x4E00;&#x822C;&#x6C92;&#x6709;&#x5FC5;&#x8981;.</p>
<p>&#x6578;&#x503C;&#x985E;&#x578B;&#x4E4B;&#x9593;&#x7684;&#x8F49;&#x578B;&#x4E5F;&#x662F;&#x5141;&#x8A31;&#x7684;, &#x4F75;&#x4E14;&#x5728;&#x5B57;&#x7B26;&#x4E32;&#x548C;&#x4E00;&#x4E9B;&#x7279;&#x5B9A;&#x5207;&#x7247;&#x4E4B;&#x9593;&#x4E5F;&#x662F;&#x53EF;&#x4EE5;&#x8F49;&#x63DB;&#x7684;, &#x5728;&#x4E0B;&#x4E00;&#x7AE0;&#x6211;&#x5011;&#x6703;&#x770B;&#x5230;&#x9019;&#x6A23;&#x7684;&#x4F8B;&#x5B50;. &#x9019;&#x985E;&#x8F49;&#x63DB;&#x53EF;&#x80FD;&#x6539;&#x8B8A;&#x503C;&#x7684;&#x8868;&#x73FE;. &#x4F8B;&#x5982;, &#x5C07;&#x4E00;&#x500B;&#x6D6E;&#x9EDE;&#x6578;&#x8F49;&#x7232;&#x6574;&#x6578;&#x5C07;&#x4E1F;&#x68C4;&#x5C0F;&#x6578;&#x90E8;&#x5206;, &#x5C07;&#x4E00;&#x500B;&#x5B57;&#x7B26;&#x4E32;&#x8F49;&#x7232; []byte &#x5207;&#x7247;&#x5C07;&#x62F7;&#x8C9D;&#x4E00;&#x500B;&#x5B57;&#x7B26;&#x4E32;&#x6578;&#x64DA;&#x7684;&#x526F;&#x672C;. &#x5728;&#x4EFB;&#x4F55;&#x60C5;&#x6CC1;&#x4E0B;, &#x904B;&#x884C;&#x6642;&#x4E0D;&#x6703;&#x767C;&#x9001;&#x8F49;&#x63DB;&#x5931;&#x6557;&#x7684;&#x932F;&#x8AA4;(&#x8B6F;&#x8A3B;: &#x932F;&#x8AA4;&#x96BB;&#x6703;&#x767C;&#x751F;&#x5728;&#x7DE8;&#x8B6F;&#x968E;&#x6BB5;).</p>
<p>&#x5E95;&#x5C64;&#x6578;&#x64DA;&#x985E;&#x578B;&#x6C7A;&#x5B9A;&#x4E86;&#x5167;&#x90E8;&#x7D50;&#x69CB;&#x548C;&#x8868;&#x9054;&#x65B9;&#x5F0F;, &#x4E5F;&#x5305;&#x6C7A;&#x5B9A;&#x662F;&#x5426;&#x53EF;&#x4EE5;&#x50CF;&#x5E95;&#x5C64;&#x985E;&#x578B;&#x4E00;&#x6A23;&#x5C0D;&#x5167;&#x7F6E;&#x904B;&#x7B97;&#x7B26;&#x7684;&#x652F;&#x6301;.
&#x9019;&#x610F;&#x5473;&#x7740;, Celsius &#x548C; Fahrenheit &#x985E;&#x578B;&#x7684;&#x7B97;&#x8853;&#x884C;&#x7232;&#x548C;&#x5E95;&#x5C64;&#x7684; float64 &#x985E;&#x578B;&#x4E00;&#x6A23;, &#x6B63;&#x5982;&#x4F60;&#x6240;&#x671F;&#x671B;&#x7684;.</p>
<pre><code class="lang-Go">fmt.Printf(<span class="hljs-string">&quot;%g\n&quot;</span>, BoilingC-FreezingC) <span class="hljs-comment">// &quot;100&quot; &#xB0;C</span>
boilingF := CToF(BoilingC)
fmt.Printf(<span class="hljs-string">&quot;%g\n&quot;</span>, boilingF-CToF(FreezingC)) <span class="hljs-comment">// &quot;180&quot; &#xB0;F</span>
fmt.Printf(<span class="hljs-string">&quot;%g\n&quot;</span>, boilingF-FreezingC) <span class="hljs-comment">// compile error: type mismatch</span>
</code></pre>
<p>&#x6BD4;&#x8F03;&#x904B;&#x7B97;&#x7B26; <code>==</code> &#x548C; <code>&lt;</code> &#x4E5F;&#x53EF;&#x4EE5;&#x7528;&#x4F86;&#x6BD4;&#x8F03;&#x4E00;&#x500B;&#x547D;&#x540D;&#x985E;&#x578B;&#x7684;&#x8B8A;&#x91CF;&#x548C;&#x53E6;&#x4E00;&#x500B;&#x6709;&#x76F8;&#x8855;&#x985E;&#x578B;&#x7684;&#x8B8A;&#x91CF;&#x6216;&#x76F8;&#x8855;&#x7684;&#x5E95;&#x5C64;&#x985E;&#x578B;&#x7684;&#x503C;&#x505A;&#x6BD4;&#x8F03;.
&#x4F46;&#x662F;&#x5982;&#x679C;&#x5169;&#x500B;&#x503C;&#x6709;&#x7740;&#x4E0D;&#x8855;&#x7684;&#x985E;&#x578B;, &#x5247;&#x4E0D;&#x80FD;&#x76F4;&#x63A5;&#x9032;&#x884C;&#x6BD4;&#x8F03;:</p>
<p>&#x6BD4;&#x8F03;&#x904B;&#x7B97;&#x7B26; <code>==</code> &#x548C; <code>&lt;</code> &#x4E5F;&#x53EF;&#x4EE5;&#x7528;&#x4F86;&#x6BD4;&#x8F03;&#x4E00;&#x500B;&#x547D;&#x540D;&#x985E;&#x578B;&#x7684;&#x8B8A;&#x91CF;&#x548C;&#x53E6;&#x4E00;&#x500B;&#x6709;&#x76F8;&#x540C;&#x985E;&#x578B;&#x7684;&#x8B8A;&#x91CF;&#x6216;&#x76F8;&#x540C;&#x7684;&#x5E95;&#x5C64;&#x985E;&#x578B;&#x7684;&#x503C;&#x505A;&#x6BD4;&#x8F03;.
&#x4F46;&#x662F;&#x5982;&#x679C;&#x5169;&#x500B;&#x503C;&#x6709;&#x7740;&#x4E0D;&#x540C;&#x7684;&#x985E;&#x578B;, &#x5247;&#x4E0D;&#x80FD;&#x76F4;&#x63A5;&#x9032;&#x884C;&#x6BD4;&#x8F03;:</p>
<pre><code class="lang-Go"><span class="hljs-keyword">var</span> c Celsius
<span class="hljs-keyword">var</span> f Fahrenheit
fmt.Println(c == <span class="hljs-number">0</span>) <span class="hljs-comment">// &quot;true&quot;</span>
@@ -2111,13 +2075,13 @@ fmt.Println(f &gt;= <span class="hljs-number">0</span>) <span class="hl
fmt.Println(c == f) <span class="hljs-comment">// compile error: type mismatch</span>
fmt.Println(c == Celsius(f)) <span class="hljs-comment">// &quot;true&quot;!</span>
</code></pre>
<p>&#x8A3B;&#x610F;&#x6700;&#x5F8C;&#x90A3;&#x500B;&#x8A9E;&#x53E5;. &#x76E1;&#x7BA1;&#x770B;&#x8D77;&#x4F86;&#x60F3;&#x51FD;&#x6578;&#x8ABF;&#x7528;, &#x4F46;&#x662F;Celsius(f)&#x985E;&#x578B;&#x8F49;&#x63DB;, &#x4F75;&#x4E0D;&#x6703;&#x6539;&#x8B8A;&#x503C;, &#x5B83;&#x50C5;&#x50C5;&#x662F;&#x6539;&#x8B8A;&#x503C;&#x7684;&#x985E;&#x578B;&#x800C;&#x5DF2;. &#x6E2C;&#x8A66;&#x70BA;&#x771E;&#x7684;&#x539F;&#x56E0;&#x662F;&#x56E0;&#x70BA; c &#x548C; g &#x90FD;&#x662F;&#x96F6;&#x503C;.</p>
<p>&#x4E00;&#x500B;&#x547D;&#x540D;&#x7684;&#x985E;&#x578B;&#x53EF;&#x4EE5;&#x63D0;&#x4F9B;&#x7B26;&#x865F;&#x65B9;&#x4FBF;, &#x7279;&#x5F46;&#x662F;&#x53EF;&#x4EE5;&#x907F;&#x514D;&#x4E00;&#x904D;&#x53C8;&#x4E00;&#x904D;&#x5730;&#x66F8;&#x5BEB;&#x5FA9;&#x96DC;&#x985E;&#x578B;(&#x8B6F;&#x8A3B;: &#x4F8B;&#x5982;&#x7528;&#x533F;&#x540D;&#x7684;&#x7D50;&#x69CB;&#x9AD4;&#x5B9A;&#x7FA9;&#x8B8A;&#x91CF;). &#x96D6;&#x7136;&#x5C0D;&#x65BC;&#x50CF;float64&#x9019;&#x7A2E;&#x7C21;&#x55AE;&#x7684;&#x5E95;&#x5C64;&#x985E;&#x578B;&#x6C92;&#x6709;&#x7C21;&#x6F54;&#x5F88;&#x591A;, &#x4F46;&#x662F;&#x5982;&#x679C;&#x662F;&#x5FA9;&#x96DC;&#x7684;&#x985E;&#x578B;&#x5C07;&#x6703;&#x7C21;&#x6F54;&#x5F88;&#x591A;, &#x6B63;&#x5982;&#x6211;&#x5011;&#x537D;&#x5C07;&#x8A0E;&#x8AD6;&#x7684;&#x7D50;&#x69CB;&#x9AD4;&#x985E;&#x578B;:</p>
<p>&#x547D;&#x540D;&#x985E;&#x578B;&#x9084;&#x53EF;&#x4EE5;&#x70BA;&#x8A72;&#x985E;&#x578B;&#x7684;&#x503C;&#x5B9A;&#x7FA9;&#x65B0;&#x7684;&#x884C;&#x70BA;. &#x9019;&#x4E9B;&#x884C;&#x70BA;&#x9336;&#x793A;&#x70BA;&#x4E00;&#x7D44;&#x95DC;&#x806F;&#x5230;&#x985E;&#x578B;&#x7684;&#x51FD;&#x6578;, &#x6211;&#x5011;&#x6210;&#x70BA;&#x985E;&#x578B;&#x7684;&#x65B9;&#x6CD5;&#x96C6;. &#x6211;&#x5011;&#x5C07;&#x5728;&#x7B2C;&#x516D;&#x7AE0;&#x8A0E;&#x8AD6;&#x65B9;&#x6CD5;&#x7684;&#x7D30;&#x7BC0;, &#x9019;&#x88CF;&#x503C;&#x8AAA;&#x5BEB;&#x7C21;&#x55AE;&#x7528;&#x6CD5;.</p>
<p>&#x4E0B;&#x9EAB;&#x7684;&#x8072;&#x660E;, Celsius &#x985E;&#x578B;&#x7684;&#x53C3;&#x6578; c &#x9F63;&#x73FE;&#x5728;&#x4E86;&#x51FD;&#x6578;&#x540D;&#x7684;&#x524D;&#x9EAB;, &#x9336;&#x793A;&#x8072;&#x660E;&#x4E00;&#x500B; Celsius &#x985E;&#x578B;&#x7684; &#x540D;&#x53EB; String &#x7684;&#x65B9;&#x6CD5;, &#x65B9;&#x6CD5;&#x8FD4;&#x8FF4; &#x5E36;&#x7740; &#xB0;C &#x6EAB;&#x5EA6;&#x55AE;&#x4F4D; &#x7684;&#x53C3;&#x6578; c &#x7684;&#x6578;&#x5B57;&#x6253;&#x5370;&#x5B57;&#x7B26;&#x4E32;:</p>
<p>&#x8A3B;&#x610F;&#x6700;&#x5F8C;&#x90A3;&#x500B;&#x8A9E;&#x53E5;. &#x76E1;&#x7BA1;&#x770B;&#x8D77;&#x4F86;&#x60F3;&#x51FD;&#x6578;&#x8ABF;&#x7528;, &#x4F46;&#x662F;Celsius(f)&#x985E;&#x578B;&#x8F49;&#x63DB;, &#x4F75;&#x4E0D;&#x6703;&#x6539;&#x8B8A;&#x503C;, &#x5B83;&#x50C5;&#x50C5;&#x662F;&#x6539;&#x8B8A;&#x503C;&#x7684;&#x985E;&#x578B;&#x800C;&#x5DF2;. &#x6E2C;&#x8A66;&#x7232;&#x771E;&#x7684;&#x539F;&#x56E0;&#x662F;&#x56E0;&#x7232; c &#x548C; g &#x90FD;&#x662F;&#x96F6;&#x503C;.</p>
<p>&#x4E00;&#x500B;&#x547D;&#x540D;&#x7684;&#x985E;&#x578B;&#x53EF;&#x4EE5;&#x63D0;&#x4F9B;&#x7B26;&#x865F;&#x65B9;&#x4FBF;, &#x7279;&#x522B;&#x662F;&#x53EF;&#x4EE5;&#x907F;&#x514D;&#x4E00;&#x904D;&#x53C8;&#x4E00;&#x904D;&#x5730;&#x66F8;&#x5BEB;&#x8907;&#x96DC;&#x985E;&#x578B;(&#x8B6F;&#x8A3B;: &#x4F8B;&#x5982;&#x7528;&#x533F;&#x540D;&#x7684;&#x7D50;&#x69CB;&#x9AD4;&#x5B9A;&#x7FA9;&#x8B8A;&#x91CF;). &#x96D6;&#x7136;&#x5C0D;&#x65BC;&#x50CF;float64&#x9019;&#x7A2E;&#x7C21;&#x55AE;&#x7684;&#x5E95;&#x5C64;&#x985E;&#x578B;&#x6C92;&#x6709;&#x7C21;&#x6F54;&#x5F88;&#x591A;, &#x4F46;&#x662F;&#x5982;&#x679C;&#x662F;&#x8907;&#x96DC;&#x7684;&#x985E;&#x578B;&#x5C07;&#x6703;&#x7C21;&#x6F54;&#x5F88;&#x591A;, &#x6B63;&#x5982;&#x6211;&#x5011;&#x537D;&#x5C07;&#x8A0E;&#x8AD6;&#x7684;&#x7D50;&#x69CB;&#x9AD4;&#x985E;&#x578B;:</p>
<p>&#x547D;&#x540D;&#x985E;&#x578B;&#x9084;&#x53EF;&#x4EE5;&#x7232;&#x8A72;&#x985E;&#x578B;&#x7684;&#x503C;&#x5B9A;&#x7FA9;&#x65B0;&#x7684;&#x884C;&#x7232;. &#x9019;&#x4E9B;&#x884C;&#x7232;&#x8868;&#x793A;&#x7232;&#x4E00;&#x7D44;&#x95DC;&#x806F;&#x5230;&#x985E;&#x578B;&#x7684;&#x51FD;&#x6578;, &#x6211;&#x5011;&#x6210;&#x7232;&#x985E;&#x578B;&#x7684;&#x65B9;&#x6CD5;&#x96C6;. &#x6211;&#x5011;&#x5C07;&#x5728;&#x7B2C;&#x516D;&#x7AE0;&#x8A0E;&#x8AD6;&#x65B9;&#x6CD5;&#x7684;&#x7D30;&#x7BC0;, &#x9019;&#x91CC;&#x503C;&#x8AAC;&#x5BEB;&#x7C21;&#x55AE;&#x7528;&#x6CD5;.</p>
<p>&#x4E0B;&#x9762;&#x7684;&#x8072;&#x660E;, Celsius &#x985E;&#x578B;&#x7684;&#x53C3;&#x6578; c &#x9F63;&#x73FE;&#x5728;&#x4E86;&#x51FD;&#x6578;&#x540D;&#x7684;&#x524D;&#x9762;, &#x8868;&#x793A;&#x8072;&#x660E;&#x4E00;&#x500B; Celsius &#x985E;&#x578B;&#x7684; &#x540D;&#x53EB; String &#x7684;&#x65B9;&#x6CD5;, &#x65B9;&#x6CD5;&#x8FD4;&#x8FF4; &#x5E36;&#x7740; &#xB0;C &#x6EAB;&#x5EA6;&#x55AE;&#x4F4D; &#x7684;&#x53C3;&#x6578; c &#x7684;&#x6578;&#x5B57;&#x6253;&#x5370;&#x5B57;&#x7B26;&#x4E32;:</p>
<pre><code class="lang-Go"><span class="hljs-keyword">func</span> (c Celsius) String() <span class="hljs-typename">string</span> { <span class="hljs-keyword">return</span> fmt.Sprintf(<span class="hljs-string">&quot;%g&#xB0;C&quot;</span>, c) }
</code></pre>
<p>&#x8A31;&#x591A;&#x985E;&#x578B;&#x90FD;&#x6703;&#x5B9A;&#x7FA9;&#x500B; String &#x65B9;&#x6CD5;, &#x56E0;&#x70BA;&#x7576;&#x7136;&#x7528; fmt &#x5305;&#x7684;&#x6253;&#x5370;&#x65B9;&#x6CD5;&#x6642;, &#x5C07;&#x6703;&#x512A;&#x5148;&#x4F7F;&#x7528; String &#x65B9;&#x6CD5;&#x8FD4;&#x8FF4;&#x7684;&#x7D50;&#x679C;&#x6253;&#x5370;, &#x5C07;&#x5728; 7.1&#x7BC0; &#x8B1B;&#x8FF0;.</p>
<p>&#x8A31;&#x591A;&#x985E;&#x578B;&#x90FD;&#x6703;&#x5B9A;&#x7FA9;&#x500B; String &#x65B9;&#x6CD5;, &#x56E0;&#x7232;&#x7576;&#x7136;&#x7528; fmt &#x5305;&#x7684;&#x6253;&#x5370;&#x65B9;&#x6CD5;&#x6642;, &#x5C07;&#x6703;&#x512A;&#x5148;&#x4F7F;&#x7528; String &#x65B9;&#x6CD5;&#x8FD4;&#x8FF4;&#x7684;&#x7D50;&#x679C;&#x6253;&#x5370;, &#x5C07;&#x5728; 7.1&#x7BC0; &#x8B1B;&#x8FF0;.</p>
<pre><code class="lang-Go">c := FToC(<span class="hljs-number">212.0</span>)
fmt.Println(c.String()) <span class="hljs-comment">// &quot;100&#xB0;C&quot;</span>
fmt.Printf(<span class="hljs-string">&quot;%v\n&quot;</span>, c) <span class="hljs-comment">// &quot;100&#xB0;C&quot;; no need to call String explicitly</span>

View File

@@ -1,8 +1,8 @@
### 2.6.1. 導入包
在Go程序中, 每個包都是有一個全唯一的導入路徑. 聲明中類似 "gopl.io/ch2/tempconv" 的字符串對應導入路徑. 語言的規併沒有定義這些字符串的具體含義或包來自哪, 它們是由工具來解釋. 當使用 go 工具箱時(第十章), 一個導入路徑代一個目中的一個或多個Go源文件.
在Go程序中, 每個包都是有一個全唯一的導入路徑. 聲明中類似 "gopl.io/ch2/tempconv" 的字符串對應導入路徑. 語言的規併沒有定義這些字符串的具體含義或包來自哪, 它們是由工具來解釋. 當使用 go 工具箱時(第十章), 一個導入路徑代一個目中的一個或多個Go源文件.
除了到導入路徑, 每個包還有一個包名, 包名一般是短小的(也不要求是是唯一的), 包名在包的聲明處指定. 按照慣例, 一個包的名字和包的導入路徑的最後一個字段相, 例如 gopl.io/ch2/tempconv 包的名字是 tempconv.
除了到導入路徑, 每個包還有一個包名, 包名一般是短小的(也不要求是是唯一的), 包名在包的聲明處指定. 按照慣例, 一個包的名字和包的導入路徑的最後一個字段相, 例如 gopl.io/ch2/tempconv 包的名字是 tempconv.
要使用 gopl.io/ch2/tempconv 包, 需要先導入:
@@ -34,7 +34,7 @@ func main() {
}
```
導入聲明將導入的包綁定到一個短小的名字, 然後通過該名字就可以引用包中導齣的全部內容. 上的導入聲明將允許我們以 tempconv.CToF 的方式來訪問 gopl.io/ch2/tempconv 包中的內容. 默認情況下, 導入的包綁定到 tempconv 名字, 但是我們也可以綁定到另一個名稱, 以避免名字衝突(§10.3).
導入聲明將導入的包綁定到一個短小的名字, 然後通過該名字就可以引用包中導齣的全部內容. 上的導入聲明將允許我們以 tempconv.CToF 的方式來訪問 gopl.io/ch2/tempconv 包中的內容. 默認情況下, 導入的包綁定到 tempconv 名字, 但是我們也可以綁定到另一個名稱, 以避免名字衝突(§10.3).
cf 程序將命令行輸入的一個溫度在 Celsius 和 Fahrenheit 之間轉換:
@@ -48,7 +48,7 @@ $ ./cf -40
-40°F = -40°C, -40°C = -40°F
```
如果導入一個包, 但是沒有使用該包將被當作一個錯誤. 這種強製檢測可以有效減少不必要的依賴, 雖然在調試期間會讓人討厭, 因刪除一個類似 log.Print("got here!") 的打印可能導需要時刪除 log 包導入聲明, 否則, 編譯器將會齣一個錯誤. 在這種情況下, 我們需要將不必要的導入刪除或註釋掉.
如果導入一個包, 但是沒有使用該包將被當作一個錯誤. 這種強製檢測可以有效減少不必要的依賴, 雖然在調試期間會讓人討厭, 因刪除一個類似 log.Print("got here!") 的打印可能導需要時刪除 log 包導入聲明, 否則, 編譯器將會齣一個錯誤. 在這種情況下, 我們需要將不必要的導入刪除或註釋掉.
不過有更好的解決方案, 我們可以使用 golang.org/x/tools/cmd/goimports 工具, 它可以根據需要自動添加或刪除導入的包; 許多編輯器都可以集成 goimports 工具, 然後在保存文件的時候自動允許它. 類似的還有 gofmt 工具, 可以用來格式化Go源文件.

View File

@@ -3,26 +3,26 @@
包的初始化首先是解決包級變量的依賴順序, 然後安裝包級變量聲明齣現的順序依次初始化:
```Go
var a = b + c // a 第三個初始化, 3
var b = f() // b 第二個初始化, 2, 通過調用 f (依賴c)
var c = 1 // c 第一個初始化, 1
var a = b + c // a 第三個初始化, 3
var b = f() // b 第二個初始化, 2, 通過調用 f (依賴c)
var c = 1 // c 第一個初始化, 1
func f() int { return c + 1 }
```
如果包中含有多個 .go 文件, 它們按照給編譯器的順序進行初始化, Go的構建工具首先將 .go 文件根據文件名排序, 然後依次調用編譯器編譯.
如果包中含有多個 .go 文件, 它們按照給編譯器的順序進行初始化, Go的構建工具首先將 .go 文件根據文件名排序, 然後依次調用編譯器編譯.
對於在包級聲明的變量, 如果有初始化達式則用達式初始化, 還有一些沒有初始化達式的, 例如 某些格數據 初始化併不是一個簡單的賦值過程. 在這種情況下, 我們可以用 init 初始化函數來簡化工作. 每個文件都可以包含多個 init 初始化函數
對於在包級聲明的變量, 如果有初始化達式則用達式初始化, 還有一些沒有初始化達式的, 例如 某些格數據 初始化併不是一個簡單的賦值過程. 在這種情況下, 我們可以用 init 初始化函數來簡化工作. 每個文件都可以包含多個 init 初始化函數
```Go
func init() { /* ... */ }
```
這樣的init初始化函數除了不能被調用或引用外, 其他行和普通函數類似. 在每個文件中的init初始化函數, 在程序開始執行時按照它們聲明的順序被自動調用.
這樣的init初始化函數除了不能被調用或引用外, 其他行和普通函數類似. 在每個文件中的init初始化函數, 在程序開始執行時按照它們聲明的順序被自動調用.
每個包在解決依賴的前提下, 以導入聲明的順序初始化, 每個包隻會被初始化一次. 因此, 如果一個 p 包導入了 q 包, 那在 p 包初始化的時候可以認 q 包已經初始化過了. 初始化工作是自下而上進行的, main 包最後被初始化. 以這種方式, 確保 在 main 函數執行之前, 所有的包都已經初始化了.
每個包在解決依賴的前提下, 以導入聲明的順序初始化, 每個包隻會被初始化一次. 因此, 如果一個 p 包導入了 q 包, 那在 p 包初始化的時候可以認 q 包已經初始化過了. 初始化工作是自下而上進行的, main 包最後被初始化. 以這種方式, 確保 在 main 函數執行之前, 所有的包都已經初始化了.
的代碼定義了一個 PopCount 函數, 用於返迴一個數字中含二進製1bit的個數. 它使用 init 初始化函數來生成輔助格 pc, pc 格用於處理每個8bit寬度的數字含二進製的1bit的個數, 這樣的話在處理64bit寬度的數字時就沒有必要循環64次, 隻需要8次査就可以了. (這併不是最快的統計1bit數目的算法, 但是他可以方便演示init函數的用法, 併且演示了如果預生成輔助格, 這是編程中常用的技.)
的代碼定義了一個 PopCount 函數, 用於返迴一個數字中含二進製1bit的個數. 它使用 init 初始化函數來生成輔助格 pc, pc 格用於處理每個8bit寬度的數字含二進製的1bit的個數, 這樣的話在處理64bit寬度的數字時就沒有必要循環64次, 隻需要8次査就可以了. (這併不是最快的統計1bit數目的算法, 但是他可以方便演示init函數的用法, 併且演示了如果預生成輔助格, 這是編程中常用的技.)
```Go
gopl.io/ch2/popcount
@@ -59,9 +59,9 @@ for i, _ := range pc {
我們在下一節和10.5節還將看到其它使用init函數的地方.
**練習2.3:** 重寫 PopCount 函數, 用一個循環代替單一的達式. 比較兩個版本的性能. (11.4節將展示如何繫統地比較兩個不實現的性能.)
**練習2.3:** 重寫 PopCount 函數, 用一個循環代替單一的達式. 比較兩個版本的性能. (11.4節將展示如何繫統地比較兩個不實現的性能.)
**練習2.4:** 用移位的算法重寫 PopCount 函數, 每次測試最右邊的1bit, 然後統計總數. 比較和査算法的性能差異.
**練習2.4:** 用移位的算法重寫 PopCount 函數, 每次測試最右邊的1bit, 然後統計總數. 比較和査算法的性能差異.
**練習2.5:** 達式 `x&(x-1)` 用於將 x 的最低的一個1bit位清零. 使用這個格式重寫 PopCount 函數, 然後比較性能.
**練習2.5:** 達式 `x&(x-1)` 用於將 x 的最低的一個1bit位清零. 使用這個格式重寫 PopCount 函數, 然後比較性能.

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="Wed Dec 16 2015 10:54:29 GMT+0800 (中国标准时间)">
<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-summary">
@@ -146,7 +146,7 @@
<b>0.5.</b>
</a>
@@ -212,7 +212,7 @@
<b>1.3.</b>
査找重的行
査找重的行
</a>
@@ -227,7 +227,7 @@
<b>1.4.</b>
GIF動
GIF動
</a>
@@ -257,7 +257,7 @@
<b>1.6.</b>
穫取多個URL
穫取多個URL
</a>
@@ -479,7 +479,7 @@
<b>3.3.</b>
</a>
@@ -494,7 +494,7 @@
<b>3.4.</b>
爾型
爾型
</a>
@@ -544,7 +544,7 @@
<b>4.</b>
復閤數據類型
複合數據類型
</a>
@@ -857,7 +857,7 @@
<b>6.2.</b>
基於指對象的方法
基於指對象的方法
</a>
@@ -887,7 +887,7 @@
<b>6.4.</b>
方法值和方法達式
方法值和方法達式
</a>
@@ -953,7 +953,7 @@
<b>7.1.</b>
接口是
接口是
</a>
@@ -1073,7 +1073,7 @@
<b>7.9.</b>
示例: 達式求值
示例: 達式求值
</a>
@@ -1103,7 +1103,7 @@
<b>7.11.</b>
基於類型斷言識錯誤類型
基於類型斷言識錯誤類型
</a>
@@ -1214,7 +1214,7 @@
<b>8.2.</b>
示例: 併的Clock服務
示例: 併的Clock服務
</a>
@@ -1229,7 +1229,7 @@
<b>8.3.</b>
示例: 併的Echo服務
示例: 併的Echo服務
</a>
@@ -1274,7 +1274,7 @@
<b>8.6.</b>
示例: 併的Web爬蟲
示例: 併的Web爬蟲
</a>
@@ -1289,7 +1289,7 @@
<b>8.7.</b>
基於select的多路
基於select的多路
</a>
@@ -1304,7 +1304,7 @@
<b>8.8.</b>
示例: 併的字典遍歷
示例: 併的字典遍歷
</a>
@@ -1319,7 +1319,7 @@
<b>8.9.</b>
的退齣
的退齣
</a>
@@ -1354,7 +1354,7 @@
<b>9.</b>
基於共享變量的併
基於共享變量的併
</a>
@@ -1415,7 +1415,7 @@
<b>9.4.</b>
內存
內存
</a>
@@ -1460,7 +1460,7 @@
<b>9.7.</b>
示例: 併的非阻塞緩存
示例: 併的非阻塞緩存
</a>
@@ -1475,7 +1475,7 @@
<b>9.8.</b>
Goroutines和
Goroutines和
</a>
@@ -1748,7 +1748,7 @@
<b>12.1.</b>
何需要反射?
何需要反射?
</a>
@@ -1793,7 +1793,7 @@
<b>12.4.</b>
示例: 編碼S達式
示例: 編碼S達式
</a>
@@ -1823,7 +1823,7 @@
<b>12.6.</b>
示例: 解碼S達式
示例: 解碼S達式
</a>
@@ -1975,50 +1975,14 @@
</li>
<li class="chapter " data-level="14" data-path="exercise/ex.html">
<a href="../exercise/ex.html">
<i class="fa fa-check"></i>
<b>14.</b>
習題解答
</a>
<ul class="articles">
<li class="chapter " data-level="14.1" data-path="exercise/ex-ch1.html">
<a href="../exercise/ex-ch1.html">
<i class="fa fa-check"></i>
<b>14.1.</b>
第一章 入門
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="15" data-path="errata.html">
<li class="chapter " data-level="14" data-path="errata.html">
<a href="../errata.html">
<i class="fa fa-check"></i>
<b>15.</b>
<b>14.</b>
勘誤
</a>
@@ -2060,11 +2024,11 @@
<section class="normal" id="section-">
<h2 id="26-&#x5305;&#x548C;&#x6587;&#x4EF6;">2.6. &#x5305;&#x548C;&#x6587;&#x4EF6;</h2>
<p>Go&#x8A9E;&#x8A00;&#x4E2D;&#x7684;&#x5305;&#x548C;&#x5176;&#x4ED6;&#x8A9E;&#x8A00;&#x7684;&#x5EAB;&#x6216;&#x6A21;&#x584A;&#x6982;&#x5538;&#x985E;&#x4F3C;, &#x76EE;&#x7684;&#x90FD;&#x662F;&#x70BA;&#x4E86;&#x652F;&#x6301;&#x6A21;&#x584A;&#x597D;, &#x5C01;&#x88DD;, &#x55AE;&#x7368;&#x7DE8;&#x8B6F;&#x548C;&#x4EE3;&#x78BC;&#x91CD;&#x7528;. &#x4E00;&#x500B;&#x5305;&#x7684;&#x6E90;&#x4EE3;&#x78BC;&#x4FDD;&#x5B58;&#x5728;&#x4E00;&#x500B;&#x6216;&#x591A;&#x500B;&#x4EE5;.&#x70BA;&#x5F8C;&#x7DB4;&#x540D;&#x7684;&#x6587;&#x4EF6;&#x4E2D;, &#x901A;&#x5E38;&#x4E00;&#x500B;&#x5305;&#x6240;&#x5728;&#x76EE;&#x5F54;&#x8DEF;&#x5F91;&#x7684;&#x5F8C;&#x7DB4;&#x662F;&#x5305;&#x7684;&#x5C0E;&#x5165;&#x8DEF;&#x5F91;; &#x4F8B;&#x5982;&#x5305; gopl.io/ch1/helloworld &#x5C0D;&#x61C9;&#x7684;&#x76EE;&#x5F54;&#x8DEF;&#x5F91;&#x662F; $GOPATH/src/gopl.io/ch1/helloworld.</p>
<p>&#x6BCF;&#x500B;&#x5305;&#x4F5C;&#x70BA;&#x4E00;&#x500B;&#x7368;&#x7ACB;&#x7684;&#x540D;&#x5B57;&#x7A7A;&#x9593;. &#x4F8B;&#x5982;, &#x5728; image &#x5305;&#x4E2D;&#x7684; Decode &#x51FD;&#x6578; &#x548C; unicode/utf16 &#x5305;&#x4E2D;&#x7684; Decode &#x51FD;&#x6578;&#x662F;&#x4E0D;&#x8855;&#x7684;. &#x8981;&#x5728;&#x5916;&#x90E8;&#x5305;&#x5F15;&#x7528;&#x8A72;&#x51FD;&#x6578;, &#x5FC5;&#x9B1A;&#x986F;&#x5F0F;&#x4F7F;&#x7528; image.Decode &#x6216; utf16.Decode &#x8A2A;&#x554F;.</p>
<p>&#x5305;&#x53EF;&#x4EE5;&#x8B93;&#x6211;&#x5011;&#x901A;&#x904E;&#x63A7;&#x88FD;&#x90A3;&#x4E9B;&#x540D;&#x5B57;&#x662F;&#x5916;&#x90E8;&#x53EF;&#x898B;&#x7684;&#x4F86;&#x96B1;&#x85CF;&#x4FE1;&#x606F;. &#x5728;Go&#x4E2D;, &#x4E00;&#x500B;&#x7C21;&#x55AE;&#x7684;&#x898F;&#x5247;&#x662F;: &#x5982;&#x679C;&#x4E00;&#x500B;&#x540D;&#x5B57;&#x662F;&#x5927;&#x5BEB;&#x5B57;&#x6BCD;&#x958B;&#x982D;&#x7684;, &#x90A3;&#x9EBC;&#x8A72;&#x540D;&#x5B57;&#x662F;&#x5C0E;&#x9F63;&#x7684;.</p>
<p>&#x70BA;&#x4E86;&#x6F14;&#x793A;&#x57FA;&#x672C;&#x7684;&#x7528;&#x6CD5;, &#x5047;&#x8A2D;&#x6211;&#x5011;&#x7684;&#x6EAB;&#x5EA6;&#x8F49;&#x63DB;&#x8EDF;&#x4EF6;&#x5DF2;&#x7D93;&#x5F88;&#x6D41;&#x884C;, &#x6211;&#x5011;&#x5E0C;&#x671B;&#x5230;Go&#x793E;&#x5340;&#x4E5F;&#x80FD;&#x4F7F;&#x7528;&#x9019;&#x500B;&#x5305;. &#x6211;&#x5011;&#x8A72;&#x5982;&#x4F55;&#x505A;&#x5462;?</p>
<p>&#x8B93;&#x6211;&#x5011;&#x5275;&#x5EFA;&#x4E00;&#x500B;&#x540D;&#x70BA; gopl.io/ch2/tempconv &#x7684;&#x5305;, &#x662F;&#x524D;&#x9EAB;&#x4F8B;&#x5B50;&#x7684;&#x4E00;&#x500B;&#x6539;&#x9032;&#x7248;&#x672C;. (&#x6211;&#x5011;&#x7D04;&#x5B9A;&#x6211;&#x5011;&#x7684;&#x4F8B;&#x5B50;&#x90FD;&#x662F;&#x4EE5;&#x7AE0;&#x7BC0;&#x9806;&#x5E8F;&#x4F86;&#x7DE8;&#x865F;&#x7684;, &#x9019;&#x6A23;&#x7684;&#x8DEF;&#x5F91;&#x66F4;&#x5BB9;&#x6613;&#x95B1;&#x8B80;.) &#x5305;&#x4EE3;&#x78BC;&#x5B58;&#x5132;&#x5728;&#x5169;&#x500B;&#x6587;&#x4EF6;, &#x7528;&#x4F86;&#x6F14;&#x793A;&#x5982;&#x4F55;&#x5728;&#x4E00;&#x500B;&#x6587;&#x4EF6;&#x8072;&#x660E;&#x7136;&#x5F8C;&#x5728;&#x5176;&#x4ED6;&#x7684;&#x6587;&#x4EF6;&#x8A2A;&#x554F;; &#x5728;&#x73FE;&#x5BE6;&#x4E2D;, &#x9019;&#x6A23;&#x5C0F;&#x7684;&#x5305;&#x4E00;&#x822C;&#x503C;&#x9700;&#x8981;&#x4E00;&#x500B;&#x6587;&#x4EF6;.</p>
<p>Go&#x8A9E;&#x8A00;&#x4E2D;&#x7684;&#x5305;&#x548C;&#x5176;&#x4ED6;&#x8A9E;&#x8A00;&#x7684;&#x5EAB;&#x6216;&#x6A21;&#x584A;&#x6982;&#x5FF5;&#x985E;&#x4F3C;, &#x76EE;&#x7684;&#x90FD;&#x662F;&#x7232;&#x4E86;&#x652F;&#x6301;&#x6A21;&#x584A;&#x597D;, &#x5C01;&#x88DD;, &#x55AE;&#x7368;&#x7DE8;&#x8B6F;&#x548C;&#x4EE3;&#x78BC;&#x91CD;&#x7528;. &#x4E00;&#x500B;&#x5305;&#x7684;&#x6E90;&#x4EE3;&#x78BC;&#x4FDD;&#x5B58;&#x5728;&#x4E00;&#x500B;&#x6216;&#x591A;&#x500B;&#x4EE5;.&#x7232;&#x5F8C;&#x7DB4;&#x540D;&#x7684;&#x6587;&#x4EF6;&#x4E2D;, &#x901A;&#x5E38;&#x4E00;&#x500B;&#x5305;&#x6240;&#x5728;&#x76EE;&#x9332;&#x8DEF;&#x5F91;&#x7684;&#x5F8C;&#x7DB4;&#x662F;&#x5305;&#x7684;&#x5C0E;&#x5165;&#x8DEF;&#x5F91;; &#x4F8B;&#x5982;&#x5305; gopl.io/ch1/helloworld &#x5C0D;&#x61C9;&#x7684;&#x76EE;&#x9332;&#x8DEF;&#x5F91;&#x662F; $GOPATH/src/gopl.io/ch1/helloworld.</p>
<p>&#x6BCF;&#x500B;&#x5305;&#x4F5C;&#x7232;&#x4E00;&#x500B;&#x7368;&#x7ACB;&#x7684;&#x540D;&#x5B57;&#x7A7A;&#x9593;. &#x4F8B;&#x5982;, &#x5728; image &#x5305;&#x4E2D;&#x7684; Decode &#x51FD;&#x6578; &#x548C; unicode/utf16 &#x5305;&#x4E2D;&#x7684; Decode &#x51FD;&#x6578;&#x662F;&#x4E0D;&#x540C;&#x7684;. &#x8981;&#x5728;&#x5916;&#x90E8;&#x5305;&#x5F15;&#x7528;&#x8A72;&#x51FD;&#x6578;, &#x5FC5;&#x9B1A;&#x986F;&#x5F0F;&#x4F7F;&#x7528; image.Decode &#x6216; utf16.Decode &#x8A2A;&#x554F;.</p>
<p>&#x5305;&#x53EF;&#x4EE5;&#x8B93;&#x6211;&#x5011;&#x901A;&#x904E;&#x63A7;&#x88FD;&#x90A3;&#x4E9B;&#x540D;&#x5B57;&#x662F;&#x5916;&#x90E8;&#x53EF;&#x898B;&#x7684;&#x4F86;&#x96B1;&#x85CF;&#x4FE1;&#x606F;. &#x5728;Go&#x4E2D;, &#x4E00;&#x500B;&#x7C21;&#x55AE;&#x7684;&#x898F;&#x5247;&#x662F;: &#x5982;&#x679C;&#x4E00;&#x500B;&#x540D;&#x5B57;&#x662F;&#x5927;&#x5BEB;&#x5B57;&#x6BCD;&#x958B;&#x982D;&#x7684;, &#x90A3;&#x9EBD;&#x8A72;&#x540D;&#x5B57;&#x662F;&#x5C0E;&#x9F63;&#x7684;.</p>
<p>&#x7232;&#x4E86;&#x6F14;&#x793A;&#x57FA;&#x672C;&#x7684;&#x7528;&#x6CD5;, &#x5047;&#x8A2D;&#x6211;&#x5011;&#x7684;&#x6EAB;&#x5EA6;&#x8F49;&#x63DB;&#x8EDF;&#x4EF6;&#x5DF2;&#x7D93;&#x5F88;&#x6D41;&#x884C;, &#x6211;&#x5011;&#x5E0C;&#x671B;&#x5230;Go&#x793E;&#x5340;&#x4E5F;&#x80FD;&#x4F7F;&#x7528;&#x9019;&#x500B;&#x5305;. &#x6211;&#x5011;&#x8A72;&#x5982;&#x4F55;&#x505A;&#x5462;?</p>
<p>&#x8B93;&#x6211;&#x5011;&#x5275;&#x5EFA;&#x4E00;&#x500B;&#x540D;&#x7232; gopl.io/ch2/tempconv &#x7684;&#x5305;, &#x662F;&#x524D;&#x9762;&#x4F8B;&#x5B50;&#x7684;&#x4E00;&#x500B;&#x6539;&#x9032;&#x7248;&#x672C;. (&#x6211;&#x5011;&#x7D04;&#x5B9A;&#x6211;&#x5011;&#x7684;&#x4F8B;&#x5B50;&#x90FD;&#x662F;&#x4EE5;&#x7AE0;&#x7BC0;&#x9806;&#x5E8F;&#x4F86;&#x7DE8;&#x865F;&#x7684;, &#x9019;&#x6A23;&#x7684;&#x8DEF;&#x5F91;&#x66F4;&#x5BB9;&#x6613;&#x95B2;&#x8B80;.) &#x5305;&#x4EE3;&#x78BC;&#x5B58;&#x5132;&#x5728;&#x5169;&#x500B;&#x6587;&#x4EF6;, &#x7528;&#x4F86;&#x6F14;&#x793A;&#x5982;&#x4F55;&#x5728;&#x4E00;&#x500B;&#x6587;&#x4EF6;&#x8072;&#x660E;&#x7136;&#x5F8C;&#x5728;&#x5176;&#x4ED6;&#x7684;&#x6587;&#x4EF6;&#x8A2A;&#x554F;; &#x5728;&#x73FE;&#x5BE6;&#x4E2D;, &#x9019;&#x6A23;&#x5C0F;&#x7684;&#x5305;&#x4E00;&#x822C;&#x503C;&#x9700;&#x8981;&#x4E00;&#x500B;&#x6587;&#x4EF6;.</p>
<p>&#x6211;&#x5011;&#x628A;&#x8B8A;&#x91CF;&#x7684;&#x8072;&#x660E;, &#x5C0D;&#x61C9;&#x7684;&#x5E38;&#x91CF;, &#x9084;&#x6709;&#x65B9;&#x6CD5;&#x90FD;&#x653E;&#x5230; tempconv.go &#x6587;&#x4EF6;:</p>
<pre><code class="lang-Go">gopl.io/ch2/tempconv
<span class="hljs-comment">// Package tempconv performs Celsius and Fahrenheit conversions.</span>
@@ -2093,21 +2057,21 @@
<span class="hljs-comment">// FToC converts a Fahrenheit temperature to Celsius.</span>
<span class="hljs-keyword">func</span> FToC(f Fahrenheit) Celsius { <span class="hljs-keyword">return</span> Celsius((f - <span class="hljs-number">32</span>) * <span class="hljs-number">5</span> / <span class="hljs-number">9</span>) }
</code></pre>
<p>&#x6BCF;&#x500B;&#x6587;&#x4EF6;&#x90FD;&#x662F;&#x4EE5;&#x5305;&#x7684;&#x8072;&#x660E;&#x8A9E;&#x53E5;&#x958B;&#x59CB;, &#x7528;&#x4F86;&#x6307;&#x5B9A;&#x5305;&#x7684;&#x540D;&#x5B57;. &#x7576;&#x5305;&#x88AB;&#x5C0E;&#x5165;&#x7684;&#x6642;&#x5019;, &#x5305;&#x5167;&#x90E8;&#x7684;&#x6210;&#x54E1;&#x5C07;&#x901A;&#x904E;&#x985E;&#x4F3C; tempconv.CToF &#x7684;&#x65B9;&#x5F0F;&#x8A2A;&#x554F;. &#x5305;&#x7D1A;&#x5F46;&#x7684;&#x540D;&#x5B57;, &#x4F8B;&#x5982;&#x5728;&#x4E00;&#x500B;&#x6587;&#x4EF6;&#x8072;&#x660E;&#x7684;&#x985E;&#x578B;&#x548C;&#x5E38;&#x91CF;, &#x5728;&#x8855;&#x4E00;&#x500B;&#x5305;&#x7684;&#x5176;&#x4ED6;&#x6587;&#x4EF6;&#x4E5F;&#x662F;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x8A2A;&#x554F;&#x7684;,
&#x5C31;&#x597D;&#x50CF;&#x6240;&#x6709;&#x4EE3;&#x78BC;&#x90FD;&#x5728;&#x4E00;&#x500B;&#x6587;&#x4EF6;&#x4E00;&#x6A23;. &#x8981;&#x8A3B;&#x610F;&#x7684;&#x662F; tempconv.go &#x6587;&#x4EF6;&#x5C0E;&#x5165;&#x4E86; fmt &#x5305;, &#x4F46;&#x662F; conv.go &#x6587;&#x4EF6;&#x4F75;&#x6C92;&#x6709;, &#x56E0;&#x70BA;&#x5B83;&#x4F75;&#x6C92;&#x6709;&#x7528;&#x5230; fmt &#x5305;.</p>
<p>&#x56E0;&#x70BA;&#x5305;&#x7D1A;&#x5F46;&#x7684;&#x5E38;&#x91CF;&#x540D;&#x90FD;&#x662F;&#x4EE5;&#x5927;&#x5BEB;&#x5B57;&#x6BCD;&#x958B;&#x982D;, &#x5B83;&#x5011;&#x4E5F;&#x662F;&#x53EF;&#x4EE5;&#x50CF; tempconv.AbsoluteZeroC &#x9019;&#x6A23;&#x88AB;&#x8A2A;&#x554F;&#x7684;:</p>
<p>&#x6BCF;&#x500B;&#x6587;&#x4EF6;&#x90FD;&#x662F;&#x4EE5;&#x5305;&#x7684;&#x8072;&#x660E;&#x8A9E;&#x53E5;&#x958B;&#x59CB;, &#x7528;&#x4F86;&#x6307;&#x5B9A;&#x5305;&#x7684;&#x540D;&#x5B57;. &#x7576;&#x5305;&#x88AB;&#x5C0E;&#x5165;&#x7684;&#x6642;&#x5019;, &#x5305;&#x5167;&#x90E8;&#x7684;&#x6210;&#x54E1;&#x5C07;&#x901A;&#x904E;&#x985E;&#x4F3C; tempconv.CToF &#x7684;&#x65B9;&#x5F0F;&#x8A2A;&#x554F;. &#x5305;&#x7D1A;&#x522B;&#x7684;&#x540D;&#x5B57;, &#x4F8B;&#x5982;&#x5728;&#x4E00;&#x500B;&#x6587;&#x4EF6;&#x8072;&#x660E;&#x7684;&#x985E;&#x578B;&#x548C;&#x5E38;&#x91CF;, &#x5728;&#x540C;&#x4E00;&#x500B;&#x5305;&#x7684;&#x5176;&#x4ED6;&#x6587;&#x4EF6;&#x4E5F;&#x662F;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x8A2A;&#x554F;&#x7684;,
&#x5C31;&#x597D;&#x50CF;&#x6240;&#x6709;&#x4EE3;&#x78BC;&#x90FD;&#x5728;&#x4E00;&#x500B;&#x6587;&#x4EF6;&#x4E00;&#x6A23;. &#x8981;&#x8A3B;&#x610F;&#x7684;&#x662F; tempconv.go &#x6587;&#x4EF6;&#x5C0E;&#x5165;&#x4E86; fmt &#x5305;, &#x4F46;&#x662F; conv.go &#x6587;&#x4EF6;&#x4F75;&#x6C92;&#x6709;, &#x56E0;&#x7232;&#x5B83;&#x4F75;&#x6C92;&#x6709;&#x7528;&#x5230; fmt &#x5305;.</p>
<p>&#x56E0;&#x7232;&#x5305;&#x7D1A;&#x522B;&#x7684;&#x5E38;&#x91CF;&#x540D;&#x90FD;&#x662F;&#x4EE5;&#x5927;&#x5BEB;&#x5B57;&#x6BCD;&#x958B;&#x982D;, &#x5B83;&#x5011;&#x4E5F;&#x662F;&#x53EF;&#x4EE5;&#x50CF; tempconv.AbsoluteZeroC &#x9019;&#x6A23;&#x88AB;&#x8A2A;&#x554F;&#x7684;:</p>
<pre><code class="lang-Go">fmt.Printf(<span class="hljs-string">&quot;Brrrr! %v\n&quot;</span>, tempconv.AbsoluteZeroC) <span class="hljs-comment">// &quot;Brrrr! -273.15&#xB0;C&quot;</span>
</code></pre>
<p>&#x8981;&#x5C07; &#x651D;&#x6C0F;&#x6EAB;&#x5EA6;&#x8F49;&#x63DB;&#x70BA; &#x83EF;&#x6C0F;&#x6EAB;&#x5EA6;, &#x9700;&#x8981;&#x5148;&#x5C0E;&#x5165; gopl.io/ch2/tempconv, &#x7136;&#x5F8C;&#x5C31;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;&#x4E0B;&#x9EAB;&#x7684;&#x4EE3;&#x78BC;&#x8F49;&#x63DB;&#x4E86;:</p>
<p>&#x8981;&#x5C07; &#x651D;&#x6C0F;&#x6EAB;&#x5EA6;&#x8F49;&#x63DB;&#x7232; &#x83EF;&#x6C0F;&#x6EAB;&#x5EA6;, &#x9700;&#x8981;&#x5148;&#x5C0E;&#x5165; gopl.io/ch2/tempconv, &#x7136;&#x5F8C;&#x5C31;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;&#x4E0B;&#x9762;&#x7684;&#x4EE3;&#x78BC;&#x8F49;&#x63DB;&#x4E86;:</p>
<pre><code class="lang-Go">fmt.Println(tempconv.CToF(tempconv.BoilingC)) <span class="hljs-comment">// &quot;212&#xB0;F&quot;</span>
</code></pre>
<p>&#x5728;&#x6BCF;&#x500B;&#x6587;&#x4EF6;&#x7684;&#x5305;&#x8072;&#x660E;&#x524D;&#x50C5;&#x8DDF;&#x7740;&#x7684;&#x8A3B;&#x91CB;&#x662F;&#x5305;&#x8A3B;&#x91CB;(&#xA7;10.7.4). &#x901A;&#x5E38;, &#x7B2C;&#x4E00;&#x53E5;&#x61C9;&#x8A72;&#x5148;&#x662F;&#x5305;&#x7684;&#x529F;&#x80FD;&#x6982;&#x8981;.
&#x4E00;&#x500B;&#x5305;&#x901A;&#x5E38;&#x96BB;&#x6709;&#x4E00;&#x500B;&#x6587;&#x4EF6;&#x6709;&#x5305;&#x8A3B;&#x91CB;. &#x5982;&#x679C;&#x5305;&#x8A3B;&#x91CB;&#x5F88;&#x5927;, &#x901A;&#x5E38;&#x6703;&#x653E;&#x5230;&#x4E00;&#x500B;&#x7368;&#x7ACB;&#x7684; doc.go &#x6587;&#x4EF6;&#x4E2D;.</p>
<p><strong>&#x7DF4;&#x7FD2; 2.1:</strong> &#x66CF; tempconv &#x5305; &#x6DFB;&#x52A0;&#x985E;&#x578B;, &#x5E38;&#x91CF;&#x548C;&#x51FD;&#x6578;&#x7528;&#x4F86;&#x8655;&#x7406; Kelvin &#x7D76;&#x5C0D;&#x6EAB;&#x5EA6;&#x7684;&#x8F49;&#x63DB;,
<p><strong>&#x7DF4;&#x7FD2; 2.1:</strong> &#x5411; tempconv &#x5305; &#x6DFB;&#x52A0;&#x985E;&#x578B;, &#x5E38;&#x91CF;&#x548C;&#x51FD;&#x6578;&#x7528;&#x4F86;&#x8655;&#x7406; Kelvin &#x7D76;&#x5C0D;&#x6EAB;&#x5EA6;&#x7684;&#x8F49;&#x63DB;,
Kelvin &#x7D76;&#x5C0D;&#x96F6;&#x5EA6;&#x662F; &#x2212;273.15&#xB0;C, Kelvin &#x7D76;&#x5C0D;&#x6EAB;&#x5EA6;1K&#x548C;&#x651D;&#x6C0F;&#x5EA6;1&#xB0;C&#x7684;&#x55AE;&#x4F4D;&#x9593;&#x9694;&#x662F;&#x4E00;&#x6A23;&#x7684;.</p>
<h3 id="261-&#x5C0E;&#x5165;&#x5305;">2.6.1. &#x5C0E;&#x5165;&#x5305;</h3>
<p>&#x5728;Go&#x7A0B;&#x5E8F;&#x4E2D;, &#x6BCF;&#x500B;&#x5305;&#x90FD;&#x662F;&#x6709;&#x4E00;&#x500B;&#x5168;&#x4FB7;&#x552F;&#x4E00;&#x7684;&#x5C0E;&#x5165;&#x8DEF;&#x5F91;. &#x8072;&#x660E;&#x4E2D;&#x985E;&#x4F3C; &quot;gopl.io/ch2/tempconv&quot; &#x7684;&#x5B57;&#x7B26;&#x4E32;&#x5C0D;&#x61C9;&#x5C0E;&#x5165;&#x8DEF;&#x5F91;. &#x8A9E;&#x8A00;&#x7684;&#x898F;&#x7BC4;&#x4F75;&#x6C92;&#x6709;&#x5B9A;&#x7FA9;&#x9019;&#x4E9B;&#x5B57;&#x7B26;&#x4E32;&#x7684;&#x5177;&#x9AD4;&#x542B;&#x7FA9;&#x6216;&#x5305;&#x4F86;&#x81EA;&#x54EA;&#x88CF;, &#x5B83;&#x5011;&#x662F;&#x7531;&#x5DE5;&#x5177;&#x4F86;&#x89E3;&#x91CB;. &#x7576;&#x4F7F;&#x7528; go &#x5DE5;&#x5177;&#x7BB1;&#x6642;(&#x7B2C;&#x5341;&#x7AE0;), &#x4E00;&#x500B;&#x5C0E;&#x5165;&#x8DEF;&#x5F91;&#x4EE3;&#x9336;&#x4E00;&#x500B;&#x76EE;&#x5F54;&#x4E2D;&#x7684;&#x4E00;&#x500B;&#x6216;&#x591A;&#x500B;Go&#x6E90;&#x6587;&#x4EF6;.</p>
<p>&#x9664;&#x4E86;&#x5230;&#x5C0E;&#x5165;&#x8DEF;&#x5F91;, &#x6BCF;&#x500B;&#x5305;&#x9084;&#x6709;&#x4E00;&#x500B;&#x5305;&#x540D;, &#x5305;&#x540D;&#x4E00;&#x822C;&#x662F;&#x77ED;&#x5C0F;&#x7684;(&#x4E5F;&#x4E0D;&#x8981;&#x6C42;&#x662F;&#x662F;&#x552F;&#x4E00;&#x7684;), &#x5305;&#x540D;&#x5728;&#x5305;&#x7684;&#x8072;&#x660E;&#x8655;&#x6307;&#x5B9A;. &#x6309;&#x7167;&#x6163;&#x4F8B;, &#x4E00;&#x500B;&#x5305;&#x7684;&#x540D;&#x5B57;&#x548C;&#x5305;&#x7684;&#x5C0E;&#x5165;&#x8DEF;&#x5F91;&#x7684;&#x6700;&#x5F8C;&#x4E00;&#x500B;&#x5B57;&#x6BB5;&#x76F8;&#x8855;, &#x4F8B;&#x5982; gopl.io/ch2/tempconv &#x5305;&#x7684;&#x540D;&#x5B57;&#x662F; tempconv.</p>
<p>&#x5728;Go&#x7A0B;&#x5E8F;&#x4E2D;, &#x6BCF;&#x500B;&#x5305;&#x90FD;&#x662F;&#x6709;&#x4E00;&#x500B;&#x5168;&#x5C40;&#x552F;&#x4E00;&#x7684;&#x5C0E;&#x5165;&#x8DEF;&#x5F91;. &#x8072;&#x660E;&#x4E2D;&#x985E;&#x4F3C; &quot;gopl.io/ch2/tempconv&quot; &#x7684;&#x5B57;&#x7B26;&#x4E32;&#x5C0D;&#x61C9;&#x5C0E;&#x5165;&#x8DEF;&#x5F91;. &#x8A9E;&#x8A00;&#x7684;&#x898F;&#x8303;&#x4F75;&#x6C92;&#x6709;&#x5B9A;&#x7FA9;&#x9019;&#x4E9B;&#x5B57;&#x7B26;&#x4E32;&#x7684;&#x5177;&#x9AD4;&#x542B;&#x7FA9;&#x6216;&#x5305;&#x4F86;&#x81EA;&#x54EA;&#x91CC;, &#x5B83;&#x5011;&#x662F;&#x7531;&#x5DE5;&#x5177;&#x4F86;&#x89E3;&#x91CB;. &#x7576;&#x4F7F;&#x7528; go &#x5DE5;&#x5177;&#x7BB1;&#x6642;(&#x7B2C;&#x5341;&#x7AE0;), &#x4E00;&#x500B;&#x5C0E;&#x5165;&#x8DEF;&#x5F91;&#x4EE3;&#x8868;&#x4E00;&#x500B;&#x76EE;&#x9332;&#x4E2D;&#x7684;&#x4E00;&#x500B;&#x6216;&#x591A;&#x500B;Go&#x6E90;&#x6587;&#x4EF6;.</p>
<p>&#x9664;&#x4E86;&#x5230;&#x5C0E;&#x5165;&#x8DEF;&#x5F91;, &#x6BCF;&#x500B;&#x5305;&#x9084;&#x6709;&#x4E00;&#x500B;&#x5305;&#x540D;, &#x5305;&#x540D;&#x4E00;&#x822C;&#x662F;&#x77ED;&#x5C0F;&#x7684;(&#x4E5F;&#x4E0D;&#x8981;&#x6C42;&#x662F;&#x662F;&#x552F;&#x4E00;&#x7684;), &#x5305;&#x540D;&#x5728;&#x5305;&#x7684;&#x8072;&#x660E;&#x8655;&#x6307;&#x5B9A;. &#x6309;&#x7167;&#x6163;&#x4F8B;, &#x4E00;&#x500B;&#x5305;&#x7684;&#x540D;&#x5B57;&#x548C;&#x5305;&#x7684;&#x5C0E;&#x5165;&#x8DEF;&#x5F91;&#x7684;&#x6700;&#x5F8C;&#x4E00;&#x500B;&#x5B57;&#x6BB5;&#x76F8;&#x540C;, &#x4F8B;&#x5982; gopl.io/ch2/tempconv &#x5305;&#x7684;&#x540D;&#x5B57;&#x662F; tempconv.</p>
<p>&#x8981;&#x4F7F;&#x7528; gopl.io/ch2/tempconv &#x5305;, &#x9700;&#x8981;&#x5148;&#x5C0E;&#x5165;:</p>
<pre><code class="lang-Go">gopl.io/ch2/cf
<span class="hljs-comment">// Cf converts its numeric argument to Celsius and Fahrenheit. </span>
@@ -2135,7 +2099,7 @@ Kelvin &#x7D76;&#x5C0D;&#x96F6;&#x5EA6;&#x662F; &#x2212;273.15&#xB0;C, Kelvin &#
}
}
</code></pre>
<p>&#x5C0E;&#x5165;&#x8072;&#x660E;&#x5C07;&#x5C0E;&#x5165;&#x7684;&#x5305;&#x7D81;&#x5B9A;&#x5230;&#x4E00;&#x500B;&#x77ED;&#x5C0F;&#x7684;&#x540D;&#x5B57;, &#x7136;&#x5F8C;&#x901A;&#x904E;&#x8A72;&#x540D;&#x5B57;&#x5C31;&#x53EF;&#x4EE5;&#x5F15;&#x7528;&#x5305;&#x4E2D;&#x5C0E;&#x9F63;&#x7684;&#x5168;&#x90E8;&#x5167;&#x5BB9;. &#x4E0A;&#x9EAB;&#x7684;&#x5C0E;&#x5165;&#x8072;&#x660E;&#x5C07;&#x5141;&#x8A31;&#x6211;&#x5011;&#x4EE5; tempconv.CToF &#x7684;&#x65B9;&#x5F0F;&#x4F86;&#x8A2A;&#x554F; gopl.io/ch2/tempconv &#x5305;&#x4E2D;&#x7684;&#x5167;&#x5BB9;. &#x9ED8;&#x8A8D;&#x60C5;&#x6CC1;&#x4E0B;, &#x5C0E;&#x5165;&#x7684;&#x5305;&#x7D81;&#x5B9A;&#x5230; tempconv &#x540D;&#x5B57;, &#x4F46;&#x662F;&#x6211;&#x5011;&#x4E5F;&#x53EF;&#x4EE5;&#x7D81;&#x5B9A;&#x5230;&#x53E6;&#x4E00;&#x500B;&#x540D;&#x7A31;, &#x4EE5;&#x907F;&#x514D;&#x540D;&#x5B57;&#x885D;&#x7A81;(&#xA7;10.3).</p>
<p>&#x5C0E;&#x5165;&#x8072;&#x660E;&#x5C07;&#x5C0E;&#x5165;&#x7684;&#x5305;&#x7D81;&#x5B9A;&#x5230;&#x4E00;&#x500B;&#x77ED;&#x5C0F;&#x7684;&#x540D;&#x5B57;, &#x7136;&#x5F8C;&#x901A;&#x904E;&#x8A72;&#x540D;&#x5B57;&#x5C31;&#x53EF;&#x4EE5;&#x5F15;&#x7528;&#x5305;&#x4E2D;&#x5C0E;&#x9F63;&#x7684;&#x5168;&#x90E8;&#x5167;&#x5BB9;. &#x4E0A;&#x9762;&#x7684;&#x5C0E;&#x5165;&#x8072;&#x660E;&#x5C07;&#x5141;&#x8A31;&#x6211;&#x5011;&#x4EE5; tempconv.CToF &#x7684;&#x65B9;&#x5F0F;&#x4F86;&#x8A2A;&#x554F; gopl.io/ch2/tempconv &#x5305;&#x4E2D;&#x7684;&#x5167;&#x5BB9;. &#x9ED8;&#x8A8D;&#x60C5;&#x6CC1;&#x4E0B;, &#x5C0E;&#x5165;&#x7684;&#x5305;&#x7D81;&#x5B9A;&#x5230; tempconv &#x540D;&#x5B57;, &#x4F46;&#x662F;&#x6211;&#x5011;&#x4E5F;&#x53EF;&#x4EE5;&#x7D81;&#x5B9A;&#x5230;&#x53E6;&#x4E00;&#x500B;&#x540D;&#x7A31;, &#x4EE5;&#x907F;&#x514D;&#x540D;&#x5B57;&#x885D;&#x7A81;(&#xA7;10.3).</p>
<p>cf &#x7A0B;&#x5E8F;&#x5C07;&#x547D;&#x4EE4;&#x884C;&#x8F38;&#x5165;&#x7684;&#x4E00;&#x500B;&#x6EAB;&#x5EA6;&#x5728; Celsius &#x548C; Fahrenheit &#x4E4B;&#x9593;&#x8F49;&#x63DB;:</p>
<pre><code>$ go build gopl.io/ch2/cf
$ ./cf 32
@@ -2144,25 +2108,25 @@ $ ./cf 212
212&#xB0;F = 100&#xB0;C, 212&#xB0;C = 413.6&#xB0;F
$ ./cf -40
-40&#xB0;F = -40&#xB0;C, -40&#xB0;C = -40&#xB0;F
</code></pre><p>&#x5982;&#x679C;&#x5C0E;&#x5165;&#x4E00;&#x500B;&#x5305;, &#x4F46;&#x662F;&#x6C92;&#x6709;&#x4F7F;&#x7528;&#x8A72;&#x5305;&#x5C07;&#x88AB;&#x7576;&#x4F5C;&#x4E00;&#x500B;&#x932F;&#x8AA4;. &#x9019;&#x7A2E;&#x5F37;&#x88FD;&#x6AA2;&#x6E2C;&#x53EF;&#x4EE5;&#x6709;&#x6548;&#x6E1B;&#x5C11;&#x4E0D;&#x5FC5;&#x8981;&#x7684;&#x4F9D;&#x8CF4;, &#x96D6;&#x7136;&#x5728;&#x8ABF;&#x8A66;&#x671F;&#x9593;&#x6703;&#x8B93;&#x4EBA;&#x8A0E;&#x53AD;, &#x56E0;&#x70BA;&#x522A;&#x9664;&#x4E00;&#x500B;&#x985E;&#x4F3C; log.Print(&quot;got here!&quot;) &#x7684;&#x6253;&#x5370;&#x53EF;&#x80FD;&#x5C0E;&#x7DFB;&#x9700;&#x8981;&#x8855;&#x6642;&#x522A;&#x9664; log &#x5305;&#x5C0E;&#x5165;&#x8072;&#x660E;, &#x5426;&#x5247;, &#x7DE8;&#x8B6F;&#x5668;&#x5C07;&#x6703;&#x9AEE;&#x9F63;&#x4E00;&#x500B;&#x932F;&#x8AA4;. &#x5728;&#x9019;&#x7A2E;&#x60C5;&#x6CC1;&#x4E0B;, &#x6211;&#x5011;&#x9700;&#x8981;&#x5C07;&#x4E0D;&#x5FC5;&#x8981;&#x7684;&#x5C0E;&#x5165;&#x522A;&#x9664;&#x6216;&#x8A3B;&#x91CB;&#x6389;.</p>
</code></pre><p>&#x5982;&#x679C;&#x5C0E;&#x5165;&#x4E00;&#x500B;&#x5305;, &#x4F46;&#x662F;&#x6C92;&#x6709;&#x4F7F;&#x7528;&#x8A72;&#x5305;&#x5C07;&#x88AB;&#x7576;&#x4F5C;&#x4E00;&#x500B;&#x932F;&#x8AA4;. &#x9019;&#x7A2E;&#x5F37;&#x88FD;&#x6AA2;&#x6E2C;&#x53EF;&#x4EE5;&#x6709;&#x6548;&#x6E1B;&#x5C11;&#x4E0D;&#x5FC5;&#x8981;&#x7684;&#x4F9D;&#x8CF4;, &#x96D6;&#x7136;&#x5728;&#x8ABF;&#x8A66;&#x671F;&#x9593;&#x6703;&#x8B93;&#x4EBA;&#x8A0E;&#x53AD;, &#x56E0;&#x7232;&#x522A;&#x9664;&#x4E00;&#x500B;&#x985E;&#x4F3C; log.Print(&quot;got here!&quot;) &#x7684;&#x6253;&#x5370;&#x53EF;&#x80FD;&#x5C0E;&#x81F4;&#x9700;&#x8981;&#x540C;&#x6642;&#x522A;&#x9664; log &#x5305;&#x5C0E;&#x5165;&#x8072;&#x660E;, &#x5426;&#x5247;, &#x7DE8;&#x8B6F;&#x5668;&#x5C07;&#x6703;&#x767C;&#x9F63;&#x4E00;&#x500B;&#x932F;&#x8AA4;. &#x5728;&#x9019;&#x7A2E;&#x60C5;&#x6CC1;&#x4E0B;, &#x6211;&#x5011;&#x9700;&#x8981;&#x5C07;&#x4E0D;&#x5FC5;&#x8981;&#x7684;&#x5C0E;&#x5165;&#x522A;&#x9664;&#x6216;&#x8A3B;&#x91CB;&#x6389;.</p>
<p>&#x4E0D;&#x904E;&#x6709;&#x66F4;&#x597D;&#x7684;&#x89E3;&#x6C7A;&#x65B9;&#x6848;, &#x6211;&#x5011;&#x53EF;&#x4EE5;&#x4F7F;&#x7528; golang.org/x/tools/cmd/goimports &#x5DE5;&#x5177;, &#x5B83;&#x53EF;&#x4EE5;&#x6839;&#x64DA;&#x9700;&#x8981;&#x81EA;&#x52D5;&#x6DFB;&#x52A0;&#x6216;&#x522A;&#x9664;&#x5C0E;&#x5165;&#x7684;&#x5305;; &#x8A31;&#x591A;&#x7DE8;&#x8F2F;&#x5668;&#x90FD;&#x53EF;&#x4EE5;&#x96C6;&#x6210; goimports &#x5DE5;&#x5177;, &#x7136;&#x5F8C;&#x5728;&#x4FDD;&#x5B58;&#x6587;&#x4EF6;&#x7684;&#x6642;&#x5019;&#x81EA;&#x52D5;&#x5141;&#x8A31;&#x5B83;. &#x985E;&#x4F3C;&#x7684;&#x9084;&#x6709; gofmt &#x5DE5;&#x5177;, &#x53EF;&#x4EE5;&#x7528;&#x4F86;&#x683C;&#x5F0F;&#x5316;Go&#x6E90;&#x6587;&#x4EF6;.</p>
<p><strong>&#x7DF4;&#x7FD2; 2.2:</strong> &#x5BEB;&#x4E00;&#x500B;&#x901A;&#x7528;&#x7684;&#x55AE;&#x4F4D;&#x8F49;&#x63DB;&#x7A0B;&#x5E8F;, &#x7528;&#x985E;&#x4F3C; cf &#x7A0B;&#x5E8F;&#x7684;&#x65B9;&#x5F0F;&#x5F9E;&#x547D;&#x4EE4;&#x884C;&#x8B80;&#x53D6;&#x53C3;&#x6578;, &#x5982;&#x679C;&#x7F3A;&#x7701;&#x7684;&#x8A71;&#x5247;&#x662F;&#x5F9E;&#x6A19;&#x6E96;&#x8F38;&#x5165;&#x8B80;&#x53D6;&#x53C3;&#x6578;, &#x7136;&#x5F8C;&#x505A;&#x985E;&#x4F3C; Celsius &#x548C; Fahrenheit &#x7684;&#x8F49;&#x63DB;,
&#x9577;&#x5EA6;&#x55AE;&#x4F4D;&#x5C0D;&#x61C9;&#x82F1;&#x5C3A;&#x548C;&#x7C73;, &#x91CD;&#x91CF;&#x55AE;&#x4F4D;&#x5C0D;&#x61C9;&#x78C5;&#x548C;&#x516C;&#x65A4; &#x7B49;&#x7B49;.</p>
<h3 id="262-&#x5305;&#x7684;&#x521D;&#x59CB;&#x5316;">2.6.2. &#x5305;&#x7684;&#x521D;&#x59CB;&#x5316;</h3>
<p>&#x5305;&#x7684;&#x521D;&#x59CB;&#x5316;&#x9996;&#x5148;&#x662F;&#x89E3;&#x6C7A;&#x5305;&#x7D1A;&#x8B8A;&#x91CF;&#x7684;&#x4F9D;&#x8CF4;&#x9806;&#x5E8F;, &#x7136;&#x5F8C;&#x5B89;&#x88DD;&#x5305;&#x7D1A;&#x8B8A;&#x91CF;&#x8072;&#x660E;&#x9F63;&#x73FE;&#x7684;&#x9806;&#x5E8F;&#x4F9D;&#x6B21;&#x521D;&#x59CB;&#x5316;:</p>
<pre><code class="lang-Go"><span class="hljs-keyword">var</span> a = b + c <span class="hljs-comment">// a &#x7B2C;&#x4E09;&#x500B;&#x521D;&#x59CB;&#x5316;, &#x70BA; 3</span>
<span class="hljs-keyword">var</span> b = f() <span class="hljs-comment">// b &#x7B2C;&#x4E8C;&#x500B;&#x521D;&#x59CB;&#x5316;, &#x70BA; 2, &#x901A;&#x904E;&#x8ABF;&#x7528; f (&#x4F9D;&#x8CF4;c)</span>
<span class="hljs-keyword">var</span> c = <span class="hljs-number">1</span> <span class="hljs-comment">// c &#x7B2C;&#x4E00;&#x500B;&#x521D;&#x59CB;&#x5316;, &#x70BA; 1</span>
<pre><code class="lang-Go"><span class="hljs-keyword">var</span> a = b + c <span class="hljs-comment">// a &#x7B2C;&#x4E09;&#x500B;&#x521D;&#x59CB;&#x5316;, &#x7232; 3</span>
<span class="hljs-keyword">var</span> b = f() <span class="hljs-comment">// b &#x7B2C;&#x4E8C;&#x500B;&#x521D;&#x59CB;&#x5316;, &#x7232; 2, &#x901A;&#x904E;&#x8ABF;&#x7528; f (&#x4F9D;&#x8CF4;c)</span>
<span class="hljs-keyword">var</span> c = <span class="hljs-number">1</span> <span class="hljs-comment">// c &#x7B2C;&#x4E00;&#x500B;&#x521D;&#x59CB;&#x5316;, &#x7232; 1</span>
<span class="hljs-keyword">func</span> f() <span class="hljs-typename">int</span> { <span class="hljs-keyword">return</span> c + <span class="hljs-number">1</span> }
</code></pre>
<p>&#x5982;&#x679C;&#x5305;&#x4E2D;&#x542B;&#x6709;&#x591A;&#x500B; .go &#x6587;&#x4EF6;, &#x5B83;&#x5011;&#x6309;&#x7167;&#x9AEE;&#x7D66;&#x7DE8;&#x8B6F;&#x5668;&#x7684;&#x9806;&#x5E8F;&#x9032;&#x884C;&#x521D;&#x59CB;&#x5316;, Go&#x7684;&#x69CB;&#x5EFA;&#x5DE5;&#x5177;&#x9996;&#x5148;&#x5C07; .go &#x6587;&#x4EF6;&#x6839;&#x64DA;&#x6587;&#x4EF6;&#x540D;&#x6392;&#x5E8F;, &#x7136;&#x5F8C;&#x4F9D;&#x6B21;&#x8ABF;&#x7528;&#x7DE8;&#x8B6F;&#x5668;&#x7DE8;&#x8B6F;.</p>
<p>&#x5C0D;&#x65BC;&#x5728;&#x5305;&#x7D1A;&#x5F46;&#x8072;&#x660E;&#x7684;&#x8B8A;&#x91CF;, &#x5982;&#x679C;&#x6709;&#x521D;&#x59CB;&#x5316;&#x9336;&#x9054;&#x5F0F;&#x5247;&#x7528;&#x9336;&#x9054;&#x5F0F;&#x521D;&#x59CB;&#x5316;, &#x9084;&#x6709;&#x4E00;&#x4E9B;&#x6C92;&#x6709;&#x521D;&#x59CB;&#x5316;&#x9336;&#x9054;&#x5F0F;&#x7684;, &#x4F8B;&#x5982; &#x67D0;&#x4E9B;&#x9336;&#x683C;&#x6578;&#x64DA; &#x521D;&#x59CB;&#x5316;&#x4F75;&#x4E0D;&#x662F;&#x4E00;&#x500B;&#x7C21;&#x55AE;&#x7684;&#x8CE6;&#x503C;&#x904E;&#x7A0B;. &#x5728;&#x9019;&#x7A2E;&#x60C5;&#x6CC1;&#x4E0B;, &#x6211;&#x5011;&#x53EF;&#x4EE5;&#x7528; init &#x521D;&#x59CB;&#x5316;&#x51FD;&#x6578;&#x4F86;&#x7C21;&#x5316;&#x5DE5;&#x4F5C;. &#x6BCF;&#x500B;&#x6587;&#x4EF6;&#x90FD;&#x53EF;&#x4EE5;&#x5305;&#x542B;&#x591A;&#x500B; init &#x521D;&#x59CB;&#x5316;&#x51FD;&#x6578;</p>
<p>&#x5982;&#x679C;&#x5305;&#x4E2D;&#x542B;&#x6709;&#x591A;&#x500B; .go &#x6587;&#x4EF6;, &#x5B83;&#x5011;&#x6309;&#x7167;&#x767C;&#x7D66;&#x7DE8;&#x8B6F;&#x5668;&#x7684;&#x9806;&#x5E8F;&#x9032;&#x884C;&#x521D;&#x59CB;&#x5316;, Go&#x7684;&#x69CB;&#x5EFA;&#x5DE5;&#x5177;&#x9996;&#x5148;&#x5C07; .go &#x6587;&#x4EF6;&#x6839;&#x64DA;&#x6587;&#x4EF6;&#x540D;&#x6392;&#x5E8F;, &#x7136;&#x5F8C;&#x4F9D;&#x6B21;&#x8ABF;&#x7528;&#x7DE8;&#x8B6F;&#x5668;&#x7DE8;&#x8B6F;.</p>
<p>&#x5C0D;&#x65BC;&#x5728;&#x5305;&#x7D1A;&#x522B;&#x8072;&#x660E;&#x7684;&#x8B8A;&#x91CF;, &#x5982;&#x679C;&#x6709;&#x521D;&#x59CB;&#x5316;&#x8868;&#x9054;&#x5F0F;&#x5247;&#x7528;&#x8868;&#x9054;&#x5F0F;&#x521D;&#x59CB;&#x5316;, &#x9084;&#x6709;&#x4E00;&#x4E9B;&#x6C92;&#x6709;&#x521D;&#x59CB;&#x5316;&#x8868;&#x9054;&#x5F0F;&#x7684;, &#x4F8B;&#x5982; &#x67D0;&#x4E9B;&#x8868;&#x683C;&#x6578;&#x64DA; &#x521D;&#x59CB;&#x5316;&#x4F75;&#x4E0D;&#x662F;&#x4E00;&#x500B;&#x7C21;&#x55AE;&#x7684;&#x8CE6;&#x503C;&#x904E;&#x7A0B;. &#x5728;&#x9019;&#x7A2E;&#x60C5;&#x6CC1;&#x4E0B;, &#x6211;&#x5011;&#x53EF;&#x4EE5;&#x7528; init &#x521D;&#x59CB;&#x5316;&#x51FD;&#x6578;&#x4F86;&#x7C21;&#x5316;&#x5DE5;&#x4F5C;. &#x6BCF;&#x500B;&#x6587;&#x4EF6;&#x90FD;&#x53EF;&#x4EE5;&#x5305;&#x542B;&#x591A;&#x500B; init &#x521D;&#x59CB;&#x5316;&#x51FD;&#x6578;</p>
<pre><code class="lang-Go"><span class="hljs-keyword">func</span> init() { <span class="hljs-comment">/* ... */</span> }
</code></pre>
<p>&#x9019;&#x6A23;&#x7684;init&#x521D;&#x59CB;&#x5316;&#x51FD;&#x6578;&#x9664;&#x4E86;&#x4E0D;&#x80FD;&#x88AB;&#x8ABF;&#x7528;&#x6216;&#x5F15;&#x7528;&#x5916;, &#x5176;&#x4ED6;&#x884C;&#x70BA;&#x548C;&#x666E;&#x901A;&#x51FD;&#x6578;&#x985E;&#x4F3C;. &#x5728;&#x6BCF;&#x500B;&#x6587;&#x4EF6;&#x4E2D;&#x7684;init&#x521D;&#x59CB;&#x5316;&#x51FD;&#x6578;, &#x5728;&#x7A0B;&#x5E8F;&#x958B;&#x59CB;&#x57F7;&#x884C;&#x6642;&#x6309;&#x7167;&#x5B83;&#x5011;&#x8072;&#x660E;&#x7684;&#x9806;&#x5E8F;&#x88AB;&#x81EA;&#x52D5;&#x8ABF;&#x7528;.</p>
<p>&#x6BCF;&#x500B;&#x5305;&#x5728;&#x89E3;&#x6C7A;&#x4F9D;&#x8CF4;&#x7684;&#x524D;&#x63D0;&#x4E0B;, &#x4EE5;&#x5C0E;&#x5165;&#x8072;&#x660E;&#x7684;&#x9806;&#x5E8F;&#x521D;&#x59CB;&#x5316;, &#x6BCF;&#x500B;&#x5305;&#x96BB;&#x6703;&#x88AB;&#x521D;&#x59CB;&#x5316;&#x4E00;&#x6B21;. &#x56E0;&#x6B64;, &#x5982;&#x679C;&#x4E00;&#x500B; p &#x5305;&#x5C0E;&#x5165;&#x4E86; q &#x5305;, &#x90A3;&#x9EBC;&#x5728; p &#x5305;&#x521D;&#x59CB;&#x5316;&#x7684;&#x6642;&#x5019;&#x53EF;&#x4EE5;&#x8A8D;&#x70BA; q &#x5305;&#x5DF2;&#x7D93;&#x521D;&#x59CB;&#x5316;&#x904E;&#x4E86;. &#x521D;&#x59CB;&#x5316;&#x5DE5;&#x4F5C;&#x662F;&#x81EA;&#x4E0B;&#x800C;&#x4E0A;&#x9032;&#x884C;&#x7684;, main &#x5305;&#x6700;&#x5F8C;&#x88AB;&#x521D;&#x59CB;&#x5316;. &#x4EE5;&#x9019;&#x7A2E;&#x65B9;&#x5F0F;, &#x78BA;&#x4FDD; &#x5728; main &#x51FD;&#x6578;&#x57F7;&#x884C;&#x4E4B;&#x524D;, &#x6240;&#x6709;&#x7684;&#x5305;&#x90FD;&#x5DF2;&#x7D93;&#x521D;&#x59CB;&#x5316;&#x4E86;.</p>
<p>&#x4E0B;&#x9EAB;&#x7684;&#x4EE3;&#x78BC;&#x5B9A;&#x7FA9;&#x4E86;&#x4E00;&#x500B; PopCount &#x51FD;&#x6578;, &#x7528;&#x65BC;&#x8FD4;&#x8FF4;&#x4E00;&#x500B;&#x6578;&#x5B57;&#x4E2D;&#x542B;&#x4E8C;&#x9032;&#x88FD;1bit&#x7684;&#x500B;&#x6578;. &#x5B83;&#x4F7F;&#x7528; init &#x521D;&#x59CB;&#x5316;&#x51FD;&#x6578;&#x4F86;&#x751F;&#x6210;&#x8F14;&#x52A9;&#x9336;&#x683C; pc, pc &#x9336;&#x683C;&#x7528;&#x65BC;&#x8655;&#x7406;&#x6BCF;&#x500B;8bit&#x5BEC;&#x5EA6;&#x7684;&#x6578;&#x5B57;&#x542B;&#x4E8C;&#x9032;&#x88FD;&#x7684;1bit&#x7684;&#x500B;&#x6578;, &#x9019;&#x6A23;&#x7684;&#x8A71;&#x5728;&#x8655;&#x7406;64bit&#x5BEC;&#x5EA6;&#x7684;&#x6578;&#x5B57;&#x6642;&#x5C31;&#x6C92;&#x6709;&#x5FC5;&#x8981;&#x5FAA;&#x74B0;64&#x6B21;, &#x96BB;&#x9700;&#x8981;8&#x6B21;&#x67FB;&#x9336;&#x5C31;&#x53EF;&#x4EE5;&#x4E86;. (&#x9019;&#x4F75;&#x4E0D;&#x662F;&#x6700;&#x5FEB;&#x7684;&#x7D71;&#x8A08;1bit&#x6578;&#x76EE;&#x7684;&#x7B97;&#x6CD5;, &#x4F46;&#x662F;&#x4ED6;&#x53EF;&#x4EE5;&#x65B9;&#x4FBF;&#x6F14;&#x793A;init&#x51FD;&#x6578;&#x7684;&#x7528;&#x6CD5;, &#x4F75;&#x4E14;&#x6F14;&#x793A;&#x4E86;&#x5982;&#x679C;&#x9810;&#x751F;&#x6210;&#x8F14;&#x52A9;&#x9336;&#x683C;, &#x9019;&#x662F;&#x7DE8;&#x7A0B;&#x4E2D;&#x5E38;&#x7528;&#x7684;&#x6280;&#x672E;.)</p>
<p>&#x9019;&#x6A23;&#x7684;init&#x521D;&#x59CB;&#x5316;&#x51FD;&#x6578;&#x9664;&#x4E86;&#x4E0D;&#x80FD;&#x88AB;&#x8ABF;&#x7528;&#x6216;&#x5F15;&#x7528;&#x5916;, &#x5176;&#x4ED6;&#x884C;&#x7232;&#x548C;&#x666E;&#x901A;&#x51FD;&#x6578;&#x985E;&#x4F3C;. &#x5728;&#x6BCF;&#x500B;&#x6587;&#x4EF6;&#x4E2D;&#x7684;init&#x521D;&#x59CB;&#x5316;&#x51FD;&#x6578;, &#x5728;&#x7A0B;&#x5E8F;&#x958B;&#x59CB;&#x57F7;&#x884C;&#x6642;&#x6309;&#x7167;&#x5B83;&#x5011;&#x8072;&#x660E;&#x7684;&#x9806;&#x5E8F;&#x88AB;&#x81EA;&#x52D5;&#x8ABF;&#x7528;.</p>
<p>&#x6BCF;&#x500B;&#x5305;&#x5728;&#x89E3;&#x6C7A;&#x4F9D;&#x8CF4;&#x7684;&#x524D;&#x63D0;&#x4E0B;, &#x4EE5;&#x5C0E;&#x5165;&#x8072;&#x660E;&#x7684;&#x9806;&#x5E8F;&#x521D;&#x59CB;&#x5316;, &#x6BCF;&#x500B;&#x5305;&#x96BB;&#x6703;&#x88AB;&#x521D;&#x59CB;&#x5316;&#x4E00;&#x6B21;. &#x56E0;&#x6B64;, &#x5982;&#x679C;&#x4E00;&#x500B; p &#x5305;&#x5C0E;&#x5165;&#x4E86; q &#x5305;, &#x90A3;&#x9EBD;&#x5728; p &#x5305;&#x521D;&#x59CB;&#x5316;&#x7684;&#x6642;&#x5019;&#x53EF;&#x4EE5;&#x8A8D;&#x7232; q &#x5305;&#x5DF2;&#x7D93;&#x521D;&#x59CB;&#x5316;&#x904E;&#x4E86;. &#x521D;&#x59CB;&#x5316;&#x5DE5;&#x4F5C;&#x662F;&#x81EA;&#x4E0B;&#x800C;&#x4E0A;&#x9032;&#x884C;&#x7684;, main &#x5305;&#x6700;&#x5F8C;&#x88AB;&#x521D;&#x59CB;&#x5316;. &#x4EE5;&#x9019;&#x7A2E;&#x65B9;&#x5F0F;, &#x78BA;&#x4FDD; &#x5728; main &#x51FD;&#x6578;&#x57F7;&#x884C;&#x4E4B;&#x524D;, &#x6240;&#x6709;&#x7684;&#x5305;&#x90FD;&#x5DF2;&#x7D93;&#x521D;&#x59CB;&#x5316;&#x4E86;.</p>
<p>&#x4E0B;&#x9762;&#x7684;&#x4EE3;&#x78BC;&#x5B9A;&#x7FA9;&#x4E86;&#x4E00;&#x500B; PopCount &#x51FD;&#x6578;, &#x7528;&#x65BC;&#x8FD4;&#x8FF4;&#x4E00;&#x500B;&#x6578;&#x5B57;&#x4E2D;&#x542B;&#x4E8C;&#x9032;&#x88FD;1bit&#x7684;&#x500B;&#x6578;. &#x5B83;&#x4F7F;&#x7528; init &#x521D;&#x59CB;&#x5316;&#x51FD;&#x6578;&#x4F86;&#x751F;&#x6210;&#x8F14;&#x52A9;&#x8868;&#x683C; pc, pc &#x8868;&#x683C;&#x7528;&#x65BC;&#x8655;&#x7406;&#x6BCF;&#x500B;8bit&#x5BEC;&#x5EA6;&#x7684;&#x6578;&#x5B57;&#x542B;&#x4E8C;&#x9032;&#x88FD;&#x7684;1bit&#x7684;&#x500B;&#x6578;, &#x9019;&#x6A23;&#x7684;&#x8A71;&#x5728;&#x8655;&#x7406;64bit&#x5BEC;&#x5EA6;&#x7684;&#x6578;&#x5B57;&#x6642;&#x5C31;&#x6C92;&#x6709;&#x5FC5;&#x8981;&#x5FAA;&#x74B0;64&#x6B21;, &#x96BB;&#x9700;&#x8981;8&#x6B21;&#x67FB;&#x8868;&#x5C31;&#x53EF;&#x4EE5;&#x4E86;. (&#x9019;&#x4F75;&#x4E0D;&#x662F;&#x6700;&#x5FEB;&#x7684;&#x7D71;&#x8A08;1bit&#x6578;&#x76EE;&#x7684;&#x7B97;&#x6CD5;, &#x4F46;&#x662F;&#x4ED6;&#x53EF;&#x4EE5;&#x65B9;&#x4FBF;&#x6F14;&#x793A;init&#x51FD;&#x6578;&#x7684;&#x7528;&#x6CD5;, &#x4F75;&#x4E14;&#x6F14;&#x793A;&#x4E86;&#x5982;&#x679C;&#x9810;&#x751F;&#x6210;&#x8F14;&#x52A9;&#x8868;&#x683C;, &#x9019;&#x662F;&#x7DE8;&#x7A0B;&#x4E2D;&#x5E38;&#x7528;&#x7684;&#x6280;&#x8853;.)</p>
<pre><code class="lang-Go">gopl.io/ch2/popcount
<span class="hljs-keyword">package</span> popcount
@@ -2192,9 +2156,9 @@ $ ./cf -40
<pre><code class="lang-Go"><span class="hljs-keyword">for</span> i, _ := <span class="hljs-keyword">range</span> pc {
</code></pre>
<p>&#x6211;&#x5011;&#x5728;&#x4E0B;&#x4E00;&#x7BC0;&#x548C;10.5&#x7BC0;&#x9084;&#x5C07;&#x770B;&#x5230;&#x5176;&#x5B83;&#x4F7F;&#x7528;init&#x51FD;&#x6578;&#x7684;&#x5730;&#x65B9;.</p>
<p><strong>&#x7DF4;&#x7FD2;2.3:</strong> &#x91CD;&#x5BEB; PopCount &#x51FD;&#x6578;, &#x7528;&#x4E00;&#x500B;&#x5FAA;&#x74B0;&#x4EE3;&#x66FF;&#x55AE;&#x4E00;&#x7684;&#x9336;&#x9054;&#x5F0F;. &#x6BD4;&#x8F03;&#x5169;&#x500B;&#x7248;&#x672C;&#x7684;&#x6027;&#x80FD;. (11.4&#x7BC0;&#x5C07;&#x5C55;&#x793A;&#x5982;&#x4F55;&#x7E6B;&#x7D71;&#x5730;&#x6BD4;&#x8F03;&#x5169;&#x500B;&#x4E0D;&#x8855;&#x5BE6;&#x73FE;&#x7684;&#x6027;&#x80FD;.)</p>
<p><strong>&#x7DF4;&#x7FD2;2.4:</strong> &#x7528;&#x79FB;&#x4F4D;&#x7684;&#x7B97;&#x6CD5;&#x91CD;&#x5BEB; PopCount &#x51FD;&#x6578;, &#x6BCF;&#x6B21;&#x6E2C;&#x8A66;&#x6700;&#x53F3;&#x908A;&#x7684;1bit, &#x7136;&#x5F8C;&#x7D71;&#x8A08;&#x7E3D;&#x6578;. &#x6BD4;&#x8F03;&#x548C;&#x67FB;&#x9336;&#x7B97;&#x6CD5;&#x7684;&#x6027;&#x80FD;&#x5DEE;&#x7570;.</p>
<p><strong>&#x7DF4;&#x7FD2;2.5:</strong> &#x9336;&#x9054;&#x5F0F; <code>x&amp;(x-1)</code> &#x7528;&#x65BC;&#x5C07; x &#x7684;&#x6700;&#x4F4E;&#x7684;&#x4E00;&#x500B;1bit&#x4F4D;&#x6E05;&#x96F6;. &#x4F7F;&#x7528;&#x9019;&#x500B;&#x683C;&#x5F0F;&#x91CD;&#x5BEB; PopCount &#x51FD;&#x6578;, &#x7136;&#x5F8C;&#x6BD4;&#x8F03;&#x6027;&#x80FD;.</p>
<p><strong>&#x7DF4;&#x7FD2;2.3:</strong> &#x91CD;&#x5BEB; PopCount &#x51FD;&#x6578;, &#x7528;&#x4E00;&#x500B;&#x5FAA;&#x74B0;&#x4EE3;&#x66FF;&#x55AE;&#x4E00;&#x7684;&#x8868;&#x9054;&#x5F0F;. &#x6BD4;&#x8F03;&#x5169;&#x500B;&#x7248;&#x672C;&#x7684;&#x6027;&#x80FD;. (11.4&#x7BC0;&#x5C07;&#x5C55;&#x793A;&#x5982;&#x4F55;&#x7E6B;&#x7D71;&#x5730;&#x6BD4;&#x8F03;&#x5169;&#x500B;&#x4E0D;&#x540C;&#x5BE6;&#x73FE;&#x7684;&#x6027;&#x80FD;.)</p>
<p><strong>&#x7DF4;&#x7FD2;2.4:</strong> &#x7528;&#x79FB;&#x4F4D;&#x7684;&#x7B97;&#x6CD5;&#x91CD;&#x5BEB; PopCount &#x51FD;&#x6578;, &#x6BCF;&#x6B21;&#x6E2C;&#x8A66;&#x6700;&#x53F3;&#x908A;&#x7684;1bit, &#x7136;&#x5F8C;&#x7D71;&#x8A08;&#x7E3D;&#x6578;. &#x6BD4;&#x8F03;&#x548C;&#x67FB;&#x8868;&#x7B97;&#x6CD5;&#x7684;&#x6027;&#x80FD;&#x5DEE;&#x7570;.</p>
<p><strong>&#x7DF4;&#x7FD2;2.5:</strong> &#x8868;&#x9054;&#x5F0F; <code>x&amp;(x-1)</code> &#x7528;&#x65BC;&#x5C07; x &#x7684;&#x6700;&#x4F4E;&#x7684;&#x4E00;&#x500B;1bit&#x4F4D;&#x6E05;&#x96F6;. &#x4F7F;&#x7528;&#x9019;&#x500B;&#x683C;&#x5F0F;&#x91CD;&#x5BEB; PopCount &#x51FD;&#x6578;, &#x7136;&#x5F8C;&#x6BD4;&#x8F03;&#x6027;&#x80FD;.</p>
</section>

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="Wed Dec 16 2015 10:54:29 GMT+0800 (中国标准时间)">
<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-summary">
@@ -146,7 +146,7 @@
<b>0.5.</b>
</a>
@@ -212,7 +212,7 @@
<b>1.3.</b>
査找重的行
査找重的行
</a>
@@ -227,7 +227,7 @@
<b>1.4.</b>
GIF動
GIF動
</a>
@@ -257,7 +257,7 @@
<b>1.6.</b>
穫取多個URL
穫取多個URL
</a>
@@ -479,7 +479,7 @@
<b>3.3.</b>
</a>
@@ -494,7 +494,7 @@
<b>3.4.</b>
爾型
爾型
</a>
@@ -544,7 +544,7 @@
<b>4.</b>
復閤數據類型
複合數據類型
</a>
@@ -857,7 +857,7 @@
<b>6.2.</b>
基於指對象的方法
基於指對象的方法
</a>
@@ -887,7 +887,7 @@
<b>6.4.</b>
方法值和方法達式
方法值和方法達式
</a>
@@ -953,7 +953,7 @@
<b>7.1.</b>
接口是
接口是
</a>
@@ -1073,7 +1073,7 @@
<b>7.9.</b>
示例: 達式求值
示例: 達式求值
</a>
@@ -1103,7 +1103,7 @@
<b>7.11.</b>
基於類型斷言識錯誤類型
基於類型斷言識錯誤類型
</a>
@@ -1214,7 +1214,7 @@
<b>8.2.</b>
示例: 併的Clock服務
示例: 併的Clock服務
</a>
@@ -1229,7 +1229,7 @@
<b>8.3.</b>
示例: 併的Echo服務
示例: 併的Echo服務
</a>
@@ -1274,7 +1274,7 @@
<b>8.6.</b>
示例: 併的Web爬蟲
示例: 併的Web爬蟲
</a>
@@ -1289,7 +1289,7 @@
<b>8.7.</b>
基於select的多路
基於select的多路
</a>
@@ -1304,7 +1304,7 @@
<b>8.8.</b>
示例: 併的字典遍歷
示例: 併的字典遍歷
</a>
@@ -1319,7 +1319,7 @@
<b>8.9.</b>
的退齣
的退齣
</a>
@@ -1354,7 +1354,7 @@
<b>9.</b>
基於共享變量的併
基於共享變量的併
</a>
@@ -1415,7 +1415,7 @@
<b>9.4.</b>
內存
內存
</a>
@@ -1460,7 +1460,7 @@
<b>9.7.</b>
示例: 併的非阻塞緩存
示例: 併的非阻塞緩存
</a>
@@ -1475,7 +1475,7 @@
<b>9.8.</b>
Goroutines和
Goroutines和
</a>
@@ -1748,7 +1748,7 @@
<b>12.1.</b>
何需要反射?
何需要反射?
</a>
@@ -1793,7 +1793,7 @@
<b>12.4.</b>
示例: 編碼S達式
示例: 編碼S達式
</a>
@@ -1823,7 +1823,7 @@
<b>12.6.</b>
示例: 解碼S達式
示例: 解碼S達式
</a>
@@ -1975,50 +1975,14 @@
</li>
<li class="chapter " data-level="14" data-path="exercise/ex.html">
<a href="../exercise/ex.html">
<i class="fa fa-check"></i>
<b>14.</b>
習題解答
</a>
<ul class="articles">
<li class="chapter " data-level="14.1" data-path="exercise/ex-ch1.html">
<a href="../exercise/ex-ch1.html">
<i class="fa fa-check"></i>
<b>14.1.</b>
第一章 入門
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="15" data-path="errata.html">
<li class="chapter " data-level="14" data-path="errata.html">
<a href="../errata.html">
<i class="fa fa-check"></i>
<b>15.</b>
<b>14.</b>
勘誤
</a>
@@ -2060,13 +2024,13 @@
<section class="normal" id="section-">
<h2 id="27-&#x4F5C;&#x7528;&#x57DF;">2.7. &#x4F5C;&#x7528;&#x57DF;</h2>
<p>&#x4E00;&#x500B;&#x8072;&#x660E;&#x8A9E;&#x53E5;&#x5C07;&#x7A0B;&#x5E8F;&#x4E2D;&#x7684;&#x5BE6;&#x9AD4;&#x548C;&#x4E00;&#x500B;&#x540D;&#x5B57;&#x95DC;&#x806F;, &#x6BD4;&#x5982;&#x4E00;&#x500B;&#x51FD;&#x6578;&#x6216;&#x4E00;&#x500B;&#x8B8A;&#x91CF;. &#x8072;&#x660E;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#x662F;&#x6307;&#x6E90;&#x4EE3;&#x78BC;&#x4E2D;&#x53EF;&#x4EE5;&#x6709;&#x6548;&#x4F7F;&#x7528;&#x9019;&#x500B;&#x540D;&#x5B57;&#x7684;&#x7BC4;&#x570D;.</p>
<p>&#x4E0D;&#x8981;&#x5C07;&#x4F5C;&#x7528;&#x57DF;&#x548C;&#x751F;&#x547D;&#x9031;&#x671F;&#x6DF7;&#x70BA;&#x4E00;&#x8AC7;. &#x8072;&#x660E;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#x5C0D;&#x61C9;&#x7684;&#x662F;&#x4E00;&#x500B;&#x6E90;&#x4EE3;&#x78BC;&#x7684;&#x6587;&#x672C;&#x5340;&#x57DF;; &#x5B83;&#x662F;&#x4E00;&#x500B;&#x7DE8;&#x8B6F;&#x6642;&#x7684;&#x5C6C;&#x6027;. &#x4E00;&#x500B;&#x8B8A;&#x91CF;&#x7684;&#x751F;&#x547D;&#x9031;&#x671F;&#x662F;&#x7A0B;&#x5E8F;&#x904B;&#x884C;&#x6642;&#x8B8A;&#x91CF;&#x5B58;&#x5728;&#x7684;&#x6709;&#x6548;&#x6642;&#x9593;&#x6BB5;, &#x5728;&#x6B64;&#x6642;&#x9593;&#x5340;&#x57DF;&#x5167;&#x5B58;&#x5B83;&#x53EF;&#x4EE5;&#x88AB;&#x7A0B;&#x5E8F;&#x7684;&#x5176;&#x4ED6;&#x90E8;&#x5206;&#x5F15;&#x7528;. &#x662F;&#x4E00;&#x500B;&#x904B;&#x884C;&#x6642;&#x7684;&#x6982;&#x5538;.</p>
<p>&#x8A9E;&#x6CD5;&#x584A;&#x662F;&#x7531;&#x82B1;&#x62EC;&#x5F27;&#x6240;&#x5305;&#x542B;&#x7684;&#x4E00;&#x7E6B;&#x5217;&#x8A9E;&#x53E5;, &#x5C31;&#x50CF;&#x51FD;&#x6578;&#x9AD4;&#x6216;&#x5FAA;&#x74B0;&#x9AD4;&#x90A3;&#x6A23;. &#x8A9E;&#x6CD5;&#x584A;&#x5167;&#x90E8;&#x8072;&#x660E;&#x7684;&#x540D;&#x5B57;&#x662F;&#x7121;&#x6CD5;&#x88AB;&#x5916;&#x90E8;&#x8A9E;&#x6CD5;&#x584A;&#x8A2A;&#x554F;&#x7684;. &#x8A9E;&#x6CD5;&#x6C7A;&#x5B9A;&#x4E86;&#x5167;&#x90E8;&#x8072;&#x660E;&#x7684;&#x540D;&#x5B57;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#x7BC4;&#x570D;. &#x6211;&#x5011;&#x53EF;&#x4EE5;&#x9019;&#x6A23;&#x7406;&#x89E3;, &#x8A9E;&#x6CD5;&#x584A;&#x53EF;&#x4EE5;&#x5305;&#x542B;&#x5176;&#x4ED6;&#x985E;&#x4F3C;&#x7D44;&#x6279;&#x91CF;&#x8072;&#x660E;&#x7B49;&#x6C92;&#x6709;&#x7528;&#x82B1;&#x62EC;&#x5F27;&#x5305;&#x542B;&#x7684;&#x4EE3;&#x78BC;, &#x6211;&#x5011;&#x7A31;&#x4E4B;&#x70BA;&#x8A5E;&#x6ED9;&#x584A;. &#x6709;&#x4E00;&#x500B;&#x8A9E;&#x6CD5;&#x6C7A;&#x70BA;&#x6574;&#x500B;&#x6E90;&#x4EE3;&#x78BC;, &#x7A31;&#x70BA;&#x5168;&#x4FB7;&#x584A;; &#x7136;&#x5F8C;&#x662F;&#x6BCF;&#x500B;&#x5305;&#x7684;&#x8A9E;&#x6CD5;&#x6C7A;; &#x6BCF;&#x500B; for, if &#x548C; switch &#x8A9E;&#x53E5;&#x7684;&#x8A9E;&#x6CD5;&#x6C7A;; &#x6BCF;&#x500B; switch &#x6216; select &#x5206;&#x652F;&#x7684; &#x8A9E;&#x6CD5;&#x6C7A;; &#x7576;&#x7136;&#x4E5F;&#x5305;&#x542B;&#x986F;&#x793A;&#x7DE8;&#x5BEB;&#x7684;&#x8A9E;&#x6CD5;&#x584A;(&#x82B1;&#x62EC;&#x5F27;&#x5305;&#x542B;).</p>
<p>&#x8072;&#x660E;&#x7684;&#x8A5E;&#x6CD5;&#x57DF;&#x6C7A;&#x5B9A;&#x4E86;&#x4F5C;&#x7528;&#x57DF;&#x7BC4;&#x570D;&#x662F;&#x5927;&#x9084;&#x662F;&#x5C0F;. &#x5167;&#x7F6E;&#x7684;&#x985E;&#x578B;, &#x51FD;&#x6578;&#x548C;&#x5E38;&#x91CF;, &#x6BD4;&#x5982; int, len &#x548C; true &#x7B49;&#x662F;&#x5728;&#x5168;&#x4FB7;&#x4F5C;&#x7528;&#x57DF;&#x7684;, &#x53EF;&#x4EE5;&#x5728;&#x6574;&#x500B;&#x7A0B;&#x5E8F;&#x4E2D;&#x76F4;&#x63A5;&#x4F7F;&#x7528;. &#x4EFB;&#x4F55;&#x5728;&#x5728;&#x51FD;&#x6578;&#x5916;&#x90E8;(&#x4E5F;&#x5C31;&#x662F;&#x5305;&#x7D1A;&#x4F5C;&#x7528;&#x57DF;)&#x8072;&#x660E;&#x7684;&#x540D;&#x5B57;&#x53EF;&#x4EE5;&#x5728;&#x8855;&#x4E00;&#x500B;&#x5305;&#x7684;&#x4EFB;&#x4F55;Go&#x6587;&#x4EF6;&#x8A2A;&#x554F;. &#x5C0E;&#x5165;&#x7684;&#x5305;, &#x4F8B;&#x5982; tempconv &#x5C0E;&#x5165;&#x7684; fmt &#x5305;, &#x5247;&#x662F;&#x5C0D;&#x61C9;&#x6587;&#x4EF6;&#x7D1A;&#x7684;&#x4F5C;&#x7528;&#x57DF;, &#x56E0;&#x6B64;&#x96BB;&#x80FD;&#x5728;&#x7576;&#x524D;&#x7684;&#x6587;&#x4EF6;&#x4E2D;&#x8A2A;&#x554F; fmt &#x5305;, &#x7576;&#x524D;&#x5305;&#x7684;&#x5176;&#x5B83;&#x6587;&#x4EF6;&#x7121;&#x6CD5;&#x8A2A;&#x554F;&#x7576;&#x524D;&#x6587;&#x4EF6;&#x5C0E;&#x5165;&#x7684;&#x5305;. &#x9084;&#x6709;&#x8A31;&#x591A;&#x8072;&#x660E;, &#x6BD4;&#x5982; tempconv.CToF &#x51FD;&#x6578;&#x4E2D;&#x7684;&#x8B8A;&#x91CF; c, &#x5247;&#x662F;&#x4FB7;&#x90E8;&#x4F5C;&#x7528;&#x57DF;&#x7684;, &#x5B83;&#x96BB;&#x80FD;&#x5728;&#x51FD;&#x6578;&#x5167;&#x90E8;(&#x751A;&#x81F3;&#x96BB;&#x80FD;&#x662F;&#x67D0;&#x4E9B;&#x90E8;&#x5206;)&#x8A2A;&#x554F;.</p>
<p>&#x63A7;&#x88FD;&#x6D41;&#x6A19;&#x7C3D;, &#x4F8B;&#x5982; break, continue &#x6216; goto &#x5F8C;&#x9EAB;&#x8DDF;&#x7740;&#x7684;&#x90A3;&#x7A2E;&#x6A19;&#x7C3D;, &#x5247;&#x662F;&#x51FD;&#x6578;&#x7D1A;&#x7684;&#x4F5C;&#x7528;&#x57DF;.</p>
<p>&#x4E00;&#x500B;&#x7A0B;&#x5E8F;&#x53EF;&#x80FD;&#x5305;&#x542B;&#x591A;&#x500B;&#x8855;&#x540D;&#x7684;&#x8072;&#x660E;, &#x96BB;&#x6709;&#x5B83;&#x5011;&#x5728;&#x4E0D;&#x8855;&#x7684;&#x8A5E;&#x6CD5;&#x57DF;&#x5C31;&#x6C92;&#x6709;&#x95DC;&#x7E6B;. &#x4F8B;&#x5982;, &#x4F60;&#x53EF;&#x4EE5;&#x8072;&#x660E;&#x4E00;&#x500B;&#x4FB7;&#x90E8;&#x8B8A;&#x91CF;, &#x548C;&#x5305;&#x7D1A;&#x7684;&#x8B8A;&#x91CF;&#x8855;&#x540D;. &#x6216;&#x8005;&#x662F; 2.3.3&#x7BC0;&#x7684;&#x90A3;&#x6A23;, &#x4F60;&#x53EF;&#x4EE5;&#x5C07;&#x4E00;&#x500B;&#x51FD;&#x6578;&#x53C3;&#x6578;&#x7684;&#x540D;&#x5B57;&#x8072;&#x660E;&#x70BA; new, &#x96D6;&#x7136;&#x5167;&#x7F6E;&#x7684;new&#x662F;&#x5168;&#x4FB7;&#x4F5C;&#x7528;&#x57DF;&#x7684;. &#x4F46;&#x662F;&#x7269;&#x6975;&#x5FC5;&#x53CD;, &#x5982;&#x679C;&#x6FEB;&#x7528;&#x91CD;&#x540D;&#x7684;&#x7279;&#x6027;, &#x53EF;&#x80FD;&#x5C0E;&#x7DFB;&#x7A0B;&#x5E8F;&#x5F88;&#x96E3;&#x95B1;&#x8B80;.</p>
<p>&#x7576;&#x7DE8;&#x8B6F;&#x5668;&#x9047;&#x5230;&#x4E00;&#x500B;&#x540D;&#x5B57;&#x5F15;&#x7528;, &#x5B83;&#x770B;&#x8D77;&#x4F86;&#x50CF;&#x4E00;&#x500B;&#x8072;&#x660E;, &#x5B83;&#x9996;&#x5148;&#x5F9E;&#x6700;&#x5167;&#x5C64;&#x7684;&#x8A5E;&#x6CD5;&#x57DF;&#x66CF;&#x5168;&#x4FB7;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#x67FB;&#x627E;. &#x5982;&#x679C;&#x67FB;&#x627E;&#x5931;&#x6557;, &#x5247;&#x5831;&#x544A; &quot;&#x672A;&#x8072;&#x660E;&#x7684;&#x540D;&#x5B57;&quot; &#x9019;&#x6A23;&#x7684;&#x932F;&#x8AA4;. &#x5982;&#x679C;&#x540D;&#x5B57;&#x5728;&#x5167;&#x90E8;&#x548C;&#x5916;&#x90E8;&#x7684;&#x584A;&#x5206;&#x5F46;&#x8072;&#x660E;, &#x5247;&#x5167;&#x90E8;&#x584A;&#x7684;&#x8072;&#x660E;&#x9996;&#x5148;&#x88AB;&#x627E;&#x5230;. &#x5728;&#x9019;&#x7A2E;&#x60C5;&#x6CC1;&#x4E0B;, &#x5167;&#x90E8;&#x8072;&#x660E;&#x5C4F;&#x853D;&#x4E86;&#x5916;&#x90E8;&#x8855;&#x540D;&#x7684;&#x8072;&#x660E;, &#x8B93;&#x5916;&#x90E8;&#x7684;&#x8072;&#x660E;&#x7121;&#x6CD5;&#x88AB;&#x8A2A;&#x554F;:</p>
<p>&#x4E00;&#x500B;&#x8072;&#x660E;&#x8A9E;&#x53E5;&#x5C07;&#x7A0B;&#x5E8F;&#x4E2D;&#x7684;&#x5BE6;&#x9AD4;&#x548C;&#x4E00;&#x500B;&#x540D;&#x5B57;&#x95DC;&#x806F;, &#x6BD4;&#x5982;&#x4E00;&#x500B;&#x51FD;&#x6578;&#x6216;&#x4E00;&#x500B;&#x8B8A;&#x91CF;. &#x8072;&#x660E;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#x662F;&#x6307;&#x6E90;&#x4EE3;&#x78BC;&#x4E2D;&#x53EF;&#x4EE5;&#x6709;&#x6548;&#x4F7F;&#x7528;&#x9019;&#x500B;&#x540D;&#x5B57;&#x7684;&#x8303;&#x570D;.</p>
<p>&#x4E0D;&#x8981;&#x5C07;&#x4F5C;&#x7528;&#x57DF;&#x548C;&#x751F;&#x547D;&#x9031;&#x671F;&#x6DF7;&#x7232;&#x4E00;&#x8AC7;. &#x8072;&#x660E;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#x5C0D;&#x61C9;&#x7684;&#x662F;&#x4E00;&#x500B;&#x6E90;&#x4EE3;&#x78BC;&#x7684;&#x6587;&#x672C;&#x5340;&#x57DF;; &#x5B83;&#x662F;&#x4E00;&#x500B;&#x7DE8;&#x8B6F;&#x6642;&#x7684;&#x5C6C;&#x6027;. &#x4E00;&#x500B;&#x8B8A;&#x91CF;&#x7684;&#x751F;&#x547D;&#x9031;&#x671F;&#x662F;&#x7A0B;&#x5E8F;&#x904B;&#x884C;&#x6642;&#x8B8A;&#x91CF;&#x5B58;&#x5728;&#x7684;&#x6709;&#x6548;&#x6642;&#x9593;&#x6BB5;, &#x5728;&#x6B64;&#x6642;&#x9593;&#x5340;&#x57DF;&#x5167;&#x5B58;&#x5B83;&#x53EF;&#x4EE5;&#x88AB;&#x7A0B;&#x5E8F;&#x7684;&#x5176;&#x4ED6;&#x90E8;&#x5206;&#x5F15;&#x7528;. &#x662F;&#x4E00;&#x500B;&#x904B;&#x884C;&#x6642;&#x7684;&#x6982;&#x5FF5;.</p>
<p>&#x8A9E;&#x6CD5;&#x584A;&#x662F;&#x7531;&#x82B1;&#x62EC;&#x5F27;&#x6240;&#x5305;&#x542B;&#x7684;&#x4E00;&#x7E6B;&#x5217;&#x8A9E;&#x53E5;, &#x5C31;&#x50CF;&#x51FD;&#x6578;&#x9AD4;&#x6216;&#x5FAA;&#x74B0;&#x9AD4;&#x90A3;&#x6A23;. &#x8A9E;&#x6CD5;&#x584A;&#x5167;&#x90E8;&#x8072;&#x660E;&#x7684;&#x540D;&#x5B57;&#x662F;&#x7121;&#x6CD5;&#x88AB;&#x5916;&#x90E8;&#x8A9E;&#x6CD5;&#x584A;&#x8A2A;&#x554F;&#x7684;. &#x8A9E;&#x6CD5;&#x6C7A;&#x5B9A;&#x4E86;&#x5167;&#x90E8;&#x8072;&#x660E;&#x7684;&#x540D;&#x5B57;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#x8303;&#x570D;. &#x6211;&#x5011;&#x53EF;&#x4EE5;&#x9019;&#x6A23;&#x7406;&#x89E3;, &#x8A9E;&#x6CD5;&#x584A;&#x53EF;&#x4EE5;&#x5305;&#x542B;&#x5176;&#x4ED6;&#x985E;&#x4F3C;&#x7D44;&#x6279;&#x91CF;&#x8072;&#x660E;&#x7B49;&#x6C92;&#x6709;&#x7528;&#x82B1;&#x62EC;&#x5F27;&#x5305;&#x542B;&#x7684;&#x4EE3;&#x78BC;, &#x6211;&#x5011;&#x7A31;&#x4E4B;&#x7232;&#x8A5E;&#x6ED9;&#x584A;. &#x6709;&#x4E00;&#x500B;&#x8A9E;&#x6CD5;&#x6C7A;&#x7232;&#x6574;&#x500B;&#x6E90;&#x4EE3;&#x78BC;, &#x7A31;&#x7232;&#x5168;&#x5C40;&#x584A;; &#x7136;&#x5F8C;&#x662F;&#x6BCF;&#x500B;&#x5305;&#x7684;&#x8A9E;&#x6CD5;&#x6C7A;; &#x6BCF;&#x500B; for, if &#x548C; switch &#x8A9E;&#x53E5;&#x7684;&#x8A9E;&#x6CD5;&#x6C7A;; &#x6BCF;&#x500B; switch &#x6216; select &#x5206;&#x652F;&#x7684; &#x8A9E;&#x6CD5;&#x6C7A;; &#x7576;&#x7136;&#x4E5F;&#x5305;&#x542B;&#x986F;&#x793A;&#x7DE8;&#x5BEB;&#x7684;&#x8A9E;&#x6CD5;&#x584A;(&#x82B1;&#x62EC;&#x5F27;&#x5305;&#x542B;).</p>
<p>&#x8072;&#x660E;&#x7684;&#x8A5E;&#x6CD5;&#x57DF;&#x6C7A;&#x5B9A;&#x4E86;&#x4F5C;&#x7528;&#x57DF;&#x8303;&#x570D;&#x662F;&#x5927;&#x9084;&#x662F;&#x5C0F;. &#x5167;&#x7F6E;&#x7684;&#x985E;&#x578B;, &#x51FD;&#x6578;&#x548C;&#x5E38;&#x91CF;, &#x6BD4;&#x5982; int, len &#x548C; true &#x7B49;&#x662F;&#x5728;&#x5168;&#x5C40;&#x4F5C;&#x7528;&#x57DF;&#x7684;, &#x53EF;&#x4EE5;&#x5728;&#x6574;&#x500B;&#x7A0B;&#x5E8F;&#x4E2D;&#x76F4;&#x63A5;&#x4F7F;&#x7528;. &#x4EFB;&#x4F55;&#x5728;&#x5728;&#x51FD;&#x6578;&#x5916;&#x90E8;(&#x4E5F;&#x5C31;&#x662F;&#x5305;&#x7D1A;&#x4F5C;&#x7528;&#x57DF;)&#x8072;&#x660E;&#x7684;&#x540D;&#x5B57;&#x53EF;&#x4EE5;&#x5728;&#x540C;&#x4E00;&#x500B;&#x5305;&#x7684;&#x4EFB;&#x4F55;Go&#x6587;&#x4EF6;&#x8A2A;&#x554F;. &#x5C0E;&#x5165;&#x7684;&#x5305;, &#x4F8B;&#x5982; tempconv &#x5C0E;&#x5165;&#x7684; fmt &#x5305;, &#x5247;&#x662F;&#x5C0D;&#x61C9;&#x6587;&#x4EF6;&#x7D1A;&#x7684;&#x4F5C;&#x7528;&#x57DF;, &#x56E0;&#x6B64;&#x96BB;&#x80FD;&#x5728;&#x7576;&#x524D;&#x7684;&#x6587;&#x4EF6;&#x4E2D;&#x8A2A;&#x554F; fmt &#x5305;, &#x7576;&#x524D;&#x5305;&#x7684;&#x5176;&#x5B83;&#x6587;&#x4EF6;&#x7121;&#x6CD5;&#x8A2A;&#x554F;&#x7576;&#x524D;&#x6587;&#x4EF6;&#x5C0E;&#x5165;&#x7684;&#x5305;. &#x9084;&#x6709;&#x8A31;&#x591A;&#x8072;&#x660E;, &#x6BD4;&#x5982; tempconv.CToF &#x51FD;&#x6578;&#x4E2D;&#x7684;&#x8B8A;&#x91CF; c, &#x5247;&#x662F;&#x5C40;&#x90E8;&#x4F5C;&#x7528;&#x57DF;&#x7684;, &#x5B83;&#x96BB;&#x80FD;&#x5728;&#x51FD;&#x6578;&#x5167;&#x90E8;(&#x751A;&#x81F3;&#x96BB;&#x80FD;&#x662F;&#x67D0;&#x4E9B;&#x90E8;&#x5206;)&#x8A2A;&#x554F;.</p>
<p>&#x63A7;&#x88FD;&#x6D41;&#x6A19;&#x7C64;, &#x4F8B;&#x5982; break, continue &#x6216; goto &#x5F8C;&#x9762;&#x8DDF;&#x7740;&#x7684;&#x90A3;&#x7A2E;&#x6A19;&#x7C64;, &#x5247;&#x662F;&#x51FD;&#x6578;&#x7D1A;&#x7684;&#x4F5C;&#x7528;&#x57DF;.</p>
<p>&#x4E00;&#x500B;&#x7A0B;&#x5E8F;&#x53EF;&#x80FD;&#x5305;&#x542B;&#x591A;&#x500B;&#x540C;&#x540D;&#x7684;&#x8072;&#x660E;, &#x96BB;&#x6709;&#x5B83;&#x5011;&#x5728;&#x4E0D;&#x540C;&#x7684;&#x8A5E;&#x6CD5;&#x57DF;&#x5C31;&#x6C92;&#x6709;&#x95DC;&#x7E6B;. &#x4F8B;&#x5982;, &#x4F60;&#x53EF;&#x4EE5;&#x8072;&#x660E;&#x4E00;&#x500B;&#x5C40;&#x90E8;&#x8B8A;&#x91CF;, &#x548C;&#x5305;&#x7D1A;&#x7684;&#x8B8A;&#x91CF;&#x540C;&#x540D;. &#x6216;&#x8005;&#x662F; 2.3.3&#x7BC0;&#x7684;&#x90A3;&#x6A23;, &#x4F60;&#x53EF;&#x4EE5;&#x5C07;&#x4E00;&#x500B;&#x51FD;&#x6578;&#x53C3;&#x6578;&#x7684;&#x540D;&#x5B57;&#x8072;&#x660E;&#x7232; new, &#x96D6;&#x7136;&#x5167;&#x7F6E;&#x7684;new&#x662F;&#x5168;&#x5C40;&#x4F5C;&#x7528;&#x57DF;&#x7684;. &#x4F46;&#x662F;&#x7269;&#x6975;&#x5FC5;&#x53CD;, &#x5982;&#x679C;&#x6FEB;&#x7528;&#x91CD;&#x540D;&#x7684;&#x7279;&#x6027;, &#x53EF;&#x80FD;&#x5C0E;&#x81F4;&#x7A0B;&#x5E8F;&#x5F88;&#x96E3;&#x95B2;&#x8B80;.</p>
<p>&#x7576;&#x7DE8;&#x8B6F;&#x5668;&#x9047;&#x5230;&#x4E00;&#x500B;&#x540D;&#x5B57;&#x5F15;&#x7528;, &#x5B83;&#x770B;&#x8D77;&#x4F86;&#x50CF;&#x4E00;&#x500B;&#x8072;&#x660E;, &#x5B83;&#x9996;&#x5148;&#x5F9E;&#x6700;&#x5167;&#x5C64;&#x7684;&#x8A5E;&#x6CD5;&#x57DF;&#x5411;&#x5168;&#x5C40;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#x67FB;&#x627E;. &#x5982;&#x679C;&#x67FB;&#x627E;&#x5931;&#x6557;, &#x5247;&#x5831;&#x544A; &quot;&#x672A;&#x8072;&#x660E;&#x7684;&#x540D;&#x5B57;&quot; &#x9019;&#x6A23;&#x7684;&#x932F;&#x8AA4;. &#x5982;&#x679C;&#x540D;&#x5B57;&#x5728;&#x5167;&#x90E8;&#x548C;&#x5916;&#x90E8;&#x7684;&#x584A;&#x5206;&#x522B;&#x8072;&#x660E;, &#x5247;&#x5167;&#x90E8;&#x584A;&#x7684;&#x8072;&#x660E;&#x9996;&#x5148;&#x88AB;&#x627E;&#x5230;. &#x5728;&#x9019;&#x7A2E;&#x60C5;&#x6CC1;&#x4E0B;, &#x5167;&#x90E8;&#x8072;&#x660E;&#x5C4F;&#x853D;&#x4E86;&#x5916;&#x90E8;&#x540C;&#x540D;&#x7684;&#x8072;&#x660E;, &#x8B93;&#x5916;&#x90E8;&#x7684;&#x8072;&#x660E;&#x7121;&#x6CD5;&#x88AB;&#x8A2A;&#x554F;:</p>
<pre><code class="lang-Go"><span class="hljs-keyword">func</span> f() {}
<span class="hljs-keyword">var</span> g = <span class="hljs-string">&quot;g&quot;</span>
@@ -2078,7 +2042,7 @@
fmt.Println(h) <span class="hljs-comment">// compile error: undefined: h</span>
}
</code></pre>
<p>&#x5728;&#x51FD;&#x6578;&#x4E2D;&#x8A5E;&#x6CD5;&#x57DF;&#x53EF;&#x4EE5;&#x6DF1;&#x5EA6;&#x5D4C;&#x5957;, &#x56E0;&#x6B64;&#x5167;&#x90E8;&#x7684;&#x4E00;&#x500B;&#x8072;&#x660E;&#x53EF;&#x80FD;&#x5C4F;&#x853D;&#x5916;&#x90E8;&#x7684;&#x8072;&#x660E;. &#x9084;&#x6709;&#x8A31;&#x591A;&#x584A;&#x662F;if&#x6216;for&#x7B49;&#x63A7;&#x88FD;&#x6D41;&#x8A9E;&#x53E5;&#x69CB;&#x9020;&#x7684;. &#x4E0B;&#x9EAB;&#x7684;&#x4EE3;&#x78BC;&#x6709;&#x4E09;&#x500B;&#x4E0D;&#x8855;&#x7684;&#x8B8A;&#x91CF;x, &#x56E0;&#x70BA;&#x5B83;&#x5011;&#x662F;&#x5B9A;&#x7FA9;&#x5728;&#x4E0D;&#x8855;&#x7684;&#x8A5E;&#x6CD5;&#x57DF;&#x7684;&#x539F;&#x56E0;. (&#x9019;&#x500B;&#x4F8B;&#x5B50;&#x96BB;&#x662F;&#x70BA;&#x4E86;&#x6F14;&#x793A;&#x4F5C;&#x7528;&#x57DF;&#x898F;&#x5247;, &#x4F46;&#x4E0D;&#x662F;&#x597D;&#x7684;&#x7DE8;&#x7A0B;&#x98A8;&#x683C;.)</p>
<p>&#x5728;&#x51FD;&#x6578;&#x4E2D;&#x8A5E;&#x6CD5;&#x57DF;&#x53EF;&#x4EE5;&#x6DF1;&#x5EA6;&#x5D4C;&#x5957;, &#x56E0;&#x6B64;&#x5167;&#x90E8;&#x7684;&#x4E00;&#x500B;&#x8072;&#x660E;&#x53EF;&#x80FD;&#x5C4F;&#x853D;&#x5916;&#x90E8;&#x7684;&#x8072;&#x660E;. &#x9084;&#x6709;&#x8A31;&#x591A;&#x584A;&#x662F;if&#x6216;for&#x7B49;&#x63A7;&#x88FD;&#x6D41;&#x8A9E;&#x53E5;&#x69CB;&#x9020;&#x7684;. &#x4E0B;&#x9762;&#x7684;&#x4EE3;&#x78BC;&#x6709;&#x4E09;&#x500B;&#x4E0D;&#x540C;&#x7684;&#x8B8A;&#x91CF;x, &#x56E0;&#x7232;&#x5B83;&#x5011;&#x662F;&#x5B9A;&#x7FA9;&#x5728;&#x4E0D;&#x540C;&#x7684;&#x8A5E;&#x6CD5;&#x57DF;&#x7684;&#x539F;&#x56E0;. (&#x9019;&#x500B;&#x4F8B;&#x5B50;&#x96BB;&#x662F;&#x7232;&#x4E86;&#x6F14;&#x793A;&#x4F5C;&#x7528;&#x57DF;&#x898F;&#x5247;, &#x4F46;&#x4E0D;&#x662F;&#x597D;&#x7684;&#x7DE8;&#x7A0B;&#x98A8;&#x683C;.)</p>
<pre><code class="lang-Go"><span class="hljs-keyword">func</span> main() {
x := <span class="hljs-string">&quot;hello!&quot;</span>
<span class="hljs-keyword">for</span> i := <span class="hljs-number">0</span>; i &lt; <span class="hljs-built_in">len</span>(x); i++ {
@@ -2090,9 +2054,9 @@
}
}
</code></pre>
<p>&#x5728; <code>x[i]</code> &#x548C; <code>x + &apos;A&apos; - &apos;a&apos;</code> &#x8072;&#x660E;&#x521D;&#x59CB;&#x5316;&#x7684;&#x9336;&#x9054;&#x5F0F;&#x4E2D;&#x90FD;&#x5F15;&#x7528;&#x4E86;&#x5916;&#x90E8;&#x4F5C;&#x7528;&#x57DF;&#x8072;&#x660E;&#x7684;x&#x8B8A;&#x91CF;, &#x7A0D;&#x5F8C;&#x6211;&#x5011;&#x6703;&#x89E3;&#x91CB;&#x9019;&#x500B;. (&#x8A3B;&#x610F;, &#x5F8C;&#x9EAB;&#x7684;&#x9336;&#x9054;&#x5F0F;&#x548C;unicode.ToUpper&#x4F75;&#x4E0D;&#x7B49;&#x50F9;.)</p>
<p>&#x6B63;&#x5982;&#x4E0A;&#x9EAB;&#x6240;&#x793A;, &#x4F75;&#x4E0D;&#x662F;&#x6240;&#x6709;&#x7684;&#x8A5E;&#x6CD5;&#x57DF;&#x90FD;&#x986F;&#x793A;&#x5730;&#x5C0D;&#x61C9;&#x5230;&#x7531;&#x82B1;&#x62EC;&#x5F27;&#x5305;&#x542B;&#x7684;&#x8A9E;&#x53E5;; &#x9084;&#x6709;&#x4E00;&#x4E9B;&#x96B1;&#x542B;&#x7684;&#x898F;&#x5247;. &#x4E0A;&#x9EAB;&#x7684;for&#x8A9E;&#x53E5;&#x5275;&#x5EFA;&#x4E86;&#x5169;&#x500B;&#x8A5E;&#x6CD5;&#x57DF;: &#x82B1;&#x62EC;&#x5F27;&#x5305;&#x542B;&#x7684;&#x662F;&#x986F;&#x5F0F;&#x7684;&#x90E8;&#x5206;&#x662F;for&#x7684;&#x5FAA;&#x74B0;&#x9AD4;, &#x53E6;&#x5916;&#x4E00;&#x500B;&#x96B1;&#x5F0F;&#x7684;&#x90E8;&#x5206;&#x5247;&#x662F;&#x5FAA;&#x74B0;&#x7684;&#x521D;&#x59CB;&#x5316;&#x90E8;&#x5206;, &#x6BD4;&#x5982;&#x7528;&#x65BC;&#x8FED;&#x4EE3;&#x8B8A;&#x91CF; i &#x7684;&#x521D;&#x59CB;&#x5316;. &#x96B1;&#x5F0F;&#x7684;&#x90E8;&#x5206;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#x9084;&#x5305;&#x542B;&#x689D;&#x4EF6;&#x6E2C;&#x8A66;&#x90E8;&#x5206;&#x548C;&#x5FAA;&#x74B0;&#x5F8C;&#x7684;&#x8FED;&#x4EE3;&#x90E8;&#x5206;(i++), &#x7576;&#x7136;&#x4E5F;&#x5305;&#x542B;&#x5FAA;&#x74B0;&#x9AD4;.</p>
<p>&#x4E0B;&#x9EAB;&#x7684;&#x4F8B;&#x5B50;&#x8855;&#x6A23;&#x6709;&#x4E09;&#x500B;&#x4E0D;&#x8855;&#x7684;x&#x8B8A;&#x91CF;, &#x6BCF;&#x500B;&#x8072;&#x660E;&#x5728;&#x4E0D;&#x8855;&#x7684;&#x584A;, &#x4E00;&#x500B;&#x5728;&#x51FD;&#x6578;&#x9AD4;&#x584A;, &#x4E00;&#x500B;&#x5728;for&#x8A9E;&#x53E5;&#x584A;, &#x4E00;&#x500B;&#x5728;&#x5FAA;&#x74B0;&#x9AD4;&#x584A;; &#x96BB;&#x6709;&#x5169;&#x500B;&#x584A;&#x662F;&#x986F;&#x5F0F;&#x5275;&#x5EFA;&#x7684;:</p>
<p>&#x5728; <code>x[i]</code> &#x548C; <code>x + &apos;A&apos; - &apos;a&apos;</code> &#x8072;&#x660E;&#x521D;&#x59CB;&#x5316;&#x7684;&#x8868;&#x9054;&#x5F0F;&#x4E2D;&#x90FD;&#x5F15;&#x7528;&#x4E86;&#x5916;&#x90E8;&#x4F5C;&#x7528;&#x57DF;&#x8072;&#x660E;&#x7684;x&#x8B8A;&#x91CF;, &#x7A0D;&#x5F8C;&#x6211;&#x5011;&#x6703;&#x89E3;&#x91CB;&#x9019;&#x500B;. (&#x8A3B;&#x610F;, &#x5F8C;&#x9762;&#x7684;&#x8868;&#x9054;&#x5F0F;&#x548C;unicode.ToUpper&#x4F75;&#x4E0D;&#x7B49;&#x50F9;.)</p>
<p>&#x6B63;&#x5982;&#x4E0A;&#x9762;&#x6240;&#x793A;, &#x4F75;&#x4E0D;&#x662F;&#x6240;&#x6709;&#x7684;&#x8A5E;&#x6CD5;&#x57DF;&#x90FD;&#x986F;&#x793A;&#x5730;&#x5C0D;&#x61C9;&#x5230;&#x7531;&#x82B1;&#x62EC;&#x5F27;&#x5305;&#x542B;&#x7684;&#x8A9E;&#x53E5;; &#x9084;&#x6709;&#x4E00;&#x4E9B;&#x96B1;&#x542B;&#x7684;&#x898F;&#x5247;. &#x4E0A;&#x9762;&#x7684;for&#x8A9E;&#x53E5;&#x5275;&#x5EFA;&#x4E86;&#x5169;&#x500B;&#x8A5E;&#x6CD5;&#x57DF;: &#x82B1;&#x62EC;&#x5F27;&#x5305;&#x542B;&#x7684;&#x662F;&#x986F;&#x5F0F;&#x7684;&#x90E8;&#x5206;&#x662F;for&#x7684;&#x5FAA;&#x74B0;&#x9AD4;, &#x53E6;&#x5916;&#x4E00;&#x500B;&#x96B1;&#x5F0F;&#x7684;&#x90E8;&#x5206;&#x5247;&#x662F;&#x5FAA;&#x74B0;&#x7684;&#x521D;&#x59CB;&#x5316;&#x90E8;&#x5206;, &#x6BD4;&#x5982;&#x7528;&#x65BC;&#x8FED;&#x4EE3;&#x8B8A;&#x91CF; i &#x7684;&#x521D;&#x59CB;&#x5316;. &#x96B1;&#x5F0F;&#x7684;&#x90E8;&#x5206;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#x9084;&#x5305;&#x542B;&#x689D;&#x4EF6;&#x6E2C;&#x8A66;&#x90E8;&#x5206;&#x548C;&#x5FAA;&#x74B0;&#x5F8C;&#x7684;&#x8FED;&#x4EE3;&#x90E8;&#x5206;(i++), &#x7576;&#x7136;&#x4E5F;&#x5305;&#x542B;&#x5FAA;&#x74B0;&#x9AD4;.</p>
<p>&#x4E0B;&#x9762;&#x7684;&#x4F8B;&#x5B50;&#x540C;&#x6A23;&#x6709;&#x4E09;&#x500B;&#x4E0D;&#x540C;&#x7684;x&#x8B8A;&#x91CF;, &#x6BCF;&#x500B;&#x8072;&#x660E;&#x5728;&#x4E0D;&#x540C;&#x7684;&#x584A;, &#x4E00;&#x500B;&#x5728;&#x51FD;&#x6578;&#x9AD4;&#x584A;, &#x4E00;&#x500B;&#x5728;for&#x8A9E;&#x53E5;&#x584A;, &#x4E00;&#x500B;&#x5728;&#x5FAA;&#x74B0;&#x9AD4;&#x584A;; &#x96BB;&#x6709;&#x5169;&#x500B;&#x584A;&#x662F;&#x986F;&#x5F0F;&#x5275;&#x5EFA;&#x7684;:</p>
<pre><code class="lang-Go"><span class="hljs-keyword">func</span> main() {
x := <span class="hljs-string">&quot;hello&quot;</span>
<span class="hljs-keyword">for</span> _, x := <span class="hljs-keyword">range</span> x {
@@ -2101,7 +2065,7 @@
}
}
</code></pre>
<p>&#x548C;&#x5F7F;&#x5982;&#x5FAA;&#x74B0;&#x985E;&#x4F3C;, if&#x548C;switch&#x8A9E;&#x53E5;&#x4E5F;&#x6703;&#x5728;&#x689D;&#x4EF6;&#x90E8;&#x5206;&#x5275;&#x5EFA;&#x96B1;&#x5F0F;&#x584A;, &#x9084;&#x6709;&#x5B83;&#x5011;&#x5C0D;&#x61C9;&#x7684;&#x57F7;&#x884C;&#x9AD4;&#x584A;. &#x4E0B;&#x9EAB;&#x7684; if-else &#x6E2C;&#x8A66;&#x93C8;&#x6F14;&#x793A;&#x7684; x &#x548C; y &#x7684;&#x4F5C;&#x7528;&#x57DF;&#x7BC4;&#x570D;:</p>
<p>&#x548C;&#x5F7F;&#x5982;&#x5FAA;&#x74B0;&#x985E;&#x4F3C;, if&#x548C;switch&#x8A9E;&#x53E5;&#x4E5F;&#x6703;&#x5728;&#x689D;&#x4EF6;&#x90E8;&#x5206;&#x5275;&#x5EFA;&#x96B1;&#x5F0F;&#x584A;, &#x9084;&#x6709;&#x5B83;&#x5011;&#x5C0D;&#x61C9;&#x7684;&#x57F7;&#x884C;&#x9AD4;&#x584A;. &#x4E0B;&#x9762;&#x7684; if-else &#x6E2C;&#x8A66;&#x93C8;&#x6F14;&#x793A;&#x7684; x &#x548C; y &#x7684;&#x4F5C;&#x7528;&#x57DF;&#x8303;&#x570D;:</p>
<pre><code class="lang-Go"><span class="hljs-keyword">if</span> x := f(); x == <span class="hljs-number">0</span> {
fmt.Println(x)
} <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> y := g(x); x == y {
@@ -2111,8 +2075,8 @@
}
fmt.Println(x, y) <span class="hljs-comment">// compile error: x and y are not visible here</span>
</code></pre>
<p>&#x7B2C;&#x4E8C;&#x500B;if&#x8A9E;&#x53E5;&#x5D4C;&#x5957;&#x5728;&#x7B2C;&#x4E00;&#x500B;&#x5167;&#x90E8;, &#x56E0;&#x6B64;&#x4E00;&#x500B;if&#x8A9E;&#x53E5;&#x689D;&#x4EF6;&#x584A;&#x8072;&#x660E;&#x7684;&#x8B8A;&#x91CF;&#x5728;&#x7B2C;&#x4E8C;&#x500B;if&#x4E2D;&#x4E5F;&#x53EF;&#x4EE5;&#x8A2A;&#x554F;. switch&#x8A9E;&#x53E5;&#x7684;&#x6BCF;&#x500B;&#x5206;&#x652F;&#x4E5F;&#x6709;&#x985E;&#x4F3C;&#x7684;&#x898F;&#x5247;: &#x689D;&#x4EF6;&#x90E8;&#x5206;&#x70BA;&#x4E00;&#x500B;&#x96B1;&#x5F0F;&#x584A;, &#x7136;&#x5F8C;&#x6BCF;&#x500B;&#x662F;&#x6BCF;&#x500B;&#x5206;&#x652F;&#x7684;&#x4E3B;&#x9AD4;&#x584A;.</p>
<p>&#x5728;&#x5305;&#x7D1A;&#x5F46;, &#x8072;&#x660E;&#x7684;&#x9806;&#x5E8F;&#x4F75;&#x4E0D;&#x6703;&#x5F71;&#x97FF;&#x4F5C;&#x7528;&#x57DF;&#x7BC4;&#x570D;, &#x56E0;&#x6B64;&#x4E00;&#x500B;&#x5148;&#x8072;&#x660E;&#x7684;&#x53EF;&#x4EE5;&#x5F15;&#x7528;&#x5B83;&#x81EA;&#x8EAB;&#x6216;&#x8005;&#x662F;&#x5F15;&#x7528;&#x5F8C;&#x9EAB;&#x7684;&#x4E00;&#x500B;&#x8072;&#x660E;, &#x9019;&#x53EF;&#x4EE5;&#x8B93;&#x6211;&#x5011;&#x5B9A;&#x7FA9;&#x4E00;&#x4E9B;&#x76F8;&#x4E92;&#x5D4C;&#x5957;&#x6216;&#x905E;&#x6B78;&#x7684;&#x985E;&#x578B;&#x6216;&#x51FD;&#x6578;. &#x4F46;&#x662F;&#x5982;&#x679C;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#x6216;&#x5E38;&#x91CF;&#x905E;&#x6B78;&#x5F15;&#x7528;&#x4E86;&#x81EA;&#x8EAB;, &#x5247;&#x6703;&#x7522;&#x751F;&#x7DE8;&#x8B6F;&#x932F;&#x8AA4;.</p>
<p>&#x7B2C;&#x4E8C;&#x500B;if&#x8A9E;&#x53E5;&#x5D4C;&#x5957;&#x5728;&#x7B2C;&#x4E00;&#x500B;&#x5167;&#x90E8;, &#x56E0;&#x6B64;&#x4E00;&#x500B;if&#x8A9E;&#x53E5;&#x689D;&#x4EF6;&#x584A;&#x8072;&#x660E;&#x7684;&#x8B8A;&#x91CF;&#x5728;&#x7B2C;&#x4E8C;&#x500B;if&#x4E2D;&#x4E5F;&#x53EF;&#x4EE5;&#x8A2A;&#x554F;. switch&#x8A9E;&#x53E5;&#x7684;&#x6BCF;&#x500B;&#x5206;&#x652F;&#x4E5F;&#x6709;&#x985E;&#x4F3C;&#x7684;&#x898F;&#x5247;: &#x689D;&#x4EF6;&#x90E8;&#x5206;&#x7232;&#x4E00;&#x500B;&#x96B1;&#x5F0F;&#x584A;, &#x7136;&#x5F8C;&#x6BCF;&#x500B;&#x662F;&#x6BCF;&#x500B;&#x5206;&#x652F;&#x7684;&#x4E3B;&#x9AD4;&#x584A;.</p>
<p>&#x5728;&#x5305;&#x7D1A;&#x522B;, &#x8072;&#x660E;&#x7684;&#x9806;&#x5E8F;&#x4F75;&#x4E0D;&#x6703;&#x5F71;&#x97FF;&#x4F5C;&#x7528;&#x57DF;&#x8303;&#x570D;, &#x56E0;&#x6B64;&#x4E00;&#x500B;&#x5148;&#x8072;&#x660E;&#x7684;&#x53EF;&#x4EE5;&#x5F15;&#x7528;&#x5B83;&#x81EA;&#x8EAB;&#x6216;&#x8005;&#x662F;&#x5F15;&#x7528;&#x5F8C;&#x9762;&#x7684;&#x4E00;&#x500B;&#x8072;&#x660E;, &#x9019;&#x53EF;&#x4EE5;&#x8B93;&#x6211;&#x5011;&#x5B9A;&#x7FA9;&#x4E00;&#x4E9B;&#x76F8;&#x4E92;&#x5D4C;&#x5957;&#x6216;&#x905E;&#x6B78;&#x7684;&#x985E;&#x578B;&#x6216;&#x51FD;&#x6578;. &#x4F46;&#x662F;&#x5982;&#x679C;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#x6216;&#x5E38;&#x91CF;&#x905E;&#x6B78;&#x5F15;&#x7528;&#x4E86;&#x81EA;&#x8EAB;, &#x5247;&#x6703;&#x7523;&#x751F;&#x7DE8;&#x8B6F;&#x932F;&#x8AA4;.</p>
<p>&#x5728;&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#x4E2D;:</p>
<pre><code class="lang-Go"><span class="hljs-keyword">if</span> f, err := os.Open(fname); err != <span class="hljs-constant">nil</span> { <span class="hljs-comment">// compile error: unused: f</span>
<span class="hljs-keyword">return</span> err
@@ -2120,8 +2084,8 @@ fmt.Println(x, y) <span class="hljs-comment">// compile error: x and y are not v
f.ReadByte() <span class="hljs-comment">// compile error: undefined f</span>
f.Close() <span class="hljs-comment">// compile error: undefined f</span>
</code></pre>
<p>&#x8B8A;&#x91CF; f &#x7684;&#x4F5C;&#x7528;&#x57DF;&#x96BB;&#x6709;if&#x8A9E;&#x53E5;&#x5167;, &#x56E0;&#x6B64;&#x5F8C;&#x9EAB;&#x7684;&#x8A9E;&#x53E5;&#x5C07;&#x7121;&#x6CD5;&#x5F15;&#x5165;&#x5B83;, &#x5C07;&#x5C0E;&#x7DFB;&#x7DE8;&#x8B6F;&#x932F;&#x8AA4;. &#x4F60;&#x53EF;&#x80FD;&#x6703;&#x6536;&#x5230;&#x4E00;&#x500B;&#x4FB7;&#x90E8;&#x8B8A;&#x91CF;f&#x6C92;&#x6709;&#x8072;&#x660E;&#x7684;&#x932F;&#x8AA4;&#x63D0;&#x793A;, &#x5177;&#x9AD4;&#x932F;&#x8AA4;&#x4FE1;&#x606F;&#x4F9D;&#x8CF4;&#x7DE8;&#x8B6F;&#x5668;&#x7684;&#x5BE6;&#x73FE;.</p>
<p>&#x901A;&#x5E38;&#x9700;&#x8981;&#x5728;if&#x4E4B;&#x524D;&#x8072;&#x660E;&#x8B8A;&#x91CF;, &#x9019;&#x6A23;&#x53EF;&#x4EE5;&#x78BA;&#x4FDD;&#x5F8C;&#x9EAB;&#x7684;&#x8A9E;&#x53E5;&#x4F9D;&#x7136;&#x53EF;&#x4EE5;&#x8A2A;&#x554F;&#x8B8A;&#x91CF;:</p>
<p>&#x8B8A;&#x91CF; f &#x7684;&#x4F5C;&#x7528;&#x57DF;&#x96BB;&#x6709;if&#x8A9E;&#x53E5;&#x5167;, &#x56E0;&#x6B64;&#x5F8C;&#x9762;&#x7684;&#x8A9E;&#x53E5;&#x5C07;&#x7121;&#x6CD5;&#x5F15;&#x5165;&#x5B83;, &#x5C07;&#x5C0E;&#x81F4;&#x7DE8;&#x8B6F;&#x932F;&#x8AA4;. &#x4F60;&#x53EF;&#x80FD;&#x6703;&#x6536;&#x5230;&#x4E00;&#x500B;&#x5C40;&#x90E8;&#x8B8A;&#x91CF;f&#x6C92;&#x6709;&#x8072;&#x660E;&#x7684;&#x932F;&#x8AA4;&#x63D0;&#x793A;, &#x5177;&#x9AD4;&#x932F;&#x8AA4;&#x4FE1;&#x606F;&#x4F9D;&#x8CF4;&#x7DE8;&#x8B6F;&#x5668;&#x7684;&#x5BE6;&#x73FE;.</p>
<p>&#x901A;&#x5E38;&#x9700;&#x8981;&#x5728;if&#x4E4B;&#x524D;&#x8072;&#x660E;&#x8B8A;&#x91CF;, &#x9019;&#x6A23;&#x53EF;&#x4EE5;&#x78BA;&#x4FDD;&#x5F8C;&#x9762;&#x7684;&#x8A9E;&#x53E5;&#x4F9D;&#x7136;&#x53EF;&#x4EE5;&#x8A2A;&#x554F;&#x8B8A;&#x91CF;:</p>
<pre><code class="lang-Go">f, err := os.Open(fname)
<span class="hljs-keyword">if</span> err != <span class="hljs-constant">nil</span> {
<span class="hljs-keyword">return</span> err
@@ -2139,7 +2103,7 @@ f.Close()
}
</code></pre>
<p>&#x4F46;&#x9019;&#x4E0D;&#x662F;Go&#x63A8;&#x85A6;&#x7684;&#x505A;&#x6CD5;, Go&#x7684;&#x7FD2;&#x6163;&#x662F;&#x5728;if&#x4E2D;&#x8655;&#x7406;&#x932F;&#x8AA4;&#x7136;&#x5F8C;&#x76F4;&#x63A5;&#x8FD4;&#x8FF4;, &#x9019;&#x6A23;&#x53EF;&#x4EE5;&#x78BA;&#x4FDD;&#x6B63;&#x5E38;&#x6210;&#x529F;&#x57F7;&#x884C;&#x7684;&#x8A9E;&#x53E5;&#x4E0D;&#x9700;&#x8981;&#x4EE3;&#x78BC;&#x7E2E;&#x9032;.</p>
<p>&#x8981;&#x7279;&#x5F46;&#x8A3B;&#x610F;&#x77ED;&#x7684;&#x8B8A;&#x91CF;&#x8072;&#x660E;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#x7BC4;&#x570D;, &#x8003;&#x616E;&#x4E0B;&#x9EAB;&#x7684;&#x7A0B;&#x5E8F;, &#x5B83;&#x7684;&#x76EE;&#x7684;&#x662F;&#x7A6B;&#x53D6;&#x7576;&#x524D;&#x7684;&#x5DE5;&#x4F5C;&#x76EE;&#x5F54;&#x7136;&#x5F8C;&#x4FDD;&#x5B58;&#x5230;&#x4E00;&#x500B;&#x5305;&#x7D1A;&#x7684;&#x8B8A;&#x91CF;&#x4E2D;. &#x9019;&#x53EF;&#x4EE5;&#x901A;&#x904E;&#x76F4;&#x63A5;&#x8ABF;&#x7528; os.Getwd &#x5B8C;&#x6210;, &#x4F46;&#x662F;&#x5C07;&#x9019;&#x500B;&#x5F9E;&#x4E3B;&#x908F;&#x8F2F;&#x4E2D;&#x5206;&#x96E2;&#x9F63;&#x4F86;&#x53EF;&#x80FD;&#x6703;&#x66F4;&#x597D;, &#x7279;&#x5F46;&#x662F;&#x5728;&#x9700;&#x8981;&#x8655;&#x7406;&#x932F;&#x8AA4;&#x7684;&#x6642;&#x5019;. &#x51FD;&#x6578; log.Fatalf &#x6253;&#x5370;&#x4FE1;&#x606F;, &#x7136;&#x5F8C;&#x8ABF;&#x7528; os.Exit(1) &#x7D42;&#x6B62;&#x7A0B;&#x5E8F;.</p>
<p>&#x8981;&#x7279;&#x522B;&#x8A3B;&#x610F;&#x77ED;&#x7684;&#x8B8A;&#x91CF;&#x8072;&#x660E;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#x8303;&#x570D;, &#x8003;&#x616E;&#x4E0B;&#x9762;&#x7684;&#x7A0B;&#x5E8F;, &#x5B83;&#x7684;&#x76EE;&#x7684;&#x662F;&#x7A6B;&#x53D6;&#x7576;&#x524D;&#x7684;&#x5DE5;&#x4F5C;&#x76EE;&#x9332;&#x7136;&#x5F8C;&#x4FDD;&#x5B58;&#x5230;&#x4E00;&#x500B;&#x5305;&#x7D1A;&#x7684;&#x8B8A;&#x91CF;&#x4E2D;. &#x9019;&#x53EF;&#x4EE5;&#x901A;&#x904E;&#x76F4;&#x63A5;&#x8ABF;&#x7528; os.Getwd &#x5B8C;&#x6210;, &#x4F46;&#x662F;&#x5C07;&#x9019;&#x500B;&#x5F9E;&#x4E3B;&#x908F;&#x8F2F;&#x4E2D;&#x5206;&#x96E2;&#x9F63;&#x4F86;&#x53EF;&#x80FD;&#x6703;&#x66F4;&#x597D;, &#x7279;&#x522B;&#x662F;&#x5728;&#x9700;&#x8981;&#x8655;&#x7406;&#x932F;&#x8AA4;&#x7684;&#x6642;&#x5019;. &#x51FD;&#x6578; log.Fatalf &#x6253;&#x5370;&#x4FE1;&#x606F;, &#x7136;&#x5F8C;&#x8ABF;&#x7528; os.Exit(1) &#x7D42;&#x6B62;&#x7A0B;&#x5E8F;.</p>
<pre><code class="lang-Go"><span class="hljs-keyword">var</span> cwd <span class="hljs-typename">string</span>
<span class="hljs-keyword">func</span> init() {
@@ -2149,8 +2113,8 @@ f.Close()
}
}
</code></pre>
<p>&#x96D6;&#x7136;cwd&#x5728;&#x5916;&#x90E8;&#x5DF2;&#x7D93;&#x8072;&#x660E;&#x904E;, &#x4F46;&#x662F; <code>:=</code> &#x8A9E;&#x53E5;&#x9084;&#x662F;&#x5C07; cwd &#x548C; err &#x91CD;&#x65B0;&#x8072;&#x660E;&#x70BA;&#x4FB7;&#x90E8;&#x8B8A;&#x91CF;. &#x5167;&#x90E8;&#x8072;&#x660E;&#x7684; cwd &#x5C07;&#x5C4F;&#x853D;&#x5916;&#x90E8;&#x7684;&#x8072;&#x660E;, &#x56E0;&#x6B64;&#x4E0A;&#x9EAB;&#x7684;&#x4EE3;&#x78BC;&#x4F75;&#x4E0D;&#x6703;&#x66F4;&#x65B0;&#x5305;&#x7D1A;&#x8072;&#x660E;&#x7684; cwd &#x8B8A;&#x91CF;.</p>
<p>&#x7576;&#x524D;&#x7684;&#x7DE8;&#x8B6F;&#x5668;&#x5C07;&#x6AA2;&#x6E2C;&#x5230;&#x4FB7;&#x90E8;&#x8072;&#x660E;&#x7684;cwd&#x4F75;&#x6C92;&#x6709;&#x672C;&#x4F7F;&#x7528;, &#x7136;&#x5F8C;&#x5831;&#x544A;&#x9019;&#x53EF;&#x80FD;&#x662F;&#x4E00;&#x500B;&#x932F;&#x8AA4;, &#x4F46;&#x662F;&#x9019;&#x7A2E;&#x6AA2;&#x6E2C;&#x4F75;&#x4E0D;&#x53EF;&#x9760;. &#x4E00;&#x4E9B;&#x5C0F;&#x7684;&#x4EE3;&#x78BC;&#x8B8A;&#x66F4;, &#x4F8B;&#x5982;&#x589E;&#x52A0;&#x4E00;&#x500B;&#x4FB7;&#x90E8;cwd&#x7684;&#x6253;&#x5370;&#x8A9E;&#x53E5;, &#x5C31;&#x53EF;&#x80FD;&#x5C0E;&#x7DFB;&#x9019;&#x7A2E;&#x6AA2;&#x6E2C;&#x5931;&#x6548;.</p>
<p>&#x96D6;&#x7136;cwd&#x5728;&#x5916;&#x90E8;&#x5DF2;&#x7D93;&#x8072;&#x660E;&#x904E;, &#x4F46;&#x662F; <code>:=</code> &#x8A9E;&#x53E5;&#x9084;&#x662F;&#x5C07; cwd &#x548C; err &#x91CD;&#x65B0;&#x8072;&#x660E;&#x7232;&#x5C40;&#x90E8;&#x8B8A;&#x91CF;. &#x5167;&#x90E8;&#x8072;&#x660E;&#x7684; cwd &#x5C07;&#x5C4F;&#x853D;&#x5916;&#x90E8;&#x7684;&#x8072;&#x660E;, &#x56E0;&#x6B64;&#x4E0A;&#x9762;&#x7684;&#x4EE3;&#x78BC;&#x4F75;&#x4E0D;&#x6703;&#x66F4;&#x65B0;&#x5305;&#x7D1A;&#x8072;&#x660E;&#x7684; cwd &#x8B8A;&#x91CF;.</p>
<p>&#x7576;&#x524D;&#x7684;&#x7DE8;&#x8B6F;&#x5668;&#x5C07;&#x6AA2;&#x6E2C;&#x5230;&#x5C40;&#x90E8;&#x8072;&#x660E;&#x7684;cwd&#x4F75;&#x6C92;&#x6709;&#x672C;&#x4F7F;&#x7528;, &#x7136;&#x5F8C;&#x5831;&#x544A;&#x9019;&#x53EF;&#x80FD;&#x662F;&#x4E00;&#x500B;&#x932F;&#x8AA4;, &#x4F46;&#x662F;&#x9019;&#x7A2E;&#x6AA2;&#x6E2C;&#x4F75;&#x4E0D;&#x53EF;&#x9760;. &#x4E00;&#x4E9B;&#x5C0F;&#x7684;&#x4EE3;&#x78BC;&#x8B8A;&#x66F4;, &#x4F8B;&#x5982;&#x589E;&#x52A0;&#x4E00;&#x500B;&#x5C40;&#x90E8;cwd&#x7684;&#x6253;&#x5370;&#x8A9E;&#x53E5;, &#x5C31;&#x53EF;&#x80FD;&#x5C0E;&#x81F4;&#x9019;&#x7A2E;&#x6AA2;&#x6E2C;&#x5931;&#x6548;.</p>
<pre><code class="lang-Go"><span class="hljs-keyword">var</span> cwd <span class="hljs-typename">string</span>
<span class="hljs-keyword">func</span> init() {
@@ -2161,7 +2125,7 @@ f.Close()
log.Printf(<span class="hljs-string">&quot;Working directory = %s&quot;</span>, cwd)
}
</code></pre>
<p>&#x5168;&#x4FB7;&#x7684;cwd&#x8B8A;&#x91CF;&#x4F9D;&#x7136;&#x662F;&#x6C92;&#x6709;&#x88AB;&#x6B63;&#x78BA;&#x521D;&#x59CB;&#x5316;&#x7684;, &#x800C;&#x4E14;&#x770B;&#x4F3C;&#x6B63;&#x5E38;&#x7684;&#x65E5;&#x8A8C;&#x8F38;&#x9F63;&#x66F4;&#x662F;&#x9019;&#x500B;BUG&#x66F4;&#x52A0;&#x96B1;&#x6666;.</p>
<p>&#x5168;&#x5C40;&#x7684;cwd&#x8B8A;&#x91CF;&#x4F9D;&#x7136;&#x662F;&#x6C92;&#x6709;&#x88AB;&#x6B63;&#x78BA;&#x521D;&#x59CB;&#x5316;&#x7684;, &#x800C;&#x4E14;&#x770B;&#x4F3C;&#x6B63;&#x5E38;&#x7684;&#x65E5;&#x8A8C;&#x8F38;&#x9F63;&#x66F4;&#x662F;&#x9019;&#x500B;BUG&#x66F4;&#x52A0;&#x96B1;&#x6666;.</p>
<p>&#x6709;&#x8A31;&#x591A;&#x65B9;&#x5F0F;&#x53EF;&#x4EE5;&#x907F;&#x514D;&#x9F63;&#x73FE;&#x985E;&#x4F3C;&#x6F5B;&#x5728;&#x7684;&#x554F;&#x984C;. &#x6700;&#x76F4;&#x63A5;&#x7684;&#x662F;&#x901A;&#x904E;&#x55AE;&#x7368;&#x8072;&#x660E;err&#x8B8A;&#x91CF;, &#x4F86;&#x907F;&#x514D;&#x4F7F;&#x7528; <code>:=</code> &#x7684;&#x7C21;&#x77ED;&#x8072;&#x660E;&#x65B9;&#x5F0F;:</p>
<pre><code class="lang-Go"><span class="hljs-keyword">var</span> cwd <span class="hljs-typename">string</span>
@@ -2173,8 +2137,8 @@ f.Close()
}
}
</code></pre>
<p>&#x6211;&#x5011;&#x5DF2;&#x7D93;&#x770B;&#x5230;&#x5305;, &#x6587;&#x4EF6;, &#x8072;&#x660E;&#x548C;&#x8A9E;&#x53E5;&#x5982;&#x4F55;&#x4F86;&#x9336;&#x9054;&#x4E00;&#x500B;&#x7A0B;&#x5E8F;&#x7D50;&#x69CB;. &#x5728;&#x4E0B;&#x9EAB;&#x7684;&#x5169;&#x500B;&#x7AE0;&#x7BC0;, &#x6211;&#x5011;&#x5C07;&#x63A2;&#x8A0E;&#x6578;&#x64DA;&#x7684;&#x7D50;&#x69CB;.</p>
<p><strong>&#x8B6F;&#x8A3B;: &#x672C;&#x7AE0;&#x7684;&#x8A5E;&#x6CD5;&#x57DF;&#x548C;&#x4F5C;&#x7528;&#x57DF;&#x6982;&#x5538;&#x6709;&#x4E9B;&#x6DF7;&#x6DC6;, &#x9700;&#x8981;&#x91CD;&#x8B6F;&#x4E00;&#x904D;.</strong></p>
<p>&#x6211;&#x5011;&#x5DF2;&#x7D93;&#x770B;&#x5230;&#x5305;, &#x6587;&#x4EF6;, &#x8072;&#x660E;&#x548C;&#x8A9E;&#x53E5;&#x5982;&#x4F55;&#x4F86;&#x8868;&#x9054;&#x4E00;&#x500B;&#x7A0B;&#x5E8F;&#x7D50;&#x69CB;. &#x5728;&#x4E0B;&#x9762;&#x7684;&#x5169;&#x500B;&#x7AE0;&#x7BC0;, &#x6211;&#x5011;&#x5C07;&#x63A2;&#x8A0E;&#x6578;&#x64DA;&#x7684;&#x7D50;&#x69CB;.</p>
<p><strong>&#x8B6F;&#x8A3B;: &#x672C;&#x7AE0;&#x7684;&#x8A5E;&#x6CD5;&#x57DF;&#x548C;&#x4F5C;&#x7528;&#x57DF;&#x6982;&#x5FF5;&#x6709;&#x4E9B;&#x6DF7;&#x6DC6;, &#x9700;&#x8981;&#x91CD;&#x8B6F;&#x4E00;&#x904D;.</strong></p>
</section>

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="Wed Dec 16 2015 10:54:29 GMT+0800 (中国标准时间)">
<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-summary">
@@ -146,7 +146,7 @@
<b>0.5.</b>
</a>
@@ -212,7 +212,7 @@
<b>1.3.</b>
査找重的行
査找重的行
</a>
@@ -227,7 +227,7 @@
<b>1.4.</b>
GIF動
GIF動
</a>
@@ -257,7 +257,7 @@
<b>1.6.</b>
穫取多個URL
穫取多個URL
</a>
@@ -479,7 +479,7 @@
<b>3.3.</b>
</a>
@@ -494,7 +494,7 @@
<b>3.4.</b>
爾型
爾型
</a>
@@ -544,7 +544,7 @@
<b>4.</b>
復閤數據類型
複合數據類型
</a>
@@ -857,7 +857,7 @@
<b>6.2.</b>
基於指對象的方法
基於指對象的方法
</a>
@@ -887,7 +887,7 @@
<b>6.4.</b>
方法值和方法達式
方法值和方法達式
</a>
@@ -953,7 +953,7 @@
<b>7.1.</b>
接口是
接口是
</a>
@@ -1073,7 +1073,7 @@
<b>7.9.</b>
示例: 達式求值
示例: 達式求值
</a>
@@ -1103,7 +1103,7 @@
<b>7.11.</b>
基於類型斷言識錯誤類型
基於類型斷言識錯誤類型
</a>
@@ -1214,7 +1214,7 @@
<b>8.2.</b>
示例: 併的Clock服務
示例: 併的Clock服務
</a>
@@ -1229,7 +1229,7 @@
<b>8.3.</b>
示例: 併的Echo服務
示例: 併的Echo服務
</a>
@@ -1274,7 +1274,7 @@
<b>8.6.</b>
示例: 併的Web爬蟲
示例: 併的Web爬蟲
</a>
@@ -1289,7 +1289,7 @@
<b>8.7.</b>
基於select的多路
基於select的多路
</a>
@@ -1304,7 +1304,7 @@
<b>8.8.</b>
示例: 併的字典遍歷
示例: 併的字典遍歷
</a>
@@ -1319,7 +1319,7 @@
<b>8.9.</b>
的退齣
的退齣
</a>
@@ -1354,7 +1354,7 @@
<b>9.</b>
基於共享變量的併
基於共享變量的併
</a>
@@ -1415,7 +1415,7 @@
<b>9.4.</b>
內存
內存
</a>
@@ -1460,7 +1460,7 @@
<b>9.7.</b>
示例: 併的非阻塞緩存
示例: 併的非阻塞緩存
</a>
@@ -1475,7 +1475,7 @@
<b>9.8.</b>
Goroutines和
Goroutines和
</a>
@@ -1748,7 +1748,7 @@
<b>12.1.</b>
何需要反射?
何需要反射?
</a>
@@ -1793,7 +1793,7 @@
<b>12.4.</b>
示例: 編碼S達式
示例: 編碼S達式
</a>
@@ -1823,7 +1823,7 @@
<b>12.6.</b>
示例: 解碼S達式
示例: 解碼S達式
</a>
@@ -1975,50 +1975,14 @@
</li>
<li class="chapter " data-level="14" data-path="exercise/ex.html">
<a href="../exercise/ex.html">
<i class="fa fa-check"></i>
<b>14.</b>
習題解答
</a>
<ul class="articles">
<li class="chapter " data-level="14.1" data-path="exercise/ex-ch1.html">
<a href="../exercise/ex-ch1.html">
<i class="fa fa-check"></i>
<b>14.1.</b>
第一章 入門
</a>
</li>
</ul>
</li>
<li class="chapter " data-level="15" data-path="errata.html">
<li class="chapter " data-level="14" data-path="errata.html">
<a href="../errata.html">
<i class="fa fa-check"></i>
<b>15.</b>
<b>14.</b>
勘誤
</a>
@@ -2060,8 +2024,8 @@
<section class="normal" id="section-">
<h1 id="&#x7B2C;2&#x7AE0;-&#x7A0B;&#x5E8F;&#x7D50;&#x69CB;">&#x7B2C;2&#x7AE0; &#x7A0B;&#x5E8F;&#x7D50;&#x69CB;</h1>
<p>Go&#x8A9E;&#x8A00;&#x548C;&#x4EFB;&#x4F55;&#x5176;&#x4ED6;&#x8A9E;&#x8A00;&#x4E00;&#x6A23;, &#x4E00;&#x500B;&#x5927;&#x7684;&#x7A0B;&#x5E8F;&#x662F;&#x6709;&#x5F88;&#x591A;&#x5C0F;&#x7684;&#x57FA;&#x790E;&#x69CB;&#x4EF6;&#x7D44;&#x6210;&#x7684;. &#x8B8A;&#x91CF;&#x4FDD;&#x5B58;&#x503C;. &#x7C21;&#x55AE;&#x7684;&#x52A0;&#x6CD5;&#x548C;&#x6E1B;&#x6CD5;&#x904B;&#x7B97;&#x88AB;&#x7D44;&#x95A4;&#x6210;&#x8F03;&#x5927;&#x7684;&#x9336;&#x9054;&#x5F0F;. &#x57FA;&#x790E;&#x985E;&#x578B;&#x88AB;&#x805A;&#x95A4;&#x70BA;&#x6578;&#x7D44;&#x6216;&#x7D50;&#x69CB;&#x9AD4;. &#x7136;&#x5F8C;&#x4F7F;&#x7528;if&#x548C;for&#x4E4B;&#x985E;&#x7684;&#x63A7;&#x88FD;&#x8A9E;&#x53E5;&#x4F86;&#x7D44;&#x7E54;&#x548C;&#x63A7;&#x88FD;&#x9336;&#x9054;&#x5F0F;&#x7684;&#x57F7;&#x884C;&#x9806;&#x5E8F;. &#x7136;&#x5F8C;&#x591A;&#x500B;&#x8A9E;&#x53E5;&#x88AB;&#x7D44;&#x7E54;&#x5230;&#x51FD;&#x6578;&#x4E2D;, &#x4EE5;&#x4FBF;&#x4EE3;&#x78BC;&#x7684;&#x9694;&#x96E2;&#x548C;&#x5FA9;&#x7528;. &#x51FD;&#x6578;&#x4EE5;&#x6E90;&#x6587;&#x4EF6;&#x548C;&#x5305;&#x7684;&#x65B9;&#x5F0F;&#x7D44;&#x7E54;.</p>
<p>&#x6211;&#x5011;&#x5DF2;&#x7D93;&#x5728;&#x524D;&#x9EAB;&#x7684;&#x7AE0;&#x7BC0;&#x7684;&#x4F8B;&#x5B50;&#x4E2D;&#x770B;&#x5230;&#x4E86;&#x5927;&#x90E8;&#x5206;&#x7684;&#x4F8B;&#x5B50;. &#x5728;&#x672C;&#x7AE0;&#x4E2D;, &#x6211;&#x5011;&#x5C07;&#x6DF1;&#x5165;&#x8A0E;&#x8AD6;Go&#x7A0B;&#x5E8F;&#x7684;&#x57FA;&#x790E;&#x7D50;&#x69CB;&#x7684;&#x4E00;&#x4E9B;&#x7D30;&#x7BC0;. &#x6BCF;&#x500B;&#x793A;&#x4F8B;&#x7A0B;&#x5E8F;&#x90FD;&#x662F;&#x523B;&#x610F;&#x5BEB;&#x7684;&#x7C21;&#x55AE;, &#x9019;&#x6A23;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x6E1B;&#x5C11;&#x88AB;&#x5FA9;&#x96DC;&#x7684;&#x7B97;&#x6CD5;&#x548C;&#x6578;&#x64DA;&#x7D50;&#x69CB;&#x6240;&#x5E79;&#x64FE;, &#x5F9E;&#x800C;&#x5C08;&#x8A3B;&#x65BC;&#x8A9E;&#x8A00;&#x672C;&#x8EAB;&#x7684;&#x5B78;&#x7FD2;. </p>
<p>Go&#x8A9E;&#x8A00;&#x548C;&#x4EFB;&#x4F55;&#x5176;&#x4ED6;&#x8A9E;&#x8A00;&#x4E00;&#x6A23;, &#x4E00;&#x500B;&#x5927;&#x7684;&#x7A0B;&#x5E8F;&#x662F;&#x6709;&#x5F88;&#x591A;&#x5C0F;&#x7684;&#x57FA;&#x790E;&#x69CB;&#x4EF6;&#x7D44;&#x6210;&#x7684;. &#x8B8A;&#x91CF;&#x4FDD;&#x5B58;&#x503C;. &#x7C21;&#x55AE;&#x7684;&#x52A0;&#x6CD5;&#x548C;&#x6E1B;&#x6CD5;&#x904B;&#x7B97;&#x88AB;&#x7D44;&#x5408;&#x6210;&#x8F03;&#x5927;&#x7684;&#x8868;&#x9054;&#x5F0F;. &#x57FA;&#x790E;&#x985E;&#x578B;&#x88AB;&#x805A;&#x5408;&#x7232;&#x6578;&#x7D44;&#x6216;&#x7D50;&#x69CB;&#x9AD4;. &#x7136;&#x5F8C;&#x4F7F;&#x7528;if&#x548C;for&#x4E4B;&#x985E;&#x7684;&#x63A7;&#x88FD;&#x8A9E;&#x53E5;&#x4F86;&#x7D44;&#x7E54;&#x548C;&#x63A7;&#x88FD;&#x8868;&#x9054;&#x5F0F;&#x7684;&#x57F7;&#x884C;&#x9806;&#x5E8F;. &#x7136;&#x5F8C;&#x591A;&#x500B;&#x8A9E;&#x53E5;&#x88AB;&#x7D44;&#x7E54;&#x5230;&#x51FD;&#x6578;&#x4E2D;, &#x4EE5;&#x4FBF;&#x4EE3;&#x78BC;&#x7684;&#x9694;&#x96E2;&#x548C;&#x8907;&#x7528;. &#x51FD;&#x6578;&#x4EE5;&#x6E90;&#x6587;&#x4EF6;&#x548C;&#x5305;&#x7684;&#x65B9;&#x5F0F;&#x7D44;&#x7E54;.</p>
<p>&#x6211;&#x5011;&#x5DF2;&#x7D93;&#x5728;&#x524D;&#x9762;&#x7684;&#x7AE0;&#x7BC0;&#x7684;&#x4F8B;&#x5B50;&#x4E2D;&#x770B;&#x5230;&#x4E86;&#x5927;&#x90E8;&#x5206;&#x7684;&#x4F8B;&#x5B50;. &#x5728;&#x672C;&#x7AE0;&#x4E2D;, &#x6211;&#x5011;&#x5C07;&#x6DF1;&#x5165;&#x8A0E;&#x8AD6;Go&#x7A0B;&#x5E8F;&#x7684;&#x57FA;&#x790E;&#x7D50;&#x69CB;&#x7684;&#x4E00;&#x4E9B;&#x7D30;&#x7BC0;. &#x6BCF;&#x500B;&#x793A;&#x4F8B;&#x7A0B;&#x5E8F;&#x90FD;&#x662F;&#x523B;&#x610F;&#x5BEB;&#x7684;&#x7C21;&#x55AE;, &#x9019;&#x6A23;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x6E1B;&#x5C11;&#x88AB;&#x8907;&#x96DC;&#x7684;&#x7B97;&#x6CD5;&#x548C;&#x6578;&#x64DA;&#x7D50;&#x69CB;&#x6240;&#x69A6;&#x64FE;, &#x5F9E;&#x800C;&#x5C08;&#x8A3B;&#x65BC;&#x8A9E;&#x8A00;&#x672C;&#x8EAB;&#x7684;&#x5B78;&#x7FD2;. </p>
</section>