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="6.1" data-chapter-title="方法聲明" data-filepath="ch6/ch6-01.md" data-basepath=".." data-revision="Wed Dec 16 2015 10:54:29 GMT+0800 (中国标准时间)">
<div class="book" data-level="6.1" data-chapter-title="方法聲明" data-filepath="ch6/ch6-01.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book-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-">
<h2 id="61-&#x65B9;&#x6CD5;&#x8072;&#x660E;">6.1. &#x65B9;&#x6CD5;&#x8072;&#x660E;</h2>
<p>&#x5728;&#x51FD;&#x6578;&#x8072;&#x660E;&#x6642;&#xFF0C;&#x5728;&#x5176;&#x540D;&#x5B57;&#x4E4B;&#x524D;&#x653E;&#x4E0A;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#xFF0C;&#x537D;&#x662F;&#x4E00;&#x500B;&#x65B9;&#x6CD5;&#x3002;&#x9019;&#x500B;&#x9644;&#x52A0;&#x7684;&#x53C3;&#x6578;&#x6703;&#x5C07;&#x8A72;&#x51FD;&#x6578;&#x9644;&#x52A0;&#x5230;&#x9019;&#x7A2E;&#x985E;&#x578B;&#x4E0A;&#xFF0C;&#x537D;&#x76F8;&#x7576;&#x65BC;&#x70BA;&#x9019;&#x7A2E;&#x985E;&#x578B;&#x5B9A;&#x7FA9;&#x4E86;&#x4E00;&#x500B;&#x7368;&#x4F54;&#x7684;&#x65B9;&#x6CD5;&#x3002;</p>
<p>&#x4E0B;&#x9EAB;&#x4F86;&#x5BEB;&#x6211;&#x5011;&#x7B2C;&#x4E00;&#x500B;&#x65B9;&#x6CD5;&#x7684;&#x4F8B;&#x5B50;&#xFF0C;&#x9019;&#x500B;&#x4F8B;&#x5B50;&#x5728;package geometry&#x4E0B;&#xFF1A;</p>
<p>&#x5728;&#x51FD;&#x6578;&#x8072;&#x660E;&#x6642;&#xFF0C;&#x5728;&#x5176;&#x540D;&#x5B57;&#x4E4B;&#x524D;&#x653E;&#x4E0A;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#xFF0C;&#x537D;&#x662F;&#x4E00;&#x500B;&#x65B9;&#x6CD5;&#x3002;&#x9019;&#x500B;&#x9644;&#x52A0;&#x7684;&#x53C3;&#x6578;&#x6703;&#x5C07;&#x8A72;&#x51FD;&#x6578;&#x9644;&#x52A0;&#x5230;&#x9019;&#x7A2E;&#x985E;&#x578B;&#x4E0A;&#xFF0C;&#x537D;&#x76F8;&#x7576;&#x65BC;&#x7232;&#x9019;&#x7A2E;&#x985E;&#x578B;&#x5B9A;&#x7FA9;&#x4E86;&#x4E00;&#x500B;&#x7368;&#x5360;&#x7684;&#x65B9;&#x6CD5;&#x3002;</p>
<p>&#x4E0B;&#x9762;&#x4F86;&#x5BEB;&#x6211;&#x5011;&#x7B2C;&#x4E00;&#x500B;&#x65B9;&#x6CD5;&#x7684;&#x4F8B;&#x5B50;&#xFF0C;&#x9019;&#x500B;&#x4F8B;&#x5B50;&#x5728;package geometry&#x4E0B;&#xFF1A;</p>
<pre><code class="lang-go">gopl.io/ch6/geometry
<span class="hljs-keyword">package</span> geometry
@@ -2080,17 +2044,17 @@
<span class="hljs-keyword">return</span> math.Hypot(q.X-p.X, q.Y-p.Y)
}
</code></pre>
<p>&#x4E0A;&#x9EAB;&#x7684;&#x4EE3;&#x78BC;&#x88CF;&#x90A3;&#x500B;&#x9644;&#x52A0;&#x7684;&#x53C3;&#x6578;p&#xFF0C;&#x53EB;&#x505A;&#x65B9;&#x6CD5;&#x7684;&#x63A5;&#x6536;&#x5668;(receiver)&#xFF0C;&#x65E9;&#x671F;&#x7684;&#x9EAB;&#x66CF;&#x5C0D;&#x8C61;&#x8A9E;&#x8A00;&#x7559;&#x4E0B;&#x7684;&#x907A;&#x7522;&#x5C07;&#x8ABF;&#x7528;&#x4E00;&#x500B;&#x65B9;&#x6CD5;&#x7A31;&#x70BA;&#x201C;&#x66CF;&#x4E00;&#x500B;&#x5C0D;&#x8C61;&#x9AEE;&#x9001;&#x6D88;&#x606F;&#x201D;&#x3002;</p>
<p>&#x5728;Go&#x8A9E;&#x8A00;&#x4E2D;&#xFF0C;&#x6211;&#x5011;&#x4F75;&#x4E0D;&#x6703;&#x50CF;&#x5176;&#x5B83;&#x8A9E;&#x8A00;&#x90A3;&#x6A23;&#x7528;this&#x6216;&#x8005;self&#x4F5C;&#x70BA;&#x63A5;&#x6536;&#x5668;&#xFF1B;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x4EFB;&#x610F;&#x7684;&#x9078;&#x64C7;&#x63A5;&#x6536;&#x5668;&#x7684;&#x540D;&#x5B57;&#x3002;&#x7531;&#x65BC;&#x63A5;&#x6536;&#x5668;&#x7684;&#x540D;&#x5B57;&#x7D93;&#x5E38;&#x6703;&#x88AB;&#x4F7F;&#x7528;&#x5230;&#xFF0C;&#x6240;&#x4EE5;&#x4FDD;&#x6301;&#x5176;&#x5728;&#x65B9;&#x6CD5;&#x9593;&#x50B3;&#x905E;&#x6642;&#x7684;&#x4E00;&#x7DFB;&#x6027;&#x548C;&#x7C21;&#x77ED;&#x6027;&#x662F;&#x4E0D;&#x932F;&#x7684;&#x4E3B;&#x610F;&#x3002;&#x9019;&#x88CF;&#x7684;&#x5EFA;&#x8B70;&#x662F;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;&#x5176;&#x985E;&#x578B;&#x7684;&#x7B2C;&#x4E00;&#x500B;&#x5B57;&#x6BCD;&#xFF0C;&#x6BD4;&#x5982;&#x9019;&#x88CF;&#x4F7F;&#x7528;&#x4E86;Point&#x7684;&#x9996;&#x5B57;&#x6BCD;p&#x3002;</p>
<p>&#x5728;&#x65B9;&#x6CD5;&#x8ABF;&#x7528;&#x904E;&#x7A0B;&#x4E2D;&#xFF0C;&#x63A5;&#x6536;&#x5668;&#x53C3;&#x6578;&#x4E00;&#x822C;&#x6703;&#x5728;&#x65B9;&#x6CD5;&#x540D;&#x4E4B;&#x524D;&#x9F63;&#x73FE;&#x3002;&#x9019;&#x548C;&#x65B9;&#x6CD5;&#x8072;&#x660E;&#x662F;&#x4E00;&#x6A23;&#x7684;&#xFF0C;&#x90FD;&#x662F;&#x63A5;&#x6536;&#x5668;&#x53C3;&#x6578;&#x5728;&#x65B9;&#x6CD5;&#x540D;&#x5B57;&#x4E4B;&#x524D;&#x3002;&#x4E0B;&#x9EAB;&#x662F;&#x4F8B;&#x5B50;&#xFF1A;</p>
<p>&#x4E0A;&#x9762;&#x7684;&#x4EE3;&#x78BC;&#x91CC;&#x90A3;&#x500B;&#x9644;&#x52A0;&#x7684;&#x53C3;&#x6578;p&#xFF0C;&#x53EB;&#x505A;&#x65B9;&#x6CD5;&#x7684;&#x63A5;&#x6536;&#x5668;(receiver)&#xFF0C;&#x65E9;&#x671F;&#x7684;&#x9762;&#x5411;&#x5C0D;&#x8C61;&#x8A9E;&#x8A00;&#x7559;&#x4E0B;&#x7684;&#x907A;&#x7523;&#x5C07;&#x8ABF;&#x7528;&#x4E00;&#x500B;&#x65B9;&#x6CD5;&#x7A31;&#x7232;&#x201C;&#x5411;&#x4E00;&#x500B;&#x5C0D;&#x8C61;&#x767C;&#x9001;&#x6D88;&#x606F;&#x201D;&#x3002;</p>
<p>&#x5728;Go&#x8A9E;&#x8A00;&#x4E2D;&#xFF0C;&#x6211;&#x5011;&#x4F75;&#x4E0D;&#x6703;&#x50CF;&#x5176;&#x5B83;&#x8A9E;&#x8A00;&#x90A3;&#x6A23;&#x7528;this&#x6216;&#x8005;self&#x4F5C;&#x7232;&#x63A5;&#x6536;&#x5668;&#xFF1B;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x4EFB;&#x610F;&#x7684;&#x9078;&#x64C7;&#x63A5;&#x6536;&#x5668;&#x7684;&#x540D;&#x5B57;&#x3002;&#x7531;&#x65BC;&#x63A5;&#x6536;&#x5668;&#x7684;&#x540D;&#x5B57;&#x7D93;&#x5E38;&#x6703;&#x88AB;&#x4F7F;&#x7528;&#x5230;&#xFF0C;&#x6240;&#x4EE5;&#x4FDD;&#x6301;&#x5176;&#x5728;&#x65B9;&#x6CD5;&#x9593;&#x50B3;&#x905E;&#x6642;&#x7684;&#x4E00;&#x81F4;&#x6027;&#x548C;&#x7C21;&#x77ED;&#x6027;&#x662F;&#x4E0D;&#x932F;&#x7684;&#x4E3B;&#x610F;&#x3002;&#x9019;&#x91CC;&#x7684;&#x5EFA;&#x8B70;&#x662F;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;&#x5176;&#x985E;&#x578B;&#x7684;&#x7B2C;&#x4E00;&#x500B;&#x5B57;&#x6BCD;&#xFF0C;&#x6BD4;&#x5982;&#x9019;&#x91CC;&#x4F7F;&#x7528;&#x4E86;Point&#x7684;&#x9996;&#x5B57;&#x6BCD;p&#x3002;</p>
<p>&#x5728;&#x65B9;&#x6CD5;&#x8ABF;&#x7528;&#x904E;&#x7A0B;&#x4E2D;&#xFF0C;&#x63A5;&#x6536;&#x5668;&#x53C3;&#x6578;&#x4E00;&#x822C;&#x6703;&#x5728;&#x65B9;&#x6CD5;&#x540D;&#x4E4B;&#x524D;&#x9F63;&#x73FE;&#x3002;&#x9019;&#x548C;&#x65B9;&#x6CD5;&#x8072;&#x660E;&#x662F;&#x4E00;&#x6A23;&#x7684;&#xFF0C;&#x90FD;&#x662F;&#x63A5;&#x6536;&#x5668;&#x53C3;&#x6578;&#x5728;&#x65B9;&#x6CD5;&#x540D;&#x5B57;&#x4E4B;&#x524D;&#x3002;&#x4E0B;&#x9762;&#x662F;&#x4F8B;&#x5B50;&#xFF1A;</p>
<pre><code class="lang-Go">p := Point{<span class="hljs-number">1</span>, <span class="hljs-number">2</span>}
q := Point{<span class="hljs-number">4</span>, <span class="hljs-number">6</span>}
fmt.Println(Distance(p, q)) <span class="hljs-comment">// &quot;5&quot;, function call</span>
fmt.Println(p.Distance(q)) <span class="hljs-comment">// &quot;5&quot;, method call</span>
</code></pre>
<p>&#x53EF;&#x4EE5;&#x770B;&#x5230;&#xFF0C;&#x4E0A;&#x9EAB;&#x7684;&#x5169;&#x500B;&#x51FD;&#x6578;&#x8ABF;&#x7528;&#x90FD;&#x662F;Distance&#xFF0C;&#x4F46;&#x662F;&#x537B;&#x6C92;&#x6709;&#x9AEE;&#x751F;&#x885D;&#x7A81;&#x3002;&#x7B2C;&#x4E00;&#x500B;Distance&#x7684;&#x8ABF;&#x7528;&#x5BE6;&#x969B;&#x4E0A;&#x7528;&#x7684;&#x662F;&#x5305;&#x7D1A;&#x5F46;&#x7684;&#x51FD;&#x6578;geometry.Distance&#xFF0C;&#x800C;&#x7B2C;&#x4E8C;&#x500B;&#x5247;&#x662F;&#x4F7F;&#x7528;&#x525B;&#x525B;&#x8072;&#x660E;&#x7684;Point&#xFF0C;&#x8ABF;&#x7528;&#x7684;&#x662F;Point&#x985E;&#x4E0B;&#x8072;&#x660E;&#x7684;Point.Distance&#x65B9;&#x6CD5;&#x3002;</p>
<p>&#x9019;&#x7A2E;p.Distance&#x7684;&#x9336;&#x9054;&#x5F0F;&#x53EB;&#x505A;&#x9078;&#x64C7;&#x5668;&#xFF0C;&#x56E0;&#x70BA;&#x4ED6;&#x6703;&#x9078;&#x64C7;&#x95A4;&#x9069;&#x7684;&#x5C0D;&#x61C9;p&#x9019;&#x500B;&#x5C0D;&#x8C61;&#x7684;Distance&#x65B9;&#x6CD5;&#x4F86;&#x57F7;&#x884C;&#x3002;&#x9078;&#x64C7;&#x5668;&#x4E5F;&#x6703;&#x88AB;&#x7528;&#x4F86;&#x9078;&#x64C7;&#x4E00;&#x500B;struct&#x985E;&#x578B;&#x7684;&#x5B57;&#x6BB5;&#xFF0C;&#x6BD4;&#x5982;p.X&#x3002;&#x7531;&#x65BC;&#x65B9;&#x6CD5;&#x548C;&#x5B57;&#x6BB5;&#x90FD;&#x662F;&#x5728;&#x8855;&#x4E00;&#x547D;&#x540D;&#x7A7A;&#x9593;&#xFF0C;&#x6240;&#x4EE5;&#x5982;&#x679C;&#x6211;&#x5011;&#x5728;&#x9019;&#x88CF;&#x8072;&#x660E;&#x4E00;&#x500B;X&#x65B9;&#x6CD5;&#x7684;&#x8A71;&#xFF0C;&#x7DE8;&#x8B6F;&#x5668;&#x6703;&#x5831;&#x932F;&#xFF0C;&#x56E0;&#x70BA;&#x5728;&#x8ABF;&#x7528;p.X&#x6642;&#x6703;&#x6709;&#x6B67;&#x7FA9;(&#x8B6F;&#x8A3B;&#xFF1A;&#x9019;&#x88CF;&#x78BA;&#x5BE6;&#x633A;&#x5947;&#x602A;&#x7684;)&#x3002;</p>
<p>&#x56E0;&#x70BA;&#x6BCF;&#x7A2E;&#x985E;&#x578B;&#x90FD;&#x6709;&#x5176;&#x65B9;&#x6CD5;&#x7684;&#x547D;&#x540D;&#x7A7A;&#x9593;&#xFF0C;&#x6211;&#x5011;&#x5728;&#x7528;Distance&#x9019;&#x500B;&#x540D;&#x5B57;&#x7684;&#x6642;&#x5019;&#xFF0C;&#x4E0D;&#x8855;&#x7684;Distance&#x8ABF;&#x7528;&#x6307;&#x66CF;&#x4E86;&#x4E0D;&#x8855;&#x985E;&#x578B;&#x88CF;&#x7684;Distance&#x65B9;&#x6CD5;&#x3002;&#x8B93;&#x6211;&#x5011;&#x4F86;&#x5B9A;&#x7FA9;&#x4E00;&#x500B;Path&#x985E;&#x578B;&#xFF0C;&#x9019;&#x500B;Path&#x4EE3;&#x9336;&#x4E00;&#x500B;&#x7DAB;&#x6BB5;&#x7684;&#x96C6;&#x95A4;&#xFF0C;&#x4F75;&#x4E14;&#x4E5F;&#x7D66;&#x9019;&#x500B;Path&#x5B9A;&#x7FA9;&#x4E00;&#x500B;&#x53EB;Distance&#x7684;&#x65B9;&#x6CD5;&#x3002;</p>
<p>&#x53EF;&#x4EE5;&#x770B;&#x5230;&#xFF0C;&#x4E0A;&#x9762;&#x7684;&#x5169;&#x500B;&#x51FD;&#x6578;&#x8ABF;&#x7528;&#x90FD;&#x662F;Distance&#xFF0C;&#x4F46;&#x662F;&#x537B;&#x6C92;&#x6709;&#x767C;&#x751F;&#x885D;&#x7A81;&#x3002;&#x7B2C;&#x4E00;&#x500B;Distance&#x7684;&#x8ABF;&#x7528;&#x5BE6;&#x969B;&#x4E0A;&#x7528;&#x7684;&#x662F;&#x5305;&#x7D1A;&#x522B;&#x7684;&#x51FD;&#x6578;geometry.Distance&#xFF0C;&#x800C;&#x7B2C;&#x4E8C;&#x500B;&#x5247;&#x662F;&#x4F7F;&#x7528;&#x525B;&#x525B;&#x8072;&#x660E;&#x7684;Point&#xFF0C;&#x8ABF;&#x7528;&#x7684;&#x662F;Point&#x985E;&#x4E0B;&#x8072;&#x660E;&#x7684;Point.Distance&#x65B9;&#x6CD5;&#x3002;</p>
<p>&#x9019;&#x7A2E;p.Distance&#x7684;&#x8868;&#x9054;&#x5F0F;&#x53EB;&#x505A;&#x9078;&#x64C7;&#x5668;&#xFF0C;&#x56E0;&#x7232;&#x4ED6;&#x6703;&#x9078;&#x64C7;&#x5408;&#x9069;&#x7684;&#x5C0D;&#x61C9;p&#x9019;&#x500B;&#x5C0D;&#x8C61;&#x7684;Distance&#x65B9;&#x6CD5;&#x4F86;&#x57F7;&#x884C;&#x3002;&#x9078;&#x64C7;&#x5668;&#x4E5F;&#x6703;&#x88AB;&#x7528;&#x4F86;&#x9078;&#x64C7;&#x4E00;&#x500B;struct&#x985E;&#x578B;&#x7684;&#x5B57;&#x6BB5;&#xFF0C;&#x6BD4;&#x5982;p.X&#x3002;&#x7531;&#x65BC;&#x65B9;&#x6CD5;&#x548C;&#x5B57;&#x6BB5;&#x90FD;&#x662F;&#x5728;&#x540C;&#x4E00;&#x547D;&#x540D;&#x7A7A;&#x9593;&#xFF0C;&#x6240;&#x4EE5;&#x5982;&#x679C;&#x6211;&#x5011;&#x5728;&#x9019;&#x91CC;&#x8072;&#x660E;&#x4E00;&#x500B;X&#x65B9;&#x6CD5;&#x7684;&#x8A71;&#xFF0C;&#x7DE8;&#x8B6F;&#x5668;&#x6703;&#x5831;&#x932F;&#xFF0C;&#x56E0;&#x7232;&#x5728;&#x8ABF;&#x7528;p.X&#x6642;&#x6703;&#x6709;&#x6B67;&#x7FA9;(&#x8B6F;&#x8A3B;&#xFF1A;&#x9019;&#x91CC;&#x78BA;&#x5BE6;&#x633A;&#x5947;&#x602A;&#x7684;)&#x3002;</p>
<p>&#x56E0;&#x7232;&#x6BCF;&#x7A2E;&#x985E;&#x578B;&#x90FD;&#x6709;&#x5176;&#x65B9;&#x6CD5;&#x7684;&#x547D;&#x540D;&#x7A7A;&#x9593;&#xFF0C;&#x6211;&#x5011;&#x5728;&#x7528;Distance&#x9019;&#x500B;&#x540D;&#x5B57;&#x7684;&#x6642;&#x5019;&#xFF0C;&#x4E0D;&#x540C;&#x7684;Distance&#x8ABF;&#x7528;&#x6307;&#x5411;&#x4E86;&#x4E0D;&#x540C;&#x985E;&#x578B;&#x91CC;&#x7684;Distance&#x65B9;&#x6CD5;&#x3002;&#x8B93;&#x6211;&#x5011;&#x4F86;&#x5B9A;&#x7FA9;&#x4E00;&#x500B;Path&#x985E;&#x578B;&#xFF0C;&#x9019;&#x500B;Path&#x4EE3;&#x8868;&#x4E00;&#x500B;&#x7DDA;&#x6BB5;&#x7684;&#x96C6;&#x5408;&#xFF0C;&#x4F75;&#x4E14;&#x4E5F;&#x7D66;&#x9019;&#x500B;Path&#x5B9A;&#x7FA9;&#x4E00;&#x500B;&#x53EB;Distance&#x7684;&#x65B9;&#x6CD5;&#x3002;</p>
<pre><code class="lang-Go"><span class="hljs-comment">// A Path is a journey connecting the points with straight lines.</span>
<span class="hljs-keyword">type</span> Path []Point
<span class="hljs-comment">// Distance returns the distance traveled along the path.</span>
@@ -2104,8 +2068,8 @@ fmt.Println(p.Distance(q)) <span class="hljs-comment">// &quot;5&quot;, method
<span class="hljs-keyword">return</span> sum
}
</code></pre>
<p>Path&#x662F;&#x4E00;&#x500B;&#x547D;&#x540D;&#x7684;slice&#x985E;&#x578B;&#xFF0C;&#x800C;&#x4E0D;&#x662F;Point&#x90A3;&#x6A23;&#x7684;struct&#x985E;&#x578B;&#xFF0C;&#x7136;&#x800C;&#x6211;&#x5011;&#x4F9D;&#x7136;&#x53EF;&#x4EE5;&#x70BA;&#x5B83;&#x5B9A;&#x7FA9;&#x65B9;&#x6CD5;&#x3002;&#x5728;&#x80FD;&#x5920;&#x7D66;&#x4EFB;&#x610F;&#x985E;&#x578B;&#x5B9A;&#x7FA9;&#x65B9;&#x6CD5;&#x9019;&#x4E00;&#x9EDE;&#x4E0A;&#xFF0C;Go&#x548C;&#x5F88;&#x591A;&#x5176;&#x5B83;&#x7684;&#x9EAB;&#x66CF;&#x5C0D;&#x8C61;&#x7684;&#x8A9E;&#x8A00;&#x4E0D;&#x592A;&#x4E00;&#x6A23;&#x3002;&#x56E0;&#x6B64;&#x5728;Go&#x8A9E;&#x8A00;&#x88CF;&#xFF0C;&#x6211;&#x5011;&#x70BA;&#x4E00;&#x4E9B;&#x7C21;&#x55AE;&#x7684;&#x6578;&#x503C;&#x3001;&#x5B57;&#x7B26;&#x4E32;&#x3001;slice&#x3001;map&#x4F86;&#x5B9A;&#x7FA9;&#x4E00;&#x4E9B;&#x9644;&#x52A0;&#x884C;&#x70BA;&#x5F88;&#x65B9;&#x4FBF;&#x3002;&#x65B9;&#x6CD5;&#x53EF;&#x4EE5;&#x88AB;&#x8072;&#x660E;&#x5230;&#x4EFB;&#x610F;&#x985E;&#x578B;&#xFF0C;&#x96BB;&#x8981;&#x4E0D;&#x662F;&#x4E00;&#x500B;&#x6307;&#x937C;&#x6216;&#x8005;&#x4E00;&#x500B;interface&#x3002;</p>
<p>&#x5169;&#x500B;Distance&#x65B9;&#x6CD5;&#x6709;&#x4E0D;&#x8855;&#x7684;&#x985E;&#x578B;&#x3002;&#x4ED6;&#x5011;&#x5169;&#x500B;&#x65B9;&#x6CD5;&#x4E4B;&#x9593;&#x6C92;&#x6709;&#x4EFB;&#x4F55;&#x95DC;&#x7E6B;&#xFF0C;&#x76E1;&#x7BA1;Path&#x7684;Distance&#x65B9;&#x6CD5;&#x6703;&#x5728;&#x5167;&#x90E8;&#x8ABF;&#x7528;Point.Distance&#x65B9;&#x6CD5;&#x4F86;&#x8A08;&#x7B97;&#x6BCF;&#x500B;&#x9023;&#x63A5;&#x9130;&#x63A5;&#x9EDE;&#x7684;&#x7DAB;&#x6BB5;&#x7684;&#x9577;&#x5EA6;&#x3002;</p>
<p>Path&#x662F;&#x4E00;&#x500B;&#x547D;&#x540D;&#x7684;slice&#x985E;&#x578B;&#xFF0C;&#x800C;&#x4E0D;&#x662F;Point&#x90A3;&#x6A23;&#x7684;struct&#x985E;&#x578B;&#xFF0C;&#x7136;&#x800C;&#x6211;&#x5011;&#x4F9D;&#x7136;&#x53EF;&#x4EE5;&#x7232;&#x5B83;&#x5B9A;&#x7FA9;&#x65B9;&#x6CD5;&#x3002;&#x5728;&#x80FD;&#x5920;&#x7D66;&#x4EFB;&#x610F;&#x985E;&#x578B;&#x5B9A;&#x7FA9;&#x65B9;&#x6CD5;&#x9019;&#x4E00;&#x9EDE;&#x4E0A;&#xFF0C;Go&#x548C;&#x5F88;&#x591A;&#x5176;&#x5B83;&#x7684;&#x9762;&#x5411;&#x5C0D;&#x8C61;&#x7684;&#x8A9E;&#x8A00;&#x4E0D;&#x592A;&#x4E00;&#x6A23;&#x3002;&#x56E0;&#x6B64;&#x5728;Go&#x8A9E;&#x8A00;&#x91CC;&#xFF0C;&#x6211;&#x5011;&#x7232;&#x4E00;&#x4E9B;&#x7C21;&#x55AE;&#x7684;&#x6578;&#x503C;&#x3001;&#x5B57;&#x7B26;&#x4E32;&#x3001;slice&#x3001;map&#x4F86;&#x5B9A;&#x7FA9;&#x4E00;&#x4E9B;&#x9644;&#x52A0;&#x884C;&#x7232;&#x5F88;&#x65B9;&#x4FBF;&#x3002;&#x65B9;&#x6CD5;&#x53EF;&#x4EE5;&#x88AB;&#x8072;&#x660E;&#x5230;&#x4EFB;&#x610F;&#x985E;&#x578B;&#xFF0C;&#x96BB;&#x8981;&#x4E0D;&#x662F;&#x4E00;&#x500B;&#x6307;&#x91DD;&#x6216;&#x8005;&#x4E00;&#x500B;interface&#x3002;</p>
<p>&#x5169;&#x500B;Distance&#x65B9;&#x6CD5;&#x6709;&#x4E0D;&#x540C;&#x7684;&#x985E;&#x578B;&#x3002;&#x4ED6;&#x5011;&#x5169;&#x500B;&#x65B9;&#x6CD5;&#x4E4B;&#x9593;&#x6C92;&#x6709;&#x4EFB;&#x4F55;&#x95DC;&#x7E6B;&#xFF0C;&#x76E1;&#x7BA1;Path&#x7684;Distance&#x65B9;&#x6CD5;&#x6703;&#x5728;&#x5167;&#x90E8;&#x8ABF;&#x7528;Point.Distance&#x65B9;&#x6CD5;&#x4F86;&#x8A08;&#x7B97;&#x6BCF;&#x500B;&#x9023;&#x63A5;&#x9130;&#x63A5;&#x9EDE;&#x7684;&#x7DDA;&#x6BB5;&#x7684;&#x9577;&#x5EA6;&#x3002;</p>
<p>&#x8B93;&#x6211;&#x5011;&#x4F86;&#x8ABF;&#x7528;&#x4E00;&#x500B;&#x65B0;&#x65B9;&#x6CD5;&#xFF0C;&#x8A08;&#x7B97;&#x4E09;&#x89D2;&#x5F62;&#x7684;&#x9031;&#x9577;&#xFF1A;</p>
<pre><code class="lang-Go">perim := Path{
{<span class="hljs-number">1</span>, <span class="hljs-number">1</span>},
@@ -2115,15 +2079,15 @@ fmt.Println(p.Distance(q)) <span class="hljs-comment">// &quot;5&quot;, method
}
fmt.Println(perim.Distance()) <span class="hljs-comment">// &quot;12&quot;</span>
</code></pre>
<p>&#x5728;&#x4E0A;&#x9EAB;&#x5169;&#x500B;&#x5C0D;Distance&#x540D;&#x5B57;&#x7684;&#x65B9;&#x6CD5;&#x7684;&#x8ABF;&#x7528;&#x4E2D;&#xFF0C;&#x7DE8;&#x8B6F;&#x5668;&#x6703;&#x6839;&#x64DA;&#x65B9;&#x6CD5;&#x7684;&#x540D;&#x5B57;&#x4EE5;&#x53CA;&#x63A5;&#x6536;&#x5668;&#x4F86;&#x6C7A;&#x5B9A;&#x5177;&#x9AD4;&#x8ABF;&#x7528;&#x7684;&#x662F;&#x54EA;&#x4E00;&#x500B;&#x51FD;&#x6578;&#x3002;&#x7B2C;&#x4E00;&#x500B;&#x4F8B;&#x5B50;&#x4E2D;path[i-1]&#x6578;&#x7D44;&#x4E2D;&#x7684;&#x985E;&#x578B;&#x662F;Point&#xFF0C;&#x56E0;&#x6B64;Point.Distance&#x9019;&#x500B;&#x65B9;&#x6CD5;&#x88AB;&#x8ABF;&#x7528;&#xFF1B;&#x5728;&#x7B2C;&#x4E8C;&#x500B;&#x4F8B;&#x5B50;&#x4E2D;perim&#x7684;&#x985E;&#x578B;&#x662F;Path&#xFF0C;&#x56E0;&#x6B64;Distance&#x8ABF;&#x7528;&#x7684;&#x662F;Path.Distance&#x3002;</p>
<p>&#x5C0D;&#x65BC;&#x4E00;&#x500B;&#x7D66;&#x5B9A;&#x7684;&#x985E;&#x578B;&#xFF0C;&#x5176;&#x5167;&#x90E8;&#x7684;&#x65B9;&#x6CD5;&#x90FD;&#x5FC5;&#x9B1A;&#x6709;&#x552F;&#x4E00;&#x7684;&#x65B9;&#x6CD5;&#x540D;&#xFF0C;&#x4F46;&#x662F;&#x4E0D;&#x8855;&#x7684;&#x985E;&#x578B;&#x537B;&#x53EF;&#x4EE5;&#x6709;&#x8855;&#x6A23;&#x7684;&#x65B9;&#x6CD5;&#x540D;&#xFF0C;&#x6BD4;&#x5982;&#x6211;&#x5011;&#x9019;&#x88CF;Point&#x548C;Path&#x5C31;&#x90FD;&#x6709;Distance&#x9019;&#x500B;&#x540D;&#x5B57;&#x7684;&#x65B9;&#x6CD5;&#xFF1B;&#x6240;&#x4EE5;&#x6211;&#x5011;&#x6C92;&#x6709;&#x5FC5;&#x8981;&#x975E;&#x5728;&#x65B9;&#x6CD5;&#x540D;&#x4E4B;&#x524D;&#x52A0;&#x985E;&#x578B;&#x540D;&#x4F86;&#x6D88;&#x9664;&#x6B67;&#x7FA9;&#xFF0C;&#x6BD4;&#x5982;PathDistance&#x3002;&#x9019;&#x88CF;&#x6211;&#x5011;&#x5DF2;&#x7D93;&#x770B;&#x5230;&#x4E86;&#x65B9;&#x6CD5;&#x6BD4;&#x4E4B;&#x51FD;&#x6578;&#x7684;&#x4E00;&#x4E9B;&#x597D;&#x8655;&#xFF1A;&#x65B9;&#x6CD5;&#x540D;&#x53EF;&#x4EE5;&#x7C21;&#x77ED;&#x3002;&#x7576;&#x6211;&#x5011;&#x5728;&#x5305;&#x5916;&#x8ABF;&#x7528;&#x7684;&#x6642;&#x5019;&#x9019;&#x7A2E;&#x597D;&#x8655;&#x5C31;&#x6703;&#x88AB;&#x653E;&#x5927;&#xFF0C;&#x56E0;&#x70BA;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;&#x9019;&#x500B;&#x77ED;&#x540D;&#x5B57;&#xFF0C;&#x800C;&#x53EF;&#x4EE5;&#x7701;&#x7565;&#x6389;&#x5305;&#x7684;&#x540D;&#x5B57;&#xFF0C;&#x4E0B;&#x9EAB;&#x662F;&#x4F8B;&#x5B50;&#xFF1A;</p>
<p>&#x5728;&#x4E0A;&#x9762;&#x5169;&#x500B;&#x5C0D;Distance&#x540D;&#x5B57;&#x7684;&#x65B9;&#x6CD5;&#x7684;&#x8ABF;&#x7528;&#x4E2D;&#xFF0C;&#x7DE8;&#x8B6F;&#x5668;&#x6703;&#x6839;&#x64DA;&#x65B9;&#x6CD5;&#x7684;&#x540D;&#x5B57;&#x4EE5;&#x53CA;&#x63A5;&#x6536;&#x5668;&#x4F86;&#x6C7A;&#x5B9A;&#x5177;&#x9AD4;&#x8ABF;&#x7528;&#x7684;&#x662F;&#x54EA;&#x4E00;&#x500B;&#x51FD;&#x6578;&#x3002;&#x7B2C;&#x4E00;&#x500B;&#x4F8B;&#x5B50;&#x4E2D;path[i-1]&#x6578;&#x7D44;&#x4E2D;&#x7684;&#x985E;&#x578B;&#x662F;Point&#xFF0C;&#x56E0;&#x6B64;Point.Distance&#x9019;&#x500B;&#x65B9;&#x6CD5;&#x88AB;&#x8ABF;&#x7528;&#xFF1B;&#x5728;&#x7B2C;&#x4E8C;&#x500B;&#x4F8B;&#x5B50;&#x4E2D;perim&#x7684;&#x985E;&#x578B;&#x662F;Path&#xFF0C;&#x56E0;&#x6B64;Distance&#x8ABF;&#x7528;&#x7684;&#x662F;Path.Distance&#x3002;</p>
<p>&#x5C0D;&#x65BC;&#x4E00;&#x500B;&#x7D66;&#x5B9A;&#x7684;&#x985E;&#x578B;&#xFF0C;&#x5176;&#x5167;&#x90E8;&#x7684;&#x65B9;&#x6CD5;&#x90FD;&#x5FC5;&#x9B1A;&#x6709;&#x552F;&#x4E00;&#x7684;&#x65B9;&#x6CD5;&#x540D;&#xFF0C;&#x4F46;&#x662F;&#x4E0D;&#x540C;&#x7684;&#x985E;&#x578B;&#x537B;&#x53EF;&#x4EE5;&#x6709;&#x540C;&#x6A23;&#x7684;&#x65B9;&#x6CD5;&#x540D;&#xFF0C;&#x6BD4;&#x5982;&#x6211;&#x5011;&#x9019;&#x91CC;Point&#x548C;Path&#x5C31;&#x90FD;&#x6709;Distance&#x9019;&#x500B;&#x540D;&#x5B57;&#x7684;&#x65B9;&#x6CD5;&#xFF1B;&#x6240;&#x4EE5;&#x6211;&#x5011;&#x6C92;&#x6709;&#x5FC5;&#x8981;&#x975E;&#x5728;&#x65B9;&#x6CD5;&#x540D;&#x4E4B;&#x524D;&#x52A0;&#x985E;&#x578B;&#x540D;&#x4F86;&#x6D88;&#x9664;&#x6B67;&#x7FA9;&#xFF0C;&#x6BD4;&#x5982;PathDistance&#x3002;&#x9019;&#x91CC;&#x6211;&#x5011;&#x5DF2;&#x7D93;&#x770B;&#x5230;&#x4E86;&#x65B9;&#x6CD5;&#x6BD4;&#x4E4B;&#x51FD;&#x6578;&#x7684;&#x4E00;&#x4E9B;&#x597D;&#x8655;&#xFF1A;&#x65B9;&#x6CD5;&#x540D;&#x53EF;&#x4EE5;&#x7C21;&#x77ED;&#x3002;&#x7576;&#x6211;&#x5011;&#x5728;&#x5305;&#x5916;&#x8ABF;&#x7528;&#x7684;&#x6642;&#x5019;&#x9019;&#x7A2E;&#x597D;&#x8655;&#x5C31;&#x6703;&#x88AB;&#x653E;&#x5927;&#xFF0C;&#x56E0;&#x7232;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;&#x9019;&#x500B;&#x77ED;&#x540D;&#x5B57;&#xFF0C;&#x800C;&#x53EF;&#x4EE5;&#x7701;&#x7565;&#x6389;&#x5305;&#x7684;&#x540D;&#x5B57;&#xFF0C;&#x4E0B;&#x9762;&#x662F;&#x4F8B;&#x5B50;&#xFF1A;</p>
<pre><code class="lang-Go"><span class="hljs-keyword">import</span> <span class="hljs-string">&quot;gopl.io/ch6/geometry&quot;</span>
perim := geometry.Path{{<span class="hljs-number">1</span>, <span class="hljs-number">1</span>}, {<span class="hljs-number">5</span>, <span class="hljs-number">1</span>}, {<span class="hljs-number">5</span>, <span class="hljs-number">4</span>}, {<span class="hljs-number">1</span>, <span class="hljs-number">1</span>}}
fmt.Println(geometry.PathDistance(perim)) <span class="hljs-comment">// &quot;12&quot;, standalone function</span>
fmt.Println(perim.Distance()) <span class="hljs-comment">// &quot;12&quot;, method of geometry.Path</span>
</code></pre>
<p>&#x8B6F;&#x8A3B;&#xFF1A;&#x5982;&#x679C;&#x6211;&#x5011;&#x8981;&#x7528;&#x65B9;&#x6CD5;&#x53BB;&#x8A08;&#x7B97;perim&#x7684;distance&#xFF0C;&#x9084;&#x9700;&#x8981;&#x53BB;&#x5BEB;&#x5168;geometry&#x7684;&#x5305;&#x540D;&#xFF0C;&#x548C;&#x5176;&#x51FD;&#x6578;&#x540D;&#xFF0C;&#x4F46;&#x662F;&#x56E0;&#x70BA;Path&#x9019;&#x500B;&#x8B8A;&#x91CF;&#x5B9A;&#x7FA9;&#x4E86;&#x4E00;&#x500B;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x7528;&#x7684;Distance&#x65B9;&#x6CD5;&#xFF0C;&#x6240;&#x4EE5;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x5BEB;perim.Distance()&#x3002;&#x76F8;&#x7576;&#x65BC;&#x53EF;&#x4EE5;&#x5C11;&#x6253;&#x5F88;&#x591A;&#x5B57;&#xFF0C;&#x4F5C;&#x8005;&#x61C9;&#x8A72;&#x662F;&#x9019;&#x500B;&#x610F;&#x601D;&#x3002;&#x56E0;&#x70BA;&#x5728;Go&#x88CF;&#x5305;&#x5916;&#x8ABF;&#x7528;&#x51FD;&#x6578;&#x9700;&#x8981;&#x5E36;&#x4E0A;&#x5305;&#x540D;&#xFF0C;&#x9084;&#x662F;&#x633A;&#x9EBB;&#x7169;&#x7684;&#x3002;</p>
<p>&#x8B6F;&#x8A3B;&#xFF1A;&#x5982;&#x679C;&#x6211;&#x5011;&#x8981;&#x7528;&#x65B9;&#x6CD5;&#x53BB;&#x8A08;&#x7B97;perim&#x7684;distance&#xFF0C;&#x9084;&#x9700;&#x8981;&#x53BB;&#x5BEB;&#x5168;geometry&#x7684;&#x5305;&#x540D;&#xFF0C;&#x548C;&#x5176;&#x51FD;&#x6578;&#x540D;&#xFF0C;&#x4F46;&#x662F;&#x56E0;&#x7232;Path&#x9019;&#x500B;&#x8B8A;&#x91CF;&#x5B9A;&#x7FA9;&#x4E86;&#x4E00;&#x500B;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x7528;&#x7684;Distance&#x65B9;&#x6CD5;&#xFF0C;&#x6240;&#x4EE5;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x5BEB;perim.Distance()&#x3002;&#x76F8;&#x7576;&#x65BC;&#x53EF;&#x4EE5;&#x5C11;&#x6253;&#x5F88;&#x591A;&#x5B57;&#xFF0C;&#x4F5C;&#x8005;&#x61C9;&#x8A72;&#x662F;&#x9019;&#x500B;&#x610F;&#x601D;&#x3002;&#x56E0;&#x7232;&#x5728;Go&#x91CC;&#x5305;&#x5916;&#x8ABF;&#x7528;&#x51FD;&#x6578;&#x9700;&#x8981;&#x5E36;&#x4E0A;&#x5305;&#x540D;&#xFF0C;&#x9084;&#x662F;&#x633A;&#x9EBB;&#x7169;&#x7684;&#x3002;</p>
</section>
@@ -2137,7 +2101,7 @@ fmt.Println(perim.Distance()) <span class="hljs-comment">// &quot;12
<a href="../ch6/ch6.html" class="navigation navigation-prev " aria-label="Previous page: 方法"><i class="fa fa-angle-left"></i></a>
<a href="../ch6/ch6-02.html" class="navigation navigation-next " aria-label="Next page: 基於指對象的方法"><i class="fa fa-angle-right"></i></a>
<a href="../ch6/ch6-02.html" class="navigation navigation-next " aria-label="Next page: 基於指對象的方法"><i class="fa fa-angle-right"></i></a>
</div>
</div>

View File

@@ -5,7 +5,7 @@
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>基於指對象的方法 | Go编程语言</title>
<title>基於指對象的方法 | Go编程语言</title>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<meta name="description" content="">
<meta name="generator" content="GitBook 2.5.2">
@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="6.2" data-chapter-title="基於指對象的方法" data-filepath="ch6/ch6-02.md" data-basepath=".." data-revision="Wed Dec 16 2015 10:54:29 GMT+0800 (中国标准时间)">
<div class="book" data-level="6.2" data-chapter-title="基於指對象的方法" data-filepath="ch6/ch6-02.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book-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>
@@ -2059,20 +2023,20 @@
<section class="normal" id="section-">
<h2 id="62-&#x57FA;&#x65BC;&#x6307;&#x937C;&#x5C0D;&#x8C61;&#x7684;&#x65B9;&#x6CD5;">6.2. &#x57FA;&#x65BC;&#x6307;&#x937C;&#x5C0D;&#x8C61;&#x7684;&#x65B9;&#x6CD5;</h2>
<p>&#x7576;&#x8ABF;&#x7528;&#x4E00;&#x500B;&#x51FD;&#x6578;&#x6642;&#xFF0C;&#x6703;&#x5C0D;&#x5176;&#x6BCF;&#x4E00;&#x500B;&#x53C3;&#x6578;&#x503C;&#x9032;&#x884C;&#x62F7;&#x8C9D;&#xFF0C;&#x5982;&#x679C;&#x4E00;&#x500B;&#x51FD;&#x6578;&#x9700;&#x8981;&#x66F4;&#x65B0;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#xFF0C;&#x6216;&#x8005;&#x51FD;&#x6578;&#x7684;&#x5176;&#x4E2D;&#x4E00;&#x500B;&#x53C3;&#x6578;&#x5BE6;&#x5728;&#x592A;&#x5927;&#x6211;&#x5011;&#x5E0C;&#x671B;&#x80FD;&#x5920;&#x907F;&#x514D;&#x9032;&#x884C;&#x9019;&#x7A2E;&#x9ED8;&#x8A8D;&#x7684;&#x62F7;&#x8C9D;&#xFF0C;&#x9019;&#x7A2E;&#x60C5;&#x6CC1;&#x4E0B;&#x6211;&#x5011;&#x5C31;&#x9700;&#x8981;&#x7528;&#x5230;&#x6307;&#x937C;&#x4E86;&#x3002;&#x5C0D;&#x61C9;&#x5230;&#x6211;&#x5011;&#x9019;&#x88CF;&#x7528;&#x4F86;&#x66F4;&#x65B0;&#x63A5;&#x6536;&#x5668;&#x7684;&#x5C0D;&#x8C61;&#x7684;&#x65B9;&#x6CD5;&#xFF0C;&#x7576;&#x9019;&#x500B;&#x63A5;&#x53D7;&#x8005;&#x8B8A;&#x91CF;&#x672C;&#x8EAB;&#x6BD4;&#x8F03;&#x5927;&#x6642;&#xFF0C;&#x6211;&#x5011;&#x5C31;&#x53EF;&#x4EE5;&#x7528;&#x5176;&#x6307;&#x937C;&#x800C;&#x4E0D;&#x662F;&#x5C0D;&#x8C61;&#x4F86;&#x8072;&#x660E;&#x65B9;&#x6CD5;&#xFF0C;&#x5982;&#x4E0B;&#xFF1A;</p>
<h2 id="62-&#x57FA;&#x65BC;&#x6307;&#x91DD;&#x5C0D;&#x8C61;&#x7684;&#x65B9;&#x6CD5;">6.2. &#x57FA;&#x65BC;&#x6307;&#x91DD;&#x5C0D;&#x8C61;&#x7684;&#x65B9;&#x6CD5;</h2>
<p>&#x7576;&#x8ABF;&#x7528;&#x4E00;&#x500B;&#x51FD;&#x6578;&#x6642;&#xFF0C;&#x6703;&#x5C0D;&#x5176;&#x6BCF;&#x4E00;&#x500B;&#x53C3;&#x6578;&#x503C;&#x9032;&#x884C;&#x62F7;&#x8C9D;&#xFF0C;&#x5982;&#x679C;&#x4E00;&#x500B;&#x51FD;&#x6578;&#x9700;&#x8981;&#x66F4;&#x65B0;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#xFF0C;&#x6216;&#x8005;&#x51FD;&#x6578;&#x7684;&#x5176;&#x4E2D;&#x4E00;&#x500B;&#x53C3;&#x6578;&#x5BE6;&#x5728;&#x592A;&#x5927;&#x6211;&#x5011;&#x5E0C;&#x671B;&#x80FD;&#x5920;&#x907F;&#x514D;&#x9032;&#x884C;&#x9019;&#x7A2E;&#x9ED8;&#x8A8D;&#x7684;&#x62F7;&#x8C9D;&#xFF0C;&#x9019;&#x7A2E;&#x60C5;&#x6CC1;&#x4E0B;&#x6211;&#x5011;&#x5C31;&#x9700;&#x8981;&#x7528;&#x5230;&#x6307;&#x91DD;&#x4E86;&#x3002;&#x5C0D;&#x61C9;&#x5230;&#x6211;&#x5011;&#x9019;&#x91CC;&#x7528;&#x4F86;&#x66F4;&#x65B0;&#x63A5;&#x6536;&#x5668;&#x7684;&#x5C0D;&#x8C61;&#x7684;&#x65B9;&#x6CD5;&#xFF0C;&#x7576;&#x9019;&#x500B;&#x63A5;&#x53D7;&#x8005;&#x8B8A;&#x91CF;&#x672C;&#x8EAB;&#x6BD4;&#x8F03;&#x5927;&#x6642;&#xFF0C;&#x6211;&#x5011;&#x5C31;&#x53EF;&#x4EE5;&#x7528;&#x5176;&#x6307;&#x91DD;&#x800C;&#x4E0D;&#x662F;&#x5C0D;&#x8C61;&#x4F86;&#x8072;&#x660E;&#x65B9;&#x6CD5;&#xFF0C;&#x5982;&#x4E0B;&#xFF1A;</p>
<pre><code class="lang-go"><span class="hljs-keyword">func</span> (p *Point) ScaleBy(factor <span class="hljs-typename">float64</span>) {
p.X *= factor
p.Y *= factor
}
</code></pre>
<p>&#x9019;&#x500B;&#x65B9;&#x6CD5;&#x7684;&#x540D;&#x5B57;&#x662F;<code>(*Point).ScaleBy</code>&#x3002;&#x9019;&#x88CF;&#x7684;&#x62EC;&#x865F;&#x662F;&#x5FC5;&#x9B1A;&#x7684;&#xFF1B;&#x6C92;&#x6709;&#x62EC;&#x865F;&#x7684;&#x8A71;&#x9019;&#x500B;&#x9336;&#x9054;&#x5F0F;&#x53EF;&#x80FD;&#x6703;&#x88AB;&#x7406;&#x89E3;&#x70BA;<code>*(Point.ScaleBy)</code>&#x3002;</p>
<p>&#x5728;&#x73FE;&#x5BE6;&#x7684;&#x7A0B;&#x5E8F;&#x88CF;&#xFF0C;&#x4E00;&#x822C;&#x6703;&#x7D04;&#x5B9A;&#x5982;&#x679C;Point&#x9019;&#x500B;&#x985E;&#x6709;&#x4E00;&#x500B;&#x6307;&#x937C;&#x4F5C;&#x70BA;&#x63A5;&#x6536;&#x5668;&#x7684;&#x65B9;&#x6CD5;&#xFF0C;&#x90A3;&#x9EBC;&#x6240;&#x6709;Point&#x7684;&#x65B9;&#x6CD5;&#x90FD;&#x5FC5;&#x9B1A;&#x6709;&#x4E00;&#x500B;&#x6307;&#x937C;&#x63A5;&#x6536;&#x5668;&#xFF0C;&#x537D;&#x4F7F;&#x662F;&#x90A3;&#x4E9B;&#x4F75;&#x4E0D;&#x9700;&#x8981;&#x9019;&#x500B;&#x6307;&#x937C;&#x63A5;&#x6536;&#x5668;&#x7684;&#x51FD;&#x6578;&#x3002;&#x6211;&#x5011;&#x5728;&#x9019;&#x88CF;&#x6253;&#x7834;&#x4E86;&#x9019;&#x500B;&#x7D04;&#x5B9A;&#x96BB;&#x662F;&#x70BA;&#x4E86;&#x5C55;&#x793A;&#x4E00;&#x4E0B;&#x5169;&#x7A2E;&#x65B9;&#x6CD5;&#x7684;&#x7570;&#x8855;&#x800C;&#x5DF2;&#x3002;</p>
<p>&#x96BB;&#x6709;&#x985E;&#x578B;(Point)&#x548C;&#x6307;&#x66CF;&#x4ED6;&#x5011;&#x7684;&#x6307;&#x937C;(*Point)&#xFF0C;&#x7E94;&#x662F;&#x53EF;&#x80FD;&#x6703;&#x9F63;&#x73FE;&#x5728;&#x63A5;&#x6536;&#x5668;&#x8072;&#x660E;&#x88CF;&#x7684;&#x5169;&#x7A2E;&#x63A5;&#x6536;&#x5668;&#x3002;&#x6B64;&#x5916;&#xFF0C;&#x70BA;&#x4E86;&#x907F;&#x514D;&#x6B67;&#x7FA9;&#xFF0C;&#x5728;&#x8072;&#x660E;&#x65B9;&#x6CD5;&#x6642;&#xFF0C;&#x5982;&#x679C;&#x4E00;&#x500B;&#x985E;&#x578B;&#x540D;&#x672C;&#x8EAB;&#x662F;&#x4E00;&#x500B;&#x6307;&#x937C;&#x7684;&#x8A71;&#xFF0C;&#x662F;&#x4E0D;&#x5141;&#x8A31;&#x5176;&#x9F63;&#x73FE;&#x5728;&#x63A5;&#x6536;&#x5668;&#x4E2D;&#x7684;&#xFF0C;&#x6BD4;&#x5982;&#x4E0B;&#x9EAB;&#x9019;&#x500B;&#x4F8B;&#x5B50;&#xFF1A;</p>
<p>&#x9019;&#x500B;&#x65B9;&#x6CD5;&#x7684;&#x540D;&#x5B57;&#x662F;<code>(*Point).ScaleBy</code>&#x3002;&#x9019;&#x91CC;&#x7684;&#x62EC;&#x865F;&#x662F;&#x5FC5;&#x9B1A;&#x7684;&#xFF1B;&#x6C92;&#x6709;&#x62EC;&#x865F;&#x7684;&#x8A71;&#x9019;&#x500B;&#x8868;&#x9054;&#x5F0F;&#x53EF;&#x80FD;&#x6703;&#x88AB;&#x7406;&#x89E3;&#x7232;<code>*(Point.ScaleBy)</code>&#x3002;</p>
<p>&#x5728;&#x73FE;&#x5BE6;&#x7684;&#x7A0B;&#x5E8F;&#x91CC;&#xFF0C;&#x4E00;&#x822C;&#x6703;&#x7D04;&#x5B9A;&#x5982;&#x679C;Point&#x9019;&#x500B;&#x985E;&#x6709;&#x4E00;&#x500B;&#x6307;&#x91DD;&#x4F5C;&#x7232;&#x63A5;&#x6536;&#x5668;&#x7684;&#x65B9;&#x6CD5;&#xFF0C;&#x90A3;&#x9EBD;&#x6240;&#x6709;Point&#x7684;&#x65B9;&#x6CD5;&#x90FD;&#x5FC5;&#x9B1A;&#x6709;&#x4E00;&#x500B;&#x6307;&#x91DD;&#x63A5;&#x6536;&#x5668;&#xFF0C;&#x537D;&#x4F7F;&#x662F;&#x90A3;&#x4E9B;&#x4F75;&#x4E0D;&#x9700;&#x8981;&#x9019;&#x500B;&#x6307;&#x91DD;&#x63A5;&#x6536;&#x5668;&#x7684;&#x51FD;&#x6578;&#x3002;&#x6211;&#x5011;&#x5728;&#x9019;&#x91CC;&#x6253;&#x7834;&#x4E86;&#x9019;&#x500B;&#x7D04;&#x5B9A;&#x96BB;&#x662F;&#x7232;&#x4E86;&#x5C55;&#x793A;&#x4E00;&#x4E0B;&#x5169;&#x7A2E;&#x65B9;&#x6CD5;&#x7684;&#x7570;&#x540C;&#x800C;&#x5DF2;&#x3002;</p>
<p>&#x96BB;&#x6709;&#x985E;&#x578B;(Point)&#x548C;&#x6307;&#x5411;&#x4ED6;&#x5011;&#x7684;&#x6307;&#x91DD;(*Point)&#xFF0C;&#x7E94;&#x662F;&#x53EF;&#x80FD;&#x6703;&#x9F63;&#x73FE;&#x5728;&#x63A5;&#x6536;&#x5668;&#x8072;&#x660E;&#x91CC;&#x7684;&#x5169;&#x7A2E;&#x63A5;&#x6536;&#x5668;&#x3002;&#x6B64;&#x5916;&#xFF0C;&#x7232;&#x4E86;&#x907F;&#x514D;&#x6B67;&#x7FA9;&#xFF0C;&#x5728;&#x8072;&#x660E;&#x65B9;&#x6CD5;&#x6642;&#xFF0C;&#x5982;&#x679C;&#x4E00;&#x500B;&#x985E;&#x578B;&#x540D;&#x672C;&#x8EAB;&#x662F;&#x4E00;&#x500B;&#x6307;&#x91DD;&#x7684;&#x8A71;&#xFF0C;&#x662F;&#x4E0D;&#x5141;&#x8A31;&#x5176;&#x9F63;&#x73FE;&#x5728;&#x63A5;&#x6536;&#x5668;&#x4E2D;&#x7684;&#xFF0C;&#x6BD4;&#x5982;&#x4E0B;&#x9762;&#x9019;&#x500B;&#x4F8B;&#x5B50;&#xFF1A;</p>
<pre><code class="lang-go"><span class="hljs-keyword">type</span> P *<span class="hljs-typename">int</span>
<span class="hljs-keyword">func</span> (P) f() { <span class="hljs-comment">/* ... */</span> } <span class="hljs-comment">// compile error: invalid receiver type</span>
</code></pre>
<p>&#x60F3;&#x8981;&#x8ABF;&#x7528;&#x6307;&#x937C;&#x985E;&#x578B;&#x65B9;&#x6CD5;<code>(*Point).ScaleBy</code>&#xFF0C;&#x96BB;&#x8981;&#x63D0;&#x4F9B;&#x4E00;&#x500B;Point&#x985E;&#x578B;&#x7684;&#x6307;&#x937C;&#x537D;&#x53EF;&#xFF0C;&#x50CF;&#x4E0B;&#x9EAB;&#x9019;&#x6A23;&#x3002;</p>
<p>&#x60F3;&#x8981;&#x8ABF;&#x7528;&#x6307;&#x91DD;&#x985E;&#x578B;&#x65B9;&#x6CD5;<code>(*Point).ScaleBy</code>&#xFF0C;&#x96BB;&#x8981;&#x63D0;&#x4F9B;&#x4E00;&#x500B;Point&#x985E;&#x578B;&#x7684;&#x6307;&#x91DD;&#x537D;&#x53EF;&#xFF0C;&#x50CF;&#x4E0B;&#x9762;&#x9019;&#x6A23;&#x3002;</p>
<pre><code class="lang-go">r := &amp;Point{<span class="hljs-number">1</span>, <span class="hljs-number">2</span>}
r.ScaleBy(<span class="hljs-number">2</span>)
fmt.Println(*r) <span class="hljs-comment">// &quot;{2, 4}&quot;</span>
@@ -2088,34 +2052,34 @@ fmt.Println(p) <span class="hljs-comment">// &quot;{2, 4}&quot;</span>
(&amp;p).ScaleBy(<span class="hljs-number">2</span>)
fmt.Println(p) <span class="hljs-comment">// &quot;{2, 4}&quot;</span>
</code></pre>
<p>&#x4E0D;&#x904E;&#x5F8C;&#x9EAB;&#x5169;&#x7A2E;&#x65B9;&#x6CD5;&#x6709;&#x4E9B;&#x7B28;&#x62D9;&#x3002;&#x5016;&#x904B;&#x7684;&#x662F;&#xFF0C;go&#x8A9E;&#x8A00;&#x672C;&#x8EAB;&#x5728;&#x9019;&#x7A2E;&#x5730;&#x65B9;&#x6703;&#x5E6B;&#x5230;&#x6211;&#x5011;&#x3002;&#x5982;&#x679C;&#x63A5;&#x6536;&#x5668;p&#x662F;&#x4E00;&#x500B;Point&#x985E;&#x578B;&#x7684;&#x8B8A;&#x91CF;&#xFF0C;&#x4F75;&#x4E14;&#x5176;&#x65B9;&#x6CD5;&#x9700;&#x8981;&#x4E00;&#x500B;Point&#x6307;&#x937C;&#x4F5C;&#x70BA;&#x63A5;&#x6536;&#x5668;&#xFF0C;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x7528;&#x4E0B;&#x9EAB;&#x9019;&#x7A2E;&#x7C21;&#x77ED;&#x7684;&#x5BEB;&#x6CD5;&#xFF1A;</p>
<p>&#x4E0D;&#x904E;&#x5F8C;&#x9762;&#x5169;&#x7A2E;&#x65B9;&#x6CD5;&#x6709;&#x4E9B;&#x7B28;&#x62D9;&#x3002;&#x5E78;&#x904B;&#x7684;&#x662F;&#xFF0C;go&#x8A9E;&#x8A00;&#x672C;&#x8EAB;&#x5728;&#x9019;&#x7A2E;&#x5730;&#x65B9;&#x6703;&#x5E6B;&#x5230;&#x6211;&#x5011;&#x3002;&#x5982;&#x679C;&#x63A5;&#x6536;&#x5668;p&#x662F;&#x4E00;&#x500B;Point&#x985E;&#x578B;&#x7684;&#x8B8A;&#x91CF;&#xFF0C;&#x4F75;&#x4E14;&#x5176;&#x65B9;&#x6CD5;&#x9700;&#x8981;&#x4E00;&#x500B;Point&#x6307;&#x91DD;&#x4F5C;&#x7232;&#x63A5;&#x6536;&#x5668;&#xFF0C;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x7528;&#x4E0B;&#x9762;&#x9019;&#x7A2E;&#x7C21;&#x77ED;&#x7684;&#x5BEB;&#x6CD5;&#xFF1A;</p>
<pre><code class="lang-go">p.ScaleBy(<span class="hljs-number">2</span>)
</code></pre>
<p>&#x7DE8;&#x8B6F;&#x5668;&#x6703;&#x96B1;&#x5F0F;&#x5730;&#x5E6B;&#x6211;&#x5011;&#x7528;&amp;p&#x53BB;&#x8ABF;&#x7528;ScaleBy&#x9019;&#x500B;&#x65B9;&#x6CD5;&#x3002;&#x9019;&#x7A2E;&#x7C21;&#x5BEB;&#x65B9;&#x6CD5;&#x96BB;&#x9069;&#x7528;&#x65BC;&#x201C;&#x8B8A;&#x91CF;&#x201D;&#xFF0C;&#x5305;&#x62EC;struct&#x88CF;&#x7684;&#x5B57;&#x6BB5;&#x6BD4;&#x5982;p.X&#xFF0C;&#x4EE5;&#x53CA;array&#x548C;slice&#x5167;&#x7684;&#x5143;&#x7D20;&#x6BD4;&#x5982;perim[0]&#x3002;&#x6211;&#x5011;&#x4E0D;&#x80FD;&#x901A;&#x904E;&#x4E00;&#x500B;&#x7121;&#x6CD5;&#x53D6;&#x5230;&#x5730;&#x5740;&#x7684;&#x63A5;&#x6536;&#x5668;&#x4F86;&#x8ABF;&#x7528;&#x6307;&#x937C;&#x65B9;&#x6CD5;&#xFF0C;&#x6BD4;&#x5982;&#x81E8;&#x6642;&#x8B8A;&#x91CF;&#x7684;&#x5167;&#x5B58;&#x5730;&#x5740;&#x5C31;&#x7121;&#x6CD5;&#x7A6B;&#x53D6;&#x5F97;&#x5230;&#xFF1A;</p>
<p>&#x7DE8;&#x8B6F;&#x5668;&#x6703;&#x96B1;&#x5F0F;&#x5730;&#x5E6B;&#x6211;&#x5011;&#x7528;&amp;p&#x53BB;&#x8ABF;&#x7528;ScaleBy&#x9019;&#x500B;&#x65B9;&#x6CD5;&#x3002;&#x9019;&#x7A2E;&#x7C21;&#x5BEB;&#x65B9;&#x6CD5;&#x96BB;&#x9069;&#x7528;&#x65BC;&#x201C;&#x8B8A;&#x91CF;&#x201D;&#xFF0C;&#x5305;&#x62EC;struct&#x91CC;&#x7684;&#x5B57;&#x6BB5;&#x6BD4;&#x5982;p.X&#xFF0C;&#x4EE5;&#x53CA;array&#x548C;slice&#x5167;&#x7684;&#x5143;&#x7D20;&#x6BD4;&#x5982;perim[0]&#x3002;&#x6211;&#x5011;&#x4E0D;&#x80FD;&#x901A;&#x904E;&#x4E00;&#x500B;&#x7121;&#x6CD5;&#x53D6;&#x5230;&#x5730;&#x5740;&#x7684;&#x63A5;&#x6536;&#x5668;&#x4F86;&#x8ABF;&#x7528;&#x6307;&#x91DD;&#x65B9;&#x6CD5;&#xFF0C;&#x6BD4;&#x5982;&#x81E8;&#x6642;&#x8B8A;&#x91CF;&#x7684;&#x5167;&#x5B58;&#x5730;&#x5740;&#x5C31;&#x7121;&#x6CD5;&#x7A6B;&#x53D6;&#x5F97;&#x5230;&#xFF1A;</p>
<pre><code class="lang-go">Point{<span class="hljs-number">1</span>, <span class="hljs-number">2</span>}.ScaleBy(<span class="hljs-number">2</span>) <span class="hljs-comment">// compile error: can&apos;t take address of Point literal</span>
</code></pre>
<p>&#x4F46;&#x662F;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x7528;&#x4E00;&#x500B;<code>*Point</code>&#x9019;&#x6A23;&#x7684;&#x63A5;&#x6536;&#x5668;&#x4F86;&#x8ABF;&#x7528;Point&#x7684;&#x65B9;&#x6CD5;&#xFF0C;&#x56E0;&#x70BA;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x901A;&#x904E;&#x5730;&#x5740;&#x4F86;&#x627E;&#x5230;&#x9019;&#x500B;&#x8B8A;&#x91CF;&#xFF0C;&#x96BB;&#x8981;&#x7528;&#x89E3;&#x5F15;&#x7528;&#x7B26;&#x865F;<code>*</code>&#x4F86;&#x53D6;&#x5230;&#x8A72;&#x8B8A;&#x91CF;&#x537D;&#x53EF;&#x3002;&#x7DE8;&#x8B6F;&#x5668;&#x5728;&#x9019;&#x88CF;&#x4E5F;&#x6703;&#x7D66;&#x6211;&#x5011;&#x96B1;&#x5F0F;&#x5730;&#x63D2;&#x5165;<code>*</code>&#x9019;&#x500B;&#x64CD;&#x4F5C;&#x7B26;&#xFF0C;&#x6240;&#x4EE5;&#x4E0B;&#x9EAB;&#x9019;&#x5169;&#x7A2E;&#x5BEB;&#x6CD5;&#x7B49;&#x50F9;&#x7684;&#xFF1A;</p>
<p>&#x4F46;&#x662F;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x7528;&#x4E00;&#x500B;<code>*Point</code>&#x9019;&#x6A23;&#x7684;&#x63A5;&#x6536;&#x5668;&#x4F86;&#x8ABF;&#x7528;Point&#x7684;&#x65B9;&#x6CD5;&#xFF0C;&#x56E0;&#x7232;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x901A;&#x904E;&#x5730;&#x5740;&#x4F86;&#x627E;&#x5230;&#x9019;&#x500B;&#x8B8A;&#x91CF;&#xFF0C;&#x96BB;&#x8981;&#x7528;&#x89E3;&#x5F15;&#x7528;&#x7B26;&#x865F;<code>*</code>&#x4F86;&#x53D6;&#x5230;&#x8A72;&#x8B8A;&#x91CF;&#x537D;&#x53EF;&#x3002;&#x7DE8;&#x8B6F;&#x5668;&#x5728;&#x9019;&#x91CC;&#x4E5F;&#x6703;&#x7D66;&#x6211;&#x5011;&#x96B1;&#x5F0F;&#x5730;&#x63D2;&#x5165;<code>*</code>&#x9019;&#x500B;&#x64CD;&#x4F5C;&#x7B26;&#xFF0C;&#x6240;&#x4EE5;&#x4E0B;&#x9762;&#x9019;&#x5169;&#x7A2E;&#x5BEB;&#x6CD5;&#x7B49;&#x50F9;&#x7684;&#xFF1A;</p>
<pre><code class="lang-Go">pptr.Distance(q)
(*pptr).Distance(q)
</code></pre>
<p>Let&#x2019;s summarize these three cases again, since they are a frequent point of confusion. In every valid method call expression, exactly one of these three statements is true.
&#x9019;&#x88CF;&#x7684;&#x5E7E;&#x500B;&#x4F8B;&#x5B50;&#x53EF;&#x80FD;&#x8B93;&#x4F60;&#x6709;&#x4E9B;&#x774F;&#x60D1;&#xFF0C;&#x6240;&#x4EE5;&#x6211;&#x5011;&#x7E3D;&#x7D50;&#x4E00;&#x4E0B;&#xFF1A;&#x5728;&#x6BCF;&#x4E00;&#x500B;&#x95A4;&#x6CD5;&#x7684;&#x65B9;&#x6CD5;&#x8ABF;&#x7528;&#x9336;&#x9054;&#x5F0F;&#x4E2D;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x4E0B;&#x9EAB;&#x4E09;&#x7A2E;&#x60C5;&#x6CC1;&#x88CF;&#x7684;&#x4EFB;&#x610F;&#x4E00;&#x7A2E;&#x60C5;&#x6CC1;&#x90FD;&#x662F;&#x53EF;&#x4EE5;&#x7684;&#xFF1A;</p>
<p>&#x4E0D;&#x8AD6;&#x662F;&#x63A5;&#x6536;&#x5668;&#x7684;&#x5BE6;&#x969B;&#x53C3;&#x6578;&#x548C;&#x5176;&#x63A5;&#x6536;&#x5668;&#x7684;&#x5F62;&#x5F0F;&#x53C3;&#x6578;&#x76F8;&#x8855;&#xFF0C;&#x6BD4;&#x5982;&#x5169;&#x8005;&#x90FD;&#x662F;&#x985E;&#x578B;T&#x6216;&#x8005;&#x90FD;&#x662F;&#x985E;&#x578B;<code>*T</code>&#xFF1A;</p>
&#x9019;&#x91CC;&#x7684;&#x5E7E;&#x500B;&#x4F8B;&#x5B50;&#x53EF;&#x80FD;&#x8B93;&#x4F60;&#x6709;&#x4E9B;&#x774F;&#x60D1;&#xFF0C;&#x6240;&#x4EE5;&#x6211;&#x5011;&#x7E3D;&#x7D50;&#x4E00;&#x4E0B;&#xFF1A;&#x5728;&#x6BCF;&#x4E00;&#x500B;&#x5408;&#x6CD5;&#x7684;&#x65B9;&#x6CD5;&#x8ABF;&#x7528;&#x8868;&#x9054;&#x5F0F;&#x4E2D;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x4E0B;&#x9762;&#x4E09;&#x7A2E;&#x60C5;&#x6CC1;&#x91CC;&#x7684;&#x4EFB;&#x610F;&#x4E00;&#x7A2E;&#x60C5;&#x6CC1;&#x90FD;&#x662F;&#x53EF;&#x4EE5;&#x7684;&#xFF1A;</p>
<p>&#x4E0D;&#x8AD6;&#x662F;&#x63A5;&#x6536;&#x5668;&#x7684;&#x5BE6;&#x969B;&#x53C3;&#x6578;&#x548C;&#x5176;&#x63A5;&#x6536;&#x5668;&#x7684;&#x5F62;&#x5F0F;&#x53C3;&#x6578;&#x76F8;&#x540C;&#xFF0C;&#x6BD4;&#x5982;&#x5169;&#x8005;&#x90FD;&#x662F;&#x985E;&#x578B;T&#x6216;&#x8005;&#x90FD;&#x662F;&#x985E;&#x578B;<code>*T</code>&#xFF1A;</p>
<pre><code class="lang-go">Point{<span class="hljs-number">1</span>, <span class="hljs-number">2</span>}.Distance(q) <span class="hljs-comment">// Point</span>
pptr.ScaleBy(<span class="hljs-number">2</span>) <span class="hljs-comment">// *Point</span>
</code></pre>
<p>&#x6216;&#x8005;&#x63A5;&#x6536;&#x5668;&#x5F62;&#x53C3;&#x662F;&#x985E;&#x578B;T&#xFF0C;&#x4F46;&#x63A5;&#x6536;&#x5668;&#x5BE6;&#x53C3;&#x662F;&#x985E;&#x578B;<code>*T</code>&#xFF0C;&#x9019;&#x7A2E;&#x60C5;&#x6CC1;&#x4E0B;&#x7DE8;&#x8B6F;&#x5668;&#x6703;&#x96B1;&#x5F0F;&#x5730;&#x70BA;&#x6211;&#x5011;&#x53D6;&#x8B8A;&#x91CF;&#x7684;&#x5730;&#x5740;&#xFF1A;</p>
<p>&#x6216;&#x8005;&#x63A5;&#x6536;&#x5668;&#x5F62;&#x53C3;&#x662F;&#x985E;&#x578B;T&#xFF0C;&#x4F46;&#x63A5;&#x6536;&#x5668;&#x5BE6;&#x53C3;&#x662F;&#x985E;&#x578B;<code>*T</code>&#xFF0C;&#x9019;&#x7A2E;&#x60C5;&#x6CC1;&#x4E0B;&#x7DE8;&#x8B6F;&#x5668;&#x6703;&#x96B1;&#x5F0F;&#x5730;&#x7232;&#x6211;&#x5011;&#x53D6;&#x8B8A;&#x91CF;&#x7684;&#x5730;&#x5740;&#xFF1A;</p>
<pre><code class="lang-go">p.ScaleBy(<span class="hljs-number">2</span>) <span class="hljs-comment">// implicit (&amp;p)</span>
</code></pre>
<p>&#x6216;&#x8005;&#x63A5;&#x6536;&#x5668;&#x5F62;&#x53C3;&#x662F;&#x985E;&#x578B;<code>*T</code>&#xFF0C;&#x5BE6;&#x53C3;&#x662F;&#x985E;&#x578B;T&#x3002;&#x7DE8;&#x8B6F;&#x5668;&#x6703;&#x96B1;&#x5F0F;&#x5730;&#x70BA;&#x6211;&#x5011;&#x89E3;&#x5F15;&#x7528;&#xFF0C;&#x53D6;&#x5230;&#x6307;&#x937C;&#x6307;&#x66CF;&#x7684;&#x5BE6;&#x969B;&#x8B8A;&#x91CF;&#xFF1A;</p>
<p>&#x6216;&#x8005;&#x63A5;&#x6536;&#x5668;&#x5F62;&#x53C3;&#x662F;&#x985E;&#x578B;<code>*T</code>&#xFF0C;&#x5BE6;&#x53C3;&#x662F;&#x985E;&#x578B;T&#x3002;&#x7DE8;&#x8B6F;&#x5668;&#x6703;&#x96B1;&#x5F0F;&#x5730;&#x7232;&#x6211;&#x5011;&#x89E3;&#x5F15;&#x7528;&#xFF0C;&#x53D6;&#x5230;&#x6307;&#x91DD;&#x6307;&#x5411;&#x7684;&#x5BE6;&#x969B;&#x8B8A;&#x91CF;&#xFF1A;</p>
<pre><code class="lang-go">pptr.Distance(q) <span class="hljs-comment">// implicit (*pptr)</span>
</code></pre>
<p>&#x5982;&#x679C;&#x985E;&#x578B;T&#x7684;&#x6240;&#x6709;&#x65B9;&#x6CD5;&#x90FD;&#x662F;&#x7528;T&#x985E;&#x578B;&#x81EA;&#x5DF1;&#x4F86;&#x505A;&#x63A5;&#x6536;&#x5668;(&#x800C;&#x4E0D;&#x662F;<code>*T</code>)&#xFF0C;&#x90A3;&#x9EBC;&#x62F7;&#x8C9D;&#x9019;&#x7A2E;&#x985E;&#x578B;&#x7684;&#x5BE6;&#x4F8B;&#x5C31;&#x662F;&#x5B89;&#x5168;&#x7684;&#xFF1B;&#x8ABF;&#x7528;&#x4ED6;&#x7684;&#x4EFB;&#x4F55;&#x4E00;&#x500B;&#x65B9;&#x6CD5;&#x4E5F;&#x5C31;&#x6703;&#x7522;&#x751F;&#x4E00;&#x500B;&#x503C;&#x7684;&#x62F7;&#x8C9D;&#x3002;&#x6BD4;&#x5982;time.Duration&#x7684;&#x9019;&#x500B;&#x985E;&#x578B;&#xFF0C;&#x5728;&#x8ABF;&#x7528;&#x5176;&#x65B9;&#x6CD5;&#x6642;&#x5C31;&#x6703;&#x88AB;&#x5168;&#x90E8;&#x62F7;&#x8C9D;&#x4E00;&#x4EFD;&#xFF0C;&#x5305;&#x62EC;&#x5728;&#x4F5C;&#x70BA;&#x53C3;&#x6578;&#x50B3;&#x5165;&#x51FD;&#x6578;&#x7684;&#x6642;&#x5019;&#x3002;&#x4F46;&#x662F;&#x5982;&#x679C;&#x4E00;&#x500B;&#x65B9;&#x6CD5;&#x4F7F;&#x7528;&#x6307;&#x937C;&#x4F5C;&#x70BA;&#x63A5;&#x6536;&#x5668;&#xFF0C;&#x4F60;&#x9700;&#x8981;&#x907F;&#x514D;&#x5C0D;&#x5176;&#x9032;&#x884C;&#x62F7;&#x8C9D;&#xFF0C;&#x56E0;&#x70BA;&#x9019;&#x6A23;&#x53EF;&#x80FD;&#x6703;&#x7834;&#x58DE;&#x6389;&#x8A72;&#x985E;&#x578B;&#x5167;&#x90E8;&#x7684;&#x4E0D;&#x8B8A;&#x6027;&#x3002;&#x6BD4;&#x5982;&#x4F60;&#x5C0D;bytes.Buffer&#x5C0D;&#x8C61;&#x9032;&#x884C;&#x4E86;&#x62F7;&#x8C9D;&#xFF0C;&#x90A3;&#x9EBC;&#x53EF;&#x80FD;&#x6703;&#x5F15;&#x8D77;&#x539F;&#x59CB;&#x5C0D;&#x8C61;&#x548C;&#x62F7;&#x8C9D;&#x5C0D;&#x8C61;&#x96BB;&#x662F;&#x5F46;&#x540D;&#x800C;&#x5DF2;&#xFF0C;&#x4F46;&#x5BE6;&#x969B;&#x4E0A;&#x5176;&#x6307;&#x66CF;&#x7684;&#x5C0D;&#x8C61;&#x662F;&#x4E00;&#x7DFB;&#x7684;&#x3002;&#x7DCA;&#x63A5;&#x7740;&#x5C0D;&#x62F7;&#x8C9D;&#x5F8C;&#x7684;&#x8B8A;&#x91CF;&#x9032;&#x884C;&#x8129;&#x6539;&#x53EF;&#x80FD;&#x6703;&#x6709;&#x8B93;&#x4F60;&#x610F;&#x5916;&#x7684;&#x7D50;&#x679C;&#x3002;</p>
<p>&#x8B6F;&#x8A3B;&#xFF1A;&#x4F5C;&#x8005;&#x9019;&#x88CF;&#x8AAA;&#x7684;&#x6BD4;&#x8F03;&#x7E5E;&#xFF0C;&#x5176;&#x5BE6;&#x6709;&#x5169;&#x9EDE;&#xFF1A;
1.&#x4E0D;&#x7BA1;&#x4F60;&#x7684;method&#x7684;receiver&#x662F;&#x6307;&#x937C;&#x985E;&#x578B;&#x9084;&#x662F;&#x975E;&#x6307;&#x937C;&#x985E;&#x578B;&#xFF0C;&#x90FD;&#x662F;&#x53EF;&#x4EE5;&#x901A;&#x904E;&#x6307;&#x937C;/&#x975E;&#x6307;&#x937C;&#x985E;&#x578B;&#x9032;&#x884C;&#x8ABF;&#x7528;&#x7684;&#xFF0C;&#x7DE8;&#x8B6F;&#x5668;&#x6703;&#x5E6B;&#x4F60;&#x505A;&#x985E;&#x578B;&#x8F49;&#x63DB;
2.&#x5728;&#x8072;&#x660E;&#x4E00;&#x500B;method&#x7684;receiver&#x8A72;&#x662F;&#x6307;&#x937C;&#x9084;&#x662F;&#x975E;&#x6307;&#x937C;&#x985E;&#x578B;&#x6642;&#xFF0C;&#x4F60;&#x9700;&#x8981;&#x8003;&#x616E;&#x5169;&#x65B9;&#x9EAB;&#x7684;&#x5167;&#x90E8;&#xFF0C;&#x7B2C;&#x4E00;&#x65B9;&#x9EAB;&#x662F;&#x9019;&#x500B;&#x5C0D;&#x8C61;&#x672C;&#x8EAB;&#x662F;&#x4E0D;&#x662F;&#x7279;&#x5F46;&#x5927;&#xFF0C;&#x5982;&#x679C;&#x8072;&#x660E;&#x70BA;&#x975E;&#x6307;&#x937C;&#x8B8A;&#x91CF;&#x6642;&#xFF0C;&#x8ABF;&#x7528;&#x6703;&#x7522;&#x751F;&#x4E00;&#x6B21;&#x62F7;&#x8C9D;&#xFF1B;&#x7B2C;&#x4E8C;&#x65B9;&#x9EAB;&#x662F;&#x5982;&#x679C;&#x4F60;&#x7528;&#x6307;&#x937C;&#x985E;&#x578B;&#x4F5C;&#x70BA;receiver&#xFF0C;&#x90A3;&#x9EBC;&#x4F60;&#x4E00;&#x5B9A;&#x8981;&#x8A3B;&#x610F;&#xFF0C;&#x9019;&#x7A2E;&#x6307;&#x937C;&#x985E;&#x578B;&#x6307;&#x66CF;&#x7684;&#x59CB;&#x7D42;&#x662F;&#x4E00;&#x584A;&#x5167;&#x5B58;&#x5730;&#x5740;&#xFF0C;&#x5C31;&#x7B97;&#x4F60;&#x5C0D;&#x5176;&#x9032;&#x884C;&#x4E86;&#x62F7;&#x8C9D;&#x3002;&#x719F;&#x6089;C&#x6216;&#x8005;C&#x8279;&#x7684;&#x4EBA;&#x9019;&#x88CF;&#x61C9;&#x8A72;&#x5F88;&#x5FEB;&#x80FD;&#x660E;&#x767D;&#x3002;</p>
<h3 id="621-nil&#x4E5F;&#x662F;&#x4E00;&#x500B;&#x95A4;&#x6CD5;&#x7684;&#x63A5;&#x6536;&#x5668;&#x985E;&#x578B;">6.2.1. Nil&#x4E5F;&#x662F;&#x4E00;&#x500B;&#x95A4;&#x6CD5;&#x7684;&#x63A5;&#x6536;&#x5668;&#x985E;&#x578B;</h3>
<p>&#x5C31;&#x50CF;&#x4E00;&#x4E9B;&#x51FD;&#x6578;&#x5141;&#x8A31;nil&#x6307;&#x937C;&#x4F5C;&#x70BA;&#x53C3;&#x6578;&#x4E00;&#x6A23;&#xFF0C;&#x65B9;&#x6CD5;&#x7406;&#x8AD6;&#x4E0A;&#x4E5F;&#x53EF;&#x4EE5;&#x7528;nil&#x6307;&#x937C;&#x4F5C;&#x70BA;&#x5176;&#x63A5;&#x6536;&#x5668;&#xFF0C;&#x5C24;&#x5176;&#x7576;nil&#x5C0D;&#x65BC;&#x5C0D;&#x8C61;&#x4F86;&#x8AAA;&#x662F;&#x95A4;&#x6CD5;&#x7684;&#x96F6;&#x503C;&#x6642;&#xFF0C;&#x6BD4;&#x5982;map&#x6216;&#x8005;slice&#x3002;&#x5728;&#x4E0B;&#x9EAB;&#x7684;&#x7C21;&#x55AE;int&#x93C8;&#x9336;&#x7684;&#x4F8B;&#x5B50;&#x88CF;&#xFF0C;nil&#x4EE3;&#x9336;&#x7684;&#x662F;&#x7A7A;&#x93C8;&#x9336;&#xFF1A;</p>
<p>&#x5982;&#x679C;&#x985E;&#x578B;T&#x7684;&#x6240;&#x6709;&#x65B9;&#x6CD5;&#x90FD;&#x662F;&#x7528;T&#x985E;&#x578B;&#x81EA;&#x5DF1;&#x4F86;&#x505A;&#x63A5;&#x6536;&#x5668;(&#x800C;&#x4E0D;&#x662F;<code>*T</code>)&#xFF0C;&#x90A3;&#x9EBD;&#x62F7;&#x8C9D;&#x9019;&#x7A2E;&#x985E;&#x578B;&#x7684;&#x5BE6;&#x4F8B;&#x5C31;&#x662F;&#x5B89;&#x5168;&#x7684;&#xFF1B;&#x8ABF;&#x7528;&#x4ED6;&#x7684;&#x4EFB;&#x4F55;&#x4E00;&#x500B;&#x65B9;&#x6CD5;&#x4E5F;&#x5C31;&#x6703;&#x7523;&#x751F;&#x4E00;&#x500B;&#x503C;&#x7684;&#x62F7;&#x8C9D;&#x3002;&#x6BD4;&#x5982;time.Duration&#x7684;&#x9019;&#x500B;&#x985E;&#x578B;&#xFF0C;&#x5728;&#x8ABF;&#x7528;&#x5176;&#x65B9;&#x6CD5;&#x6642;&#x5C31;&#x6703;&#x88AB;&#x5168;&#x90E8;&#x62F7;&#x8C9D;&#x4E00;&#x4EFD;&#xFF0C;&#x5305;&#x62EC;&#x5728;&#x4F5C;&#x7232;&#x53C3;&#x6578;&#x50B3;&#x5165;&#x51FD;&#x6578;&#x7684;&#x6642;&#x5019;&#x3002;&#x4F46;&#x662F;&#x5982;&#x679C;&#x4E00;&#x500B;&#x65B9;&#x6CD5;&#x4F7F;&#x7528;&#x6307;&#x91DD;&#x4F5C;&#x7232;&#x63A5;&#x6536;&#x5668;&#xFF0C;&#x4F60;&#x9700;&#x8981;&#x907F;&#x514D;&#x5C0D;&#x5176;&#x9032;&#x884C;&#x62F7;&#x8C9D;&#xFF0C;&#x56E0;&#x7232;&#x9019;&#x6A23;&#x53EF;&#x80FD;&#x6703;&#x7834;&#x58DE;&#x6389;&#x8A72;&#x985E;&#x578B;&#x5167;&#x90E8;&#x7684;&#x4E0D;&#x8B8A;&#x6027;&#x3002;&#x6BD4;&#x5982;&#x4F60;&#x5C0D;bytes.Buffer&#x5C0D;&#x8C61;&#x9032;&#x884C;&#x4E86;&#x62F7;&#x8C9D;&#xFF0C;&#x90A3;&#x9EBD;&#x53EF;&#x80FD;&#x6703;&#x5F15;&#x8D77;&#x539F;&#x59CB;&#x5C0D;&#x8C61;&#x548C;&#x62F7;&#x8C9D;&#x5C0D;&#x8C61;&#x96BB;&#x662F;&#x522B;&#x540D;&#x800C;&#x5DF2;&#xFF0C;&#x4F46;&#x5BE6;&#x969B;&#x4E0A;&#x5176;&#x6307;&#x5411;&#x7684;&#x5C0D;&#x8C61;&#x662F;&#x4E00;&#x81F4;&#x7684;&#x3002;&#x7DCA;&#x63A5;&#x7740;&#x5C0D;&#x62F7;&#x8C9D;&#x5F8C;&#x7684;&#x8B8A;&#x91CF;&#x9032;&#x884C;&#x8129;&#x6539;&#x53EF;&#x80FD;&#x6703;&#x6709;&#x8B93;&#x4F60;&#x610F;&#x5916;&#x7684;&#x7D50;&#x679C;&#x3002;</p>
<p>&#x8B6F;&#x8A3B;&#xFF1A;&#x4F5C;&#x8005;&#x9019;&#x91CC;&#x8AAC;&#x7684;&#x6BD4;&#x8F03;&#x7E5E;&#xFF0C;&#x5176;&#x5BE6;&#x6709;&#x5169;&#x9EDE;&#xFF1A;
1.&#x4E0D;&#x7BA1;&#x4F60;&#x7684;method&#x7684;receiver&#x662F;&#x6307;&#x91DD;&#x985E;&#x578B;&#x9084;&#x662F;&#x975E;&#x6307;&#x91DD;&#x985E;&#x578B;&#xFF0C;&#x90FD;&#x662F;&#x53EF;&#x4EE5;&#x901A;&#x904E;&#x6307;&#x91DD;/&#x975E;&#x6307;&#x91DD;&#x985E;&#x578B;&#x9032;&#x884C;&#x8ABF;&#x7528;&#x7684;&#xFF0C;&#x7DE8;&#x8B6F;&#x5668;&#x6703;&#x5E6B;&#x4F60;&#x505A;&#x985E;&#x578B;&#x8F49;&#x63DB;
2.&#x5728;&#x8072;&#x660E;&#x4E00;&#x500B;method&#x7684;receiver&#x8A72;&#x662F;&#x6307;&#x91DD;&#x9084;&#x662F;&#x975E;&#x6307;&#x91DD;&#x985E;&#x578B;&#x6642;&#xFF0C;&#x4F60;&#x9700;&#x8981;&#x8003;&#x616E;&#x5169;&#x65B9;&#x9762;&#x7684;&#x5167;&#x90E8;&#xFF0C;&#x7B2C;&#x4E00;&#x65B9;&#x9762;&#x662F;&#x9019;&#x500B;&#x5C0D;&#x8C61;&#x672C;&#x8EAB;&#x662F;&#x4E0D;&#x662F;&#x7279;&#x522B;&#x5927;&#xFF0C;&#x5982;&#x679C;&#x8072;&#x660E;&#x7232;&#x975E;&#x6307;&#x91DD;&#x8B8A;&#x91CF;&#x6642;&#xFF0C;&#x8ABF;&#x7528;&#x6703;&#x7523;&#x751F;&#x4E00;&#x6B21;&#x62F7;&#x8C9D;&#xFF1B;&#x7B2C;&#x4E8C;&#x65B9;&#x9762;&#x662F;&#x5982;&#x679C;&#x4F60;&#x7528;&#x6307;&#x91DD;&#x985E;&#x578B;&#x4F5C;&#x7232;receiver&#xFF0C;&#x90A3;&#x9EBD;&#x4F60;&#x4E00;&#x5B9A;&#x8981;&#x8A3B;&#x610F;&#xFF0C;&#x9019;&#x7A2E;&#x6307;&#x91DD;&#x985E;&#x578B;&#x6307;&#x5411;&#x7684;&#x59CB;&#x7D42;&#x662F;&#x4E00;&#x584A;&#x5167;&#x5B58;&#x5730;&#x5740;&#xFF0C;&#x5C31;&#x7B97;&#x4F60;&#x5C0D;&#x5176;&#x9032;&#x884C;&#x4E86;&#x62F7;&#x8C9D;&#x3002;&#x719F;&#x6089;C&#x6216;&#x8005;C&#x8279;&#x7684;&#x4EBA;&#x9019;&#x91CC;&#x61C9;&#x8A72;&#x5F88;&#x5FEB;&#x80FD;&#x660E;&#x767D;&#x3002;</p>
<h3 id="621-nil&#x4E5F;&#x662F;&#x4E00;&#x500B;&#x5408;&#x6CD5;&#x7684;&#x63A5;&#x6536;&#x5668;&#x985E;&#x578B;">6.2.1. Nil&#x4E5F;&#x662F;&#x4E00;&#x500B;&#x5408;&#x6CD5;&#x7684;&#x63A5;&#x6536;&#x5668;&#x985E;&#x578B;</h3>
<p>&#x5C31;&#x50CF;&#x4E00;&#x4E9B;&#x51FD;&#x6578;&#x5141;&#x8A31;nil&#x6307;&#x91DD;&#x4F5C;&#x7232;&#x53C3;&#x6578;&#x4E00;&#x6A23;&#xFF0C;&#x65B9;&#x6CD5;&#x7406;&#x8AD6;&#x4E0A;&#x4E5F;&#x53EF;&#x4EE5;&#x7528;nil&#x6307;&#x91DD;&#x4F5C;&#x7232;&#x5176;&#x63A5;&#x6536;&#x5668;&#xFF0C;&#x5C24;&#x5176;&#x7576;nil&#x5C0D;&#x65BC;&#x5C0D;&#x8C61;&#x4F86;&#x8AAC;&#x662F;&#x5408;&#x6CD5;&#x7684;&#x96F6;&#x503C;&#x6642;&#xFF0C;&#x6BD4;&#x5982;map&#x6216;&#x8005;slice&#x3002;&#x5728;&#x4E0B;&#x9762;&#x7684;&#x7C21;&#x55AE;int&#x93C8;&#x8868;&#x7684;&#x4F8B;&#x5B50;&#x91CC;&#xFF0C;nil&#x4EE3;&#x8868;&#x7684;&#x662F;&#x7A7A;&#x93C8;&#x8868;&#xFF1A;</p>
<pre><code class="lang-go"><span class="hljs-comment">// An IntList is a linked list of integers.</span>
<span class="hljs-comment">// A nil *IntList represents the empty list.</span>
<span class="hljs-keyword">type</span> IntList <span class="hljs-keyword">struct</span> {
@@ -2130,8 +2094,8 @@ pptr.ScaleBy(<span class="hljs-number">2</span>) <span class="hljs-comme
<span class="hljs-keyword">return</span> list.Value + list.Tail.Sum()
}
</code></pre>
<p>&#x7576;&#x4F60;&#x5B9A;&#x7FA9;&#x4E00;&#x500B;&#x5141;&#x8A31;nil&#x4F5C;&#x70BA;&#x63A5;&#x6536;&#x5668;&#x503C;&#x7684;&#x65B9;&#x6CD5;&#x7684;&#x985E;&#x578B;&#x6642;&#xFF0C;&#x5728;&#x985E;&#x578B;&#x524D;&#x9EAB;&#x7684;&#x8A3B;&#x91CB;&#x4E2D;&#x6307;&#x9F63;nil&#x8B8A;&#x91CF;&#x4EE3;&#x9336;&#x7684;&#x610F;&#x7FA9;&#x662F;&#x5F88;&#x6709;&#x5FC5;&#x8981;&#x7684;&#xFF0C;&#x5C31;&#x50CF;&#x6211;&#x5011;&#x4E0A;&#x9EAB;&#x4F8B;&#x5B50;&#x88CF;&#x505A;&#x7684;&#x9019;&#x6A23;&#x3002;</p>
<p>&#x4E0B;&#x9EAB;&#x662F;net/url&#x5305;&#x88CF;Values&#x985E;&#x578B;&#x5B9A;&#x7FA9;&#x7684;&#x4E00;&#x90E8;&#x5206;&#x3002;</p>
<p>&#x7576;&#x4F60;&#x5B9A;&#x7FA9;&#x4E00;&#x500B;&#x5141;&#x8A31;nil&#x4F5C;&#x7232;&#x63A5;&#x6536;&#x5668;&#x503C;&#x7684;&#x65B9;&#x6CD5;&#x7684;&#x985E;&#x578B;&#x6642;&#xFF0C;&#x5728;&#x985E;&#x578B;&#x524D;&#x9762;&#x7684;&#x8A3B;&#x91CB;&#x4E2D;&#x6307;&#x9F63;nil&#x8B8A;&#x91CF;&#x4EE3;&#x8868;&#x7684;&#x610F;&#x7FA9;&#x662F;&#x5F88;&#x6709;&#x5FC5;&#x8981;&#x7684;&#xFF0C;&#x5C31;&#x50CF;&#x6211;&#x5011;&#x4E0A;&#x9762;&#x4F8B;&#x5B50;&#x91CC;&#x505A;&#x7684;&#x9019;&#x6A23;&#x3002;</p>
<p>&#x4E0B;&#x9762;&#x662F;net/url&#x5305;&#x91CC;Values&#x985E;&#x578B;&#x5B9A;&#x7FA9;&#x7684;&#x4E00;&#x90E8;&#x5206;&#x3002;</p>
<pre><code class="lang-go">net/url
<span class="hljs-keyword">package</span> url
@@ -2151,7 +2115,7 @@ pptr.ScaleBy(<span class="hljs-number">2</span>) <span class="hljs-comme
v[key] = <span class="hljs-built_in">append</span>(v[key], value)
}
</code></pre>
<p>&#x9019;&#x500B;&#x5B9A;&#x7FA9;&#x66CF;&#x5916;&#x90E8;&#x66B4;&#x9732;&#x4E86;&#x4E00;&#x500B;map&#x7684;&#x985E;&#x578B;&#x7684;&#x8B8A;&#x91CF;&#xFF0C;&#x4F75;&#x4E14;&#x63D0;&#x4F9B;&#x4E86;&#x4E00;&#x4E9B;&#x80FD;&#x5920;&#x7C21;&#x55AE;&#x64CD;&#x4F5C;&#x9019;&#x500B;map&#x7684;&#x65B9;&#x6CD5;&#x3002;&#x9019;&#x500B;map&#x7684;value&#x5B57;&#x6BB5;&#x662F;&#x4E00;&#x500B;string&#x7684;slice&#xFF0C;&#x6240;&#x4EE5;&#x9019;&#x500B;Values&#x662F;&#x4E00;&#x500B;&#x591A;&#x7DAD;map&#x3002;&#x5BA2;&#x6236;&#x7AEF;&#x4F7F;&#x7528;&#x9019;&#x500B;&#x8B8A;&#x91CF;&#x7684;&#x6642;&#x5019;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;map&#x56FA;&#x6709;&#x7684;&#x4E00;&#x4E9B;&#x64CD;&#x4F5C;(make&#xFF0C;&#x5207;&#x7247;&#xFF0C;m[key]&#x7B49;&#x7B49;)&#xFF0C;&#x4E5F;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;&#x9019;&#x88CF;&#x63D0;&#x4F9B;&#x7684;&#x64CD;&#x4F5C;&#x65B9;&#x6CD5;&#xFF0C;&#x6216;&#x8005;&#x5169;&#x8005;&#x4F75;&#x7528;&#xFF0C;&#x90FD;&#x662F;&#x53EF;&#x4EE5;&#x7684;&#xFF1A;</p>
<p>&#x9019;&#x500B;&#x5B9A;&#x7FA9;&#x5411;&#x5916;&#x90E8;&#x66B4;&#x9732;&#x4E86;&#x4E00;&#x500B;map&#x7684;&#x985E;&#x578B;&#x7684;&#x8B8A;&#x91CF;&#xFF0C;&#x4F75;&#x4E14;&#x63D0;&#x4F9B;&#x4E86;&#x4E00;&#x4E9B;&#x80FD;&#x5920;&#x7C21;&#x55AE;&#x64CD;&#x4F5C;&#x9019;&#x500B;map&#x7684;&#x65B9;&#x6CD5;&#x3002;&#x9019;&#x500B;map&#x7684;value&#x5B57;&#x6BB5;&#x662F;&#x4E00;&#x500B;string&#x7684;slice&#xFF0C;&#x6240;&#x4EE5;&#x9019;&#x500B;Values&#x662F;&#x4E00;&#x500B;&#x591A;&#x7DAD;map&#x3002;&#x5BA2;&#x6236;&#x7AEF;&#x4F7F;&#x7528;&#x9019;&#x500B;&#x8B8A;&#x91CF;&#x7684;&#x6642;&#x5019;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;map&#x56FA;&#x6709;&#x7684;&#x4E00;&#x4E9B;&#x64CD;&#x4F5C;(make&#xFF0C;&#x5207;&#x7247;&#xFF0C;m[key]&#x7B49;&#x7B49;)&#xFF0C;&#x4E5F;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;&#x9019;&#x91CC;&#x63D0;&#x4F9B;&#x7684;&#x64CD;&#x4F5C;&#x65B9;&#x6CD5;&#xFF0C;&#x6216;&#x8005;&#x5169;&#x8005;&#x4F75;&#x7528;&#xFF0C;&#x90FD;&#x662F;&#x53EF;&#x4EE5;&#x7684;&#xFF1A;</p>
<pre><code class="lang-go">gopl.io/ch6/urlvalues
m := url.Values{<span class="hljs-string">&quot;lang&quot;</span>: {<span class="hljs-string">&quot;en&quot;</span>}} <span class="hljs-comment">// direct construction</span>
m.Add(<span class="hljs-string">&quot;item&quot;</span>, <span class="hljs-string">&quot;1&quot;</span>)
@@ -2166,8 +2130,8 @@ m = <span class="hljs-constant">nil</span>
fmt.Println(m.Get(<span class="hljs-string">&quot;item&quot;</span>)) <span class="hljs-comment">// &quot;&quot;</span>
m.Add(<span class="hljs-string">&quot;item&quot;</span>, <span class="hljs-string">&quot;3&quot;</span>) <span class="hljs-comment">// panic: assignment to entry in nil map</span>
</code></pre>
<p>&#x5C0D;Get&#x7684;&#x6700;&#x5F8C;&#x4E00;&#x6B21;&#x8ABF;&#x7528;&#x4E2D;&#xFF0C;nil&#x63A5;&#x6536;&#x5668;&#x7684;&#x884C;&#x70BA;&#x537D;&#x662F;&#x4E00;&#x500B;&#x7A7A;map&#x7684;&#x884C;&#x70BA;&#x3002;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x7B49;&#x50F9;&#x5730;&#x5C07;&#x9019;&#x500B;&#x64CD;&#x4F5C;&#x5BEB;&#x6210;Value(nil).Get(&quot;item&quot;)&#xFF0C;&#x4F46;&#x662F;&#x5982;&#x679C;&#x4F60;&#x76F4;&#x63A5;&#x5BEB;nil.Get(&quot;item&quot;)&#x7684;&#x8A71;&#x662F;&#x7121;&#x6CD5;&#x901A;&#x904E;&#x7DE8;&#x8B6F;&#x7684;&#xFF0C;&#x56E0;&#x70BA;nil&#x7684;&#x5B57;&#x9EAB;&#x91CF;&#x7DE8;&#x8B6F;&#x5668;&#x7121;&#x6CD5;&#x5224;&#x65B7;&#x5176;&#x6E96;&#x5099;&#x985E;&#x578B;&#x3002;&#x6240;&#x4EE5;&#x76F8;&#x6BD4;&#x4E4B;&#x4E0B;&#xFF0C;&#x6700;&#x5F8C;&#x7684;&#x90A3;&#x884C;m.Add&#x7684;&#x8ABF;&#x7528;&#x5C31;&#x6703;&#x7522;&#x751F;&#x4E00;&#x500B;panic&#xFF0C;&#x56E0;&#x70BA;&#x4ED6;&#x5690;&#x8A66;&#x66F4;&#x65B0;&#x4E00;&#x500B;&#x7A7A;map&#x3002;</p>
<p>&#x7531;&#x65BC;url.Values&#x662F;&#x4E00;&#x500B;map&#x985E;&#x578B;&#xFF0C;&#x4F75;&#x4E14;&#x9593;&#x63A5;&#x5F15;&#x7528;&#x4E86;&#x5176;key/value&#x5C0D;&#xFF0C;&#x56E0;&#x6B64;url.Values.Add&#x5C0D;&#x9019;&#x500B;map&#x88CF;&#x7684;&#x5143;&#x7D20;&#x505A;&#x4EFB;&#x4F55;&#x7684;&#x66F4;&#x65B0;&#x3001;&#x522A;&#x9664;&#x64CD;&#x4F5C;&#x5C0D;&#x8ABF;&#x7528;&#x65B9;&#x90FD;&#x662F;&#x53EF;&#x898B;&#x7684;&#x3002;&#x5BE6;&#x969B;&#x4E0A;&#xFF0C;&#x5C31;&#x50CF;&#x5728;&#x666E;&#x901A;&#x51FD;&#x6578;&#x4E2D;&#x4E00;&#x6A23;&#xFF0C;&#x96D6;&#x7136;&#x53EF;&#x4EE5;&#x901A;&#x904E;&#x5F15;&#x7528;&#x4F86;&#x64CD;&#x4F5C;&#x5167;&#x90E8;&#x503C;&#xFF0C;&#x4F46;&#x5728;&#x65B9;&#x6CD5;&#x60F3;&#x8981;&#x8129;&#x6539;&#x5F15;&#x7528;&#x672C;&#x8EAB;&#x662F;&#x4E0D;&#x6703;&#x5F71;&#x97FF;&#x539F;&#x59CB;&#x503C;&#x7684;&#xFF0C;&#x6BD4;&#x5982;&#x628A;&#x4ED6;&#x7F6E;&#x70BA;nil&#xFF0C;&#x6216;&#x8005;&#x8B93;&#x9019;&#x500B;&#x5F15;&#x7528;&#x6307;&#x66CF;&#x4E86;&#x5176;&#x5B83;&#x7684;&#x5C0D;&#x8C61;&#xFF0C;&#x8ABF;&#x7528;&#x65B9;&#x90FD;&#x4E0D;&#x6703;&#x53D7;&#x5F71;&#x97FF;&#x3002;(&#x8B6F;&#x8A3B;&#xFF1A;&#x56E0;&#x70BA;&#x50B3;&#x5165;&#x7684;&#x662F;&#x5B58;&#x5132;&#x4E86;&#x5167;&#x5B58;&#x5730;&#x5740;&#x7684;&#x8B8A;&#x91CF;&#xFF0C;&#x4F60;&#x6539;&#x8B8A;&#x9019;&#x500B;&#x8B8A;&#x91CF;&#x662F;&#x5F71;&#x97FF;&#x4E0D;&#x4E86;&#x539F;&#x59CB;&#x7684;&#x8B8A;&#x91CF;&#x7684;&#xFF0C;&#x60F3;&#x60F3;C&#x8A9E;&#x8A00;&#xFF0C;&#x662F;&#x5DEE;&#x4E0D;&#x591A;&#x7684;)</p>
<p>&#x5C0D;Get&#x7684;&#x6700;&#x5F8C;&#x4E00;&#x6B21;&#x8ABF;&#x7528;&#x4E2D;&#xFF0C;nil&#x63A5;&#x6536;&#x5668;&#x7684;&#x884C;&#x7232;&#x537D;&#x662F;&#x4E00;&#x500B;&#x7A7A;map&#x7684;&#x884C;&#x7232;&#x3002;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x7B49;&#x50F9;&#x5730;&#x5C07;&#x9019;&#x500B;&#x64CD;&#x4F5C;&#x5BEB;&#x6210;Value(nil).Get(&quot;item&quot;)&#xFF0C;&#x4F46;&#x662F;&#x5982;&#x679C;&#x4F60;&#x76F4;&#x63A5;&#x5BEB;nil.Get(&quot;item&quot;)&#x7684;&#x8A71;&#x662F;&#x7121;&#x6CD5;&#x901A;&#x904E;&#x7DE8;&#x8B6F;&#x7684;&#xFF0C;&#x56E0;&#x7232;nil&#x7684;&#x5B57;&#x9762;&#x91CF;&#x7DE8;&#x8B6F;&#x5668;&#x7121;&#x6CD5;&#x5224;&#x65B7;&#x5176;&#x6E96;&#x5099;&#x985E;&#x578B;&#x3002;&#x6240;&#x4EE5;&#x76F8;&#x6BD4;&#x4E4B;&#x4E0B;&#xFF0C;&#x6700;&#x5F8C;&#x7684;&#x90A3;&#x884C;m.Add&#x7684;&#x8ABF;&#x7528;&#x5C31;&#x6703;&#x7523;&#x751F;&#x4E00;&#x500B;panic&#xFF0C;&#x56E0;&#x7232;&#x4ED6;&#x5690;&#x8A66;&#x66F4;&#x65B0;&#x4E00;&#x500B;&#x7A7A;map&#x3002;</p>
<p>&#x7531;&#x65BC;url.Values&#x662F;&#x4E00;&#x500B;map&#x985E;&#x578B;&#xFF0C;&#x4F75;&#x4E14;&#x9593;&#x63A5;&#x5F15;&#x7528;&#x4E86;&#x5176;key/value&#x5C0D;&#xFF0C;&#x56E0;&#x6B64;url.Values.Add&#x5C0D;&#x9019;&#x500B;map&#x91CC;&#x7684;&#x5143;&#x7D20;&#x505A;&#x4EFB;&#x4F55;&#x7684;&#x66F4;&#x65B0;&#x3001;&#x522A;&#x9664;&#x64CD;&#x4F5C;&#x5C0D;&#x8ABF;&#x7528;&#x65B9;&#x90FD;&#x662F;&#x53EF;&#x898B;&#x7684;&#x3002;&#x5BE6;&#x969B;&#x4E0A;&#xFF0C;&#x5C31;&#x50CF;&#x5728;&#x666E;&#x901A;&#x51FD;&#x6578;&#x4E2D;&#x4E00;&#x6A23;&#xFF0C;&#x96D6;&#x7136;&#x53EF;&#x4EE5;&#x901A;&#x904E;&#x5F15;&#x7528;&#x4F86;&#x64CD;&#x4F5C;&#x5167;&#x90E8;&#x503C;&#xFF0C;&#x4F46;&#x5728;&#x65B9;&#x6CD5;&#x60F3;&#x8981;&#x8129;&#x6539;&#x5F15;&#x7528;&#x672C;&#x8EAB;&#x662F;&#x4E0D;&#x6703;&#x5F71;&#x97FF;&#x539F;&#x59CB;&#x503C;&#x7684;&#xFF0C;&#x6BD4;&#x5982;&#x628A;&#x4ED6;&#x7F6E;&#x7232;nil&#xFF0C;&#x6216;&#x8005;&#x8B93;&#x9019;&#x500B;&#x5F15;&#x7528;&#x6307;&#x5411;&#x4E86;&#x5176;&#x5B83;&#x7684;&#x5C0D;&#x8C61;&#xFF0C;&#x8ABF;&#x7528;&#x65B9;&#x90FD;&#x4E0D;&#x6703;&#x53D7;&#x5F71;&#x97FF;&#x3002;(&#x8B6F;&#x8A3B;&#xFF1A;&#x56E0;&#x7232;&#x50B3;&#x5165;&#x7684;&#x662F;&#x5B58;&#x5132;&#x4E86;&#x5167;&#x5B58;&#x5730;&#x5740;&#x7684;&#x8B8A;&#x91CF;&#xFF0C;&#x4F60;&#x6539;&#x8B8A;&#x9019;&#x500B;&#x8B8A;&#x91CF;&#x662F;&#x5F71;&#x97FF;&#x4E0D;&#x4E86;&#x539F;&#x59CB;&#x7684;&#x8B8A;&#x91CF;&#x7684;&#xFF0C;&#x60F3;&#x60F3;C&#x8A9E;&#x8A00;&#xFF0C;&#x662F;&#x5DEE;&#x4E0D;&#x591A;&#x7684;)</p>
</section>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="6.3" data-chapter-title="通過嵌入結構體來擴展類型" data-filepath="ch6/ch6-03.md" data-basepath=".." data-revision="Wed Dec 16 2015 10:54:29 GMT+0800 (中国标准时间)">
<div class="book" data-level="6.3" data-chapter-title="通過嵌入結構體來擴展類型" data-filepath="ch6/ch6-03.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book-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>
@@ -2069,14 +2033,14 @@
Color color.RGBA
}
</code></pre>
<p>&#x6211;&#x5011;&#x5B8C;&#x5168;&#x53EF;&#x4EE5;&#x5C07;ColoredPoint&#x5B9A;&#x7FA9;&#x70BA;&#x4E00;&#x500B;&#x6709;&#x4E09;&#x500B;&#x5B57;&#x6BB5;&#x7684;struct&#xFF0C;&#x4F46;&#x662F;&#x6211;&#x5011;&#x537B;&#x5C07;Point&#x9019;&#x500B;&#x985E;&#x578B;&#x5D4C;&#x5165;&#x5230;ColoredPoint&#x4F86;&#x63D0;&#x4F9B;X&#x548C;Y&#x9019;&#x5169;&#x500B;&#x5B57;&#x6BB5;&#x3002;&#x50CF;&#x6211;&#x5011;&#x5728;4.4&#x7BC0;&#x4E2D;&#x770B;&#x5230;&#x7684;&#x90A3;&#x6A23;&#xFF0C;&#x5167;&#x5D4C;&#x53EF;&#x4EE5;&#x4F7F;&#x6211;&#x5011;&#x5728;&#x5B9A;&#x7FA9;ColoredPoint&#x6642;&#x5F97;&#x5230;&#x4E00;&#x7A2E;&#x53E5;&#x6CD5;&#x4E0A;&#x7684;&#x7C21;&#x5BEB;&#x5F62;&#x5F0F;&#xFF0C;&#x4F75;&#x4F7F;&#x5176;&#x5305;&#x542B;Point&#x985E;&#x578B;&#x6240;&#x5177;&#x6709;&#x7684;&#x4E00;&#x5207;&#x5B57;&#x6BB5;&#xFF0C;&#x7136;&#x5F8C;&#x518D;&#x5B9A;&#x7FA9;&#x4E00;&#x4E9B;&#x81EA;&#x5DF1;&#x7684;&#x3002;&#x5982;&#x679C;&#x6211;&#x5011;&#x60F3;&#x8981;&#x7684;&#x8A71;&#xFF0C;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x8A8D;&#x70BA;&#x901A;&#x904E;&#x5D4C;&#x5165;&#x7684;&#x5B57;&#x6BB5;&#x5C31;&#x662F;ColoredPoint&#x81EA;&#x8EAB;&#x7684;&#x5B57;&#x6BB5;&#xFF0C;&#x800C;&#x5B8C;&#x5168;&#x4E0D;&#x9700;&#x8981;&#x5728;&#x8ABF;&#x7528;&#x6642;&#x6307;&#x9F63;Point&#xFF0C;&#x6BD4;&#x5982;&#x4E0B;&#x9EAB;&#x9019;&#x6A23;&#x3002;</p>
<p>&#x6211;&#x5011;&#x5B8C;&#x5168;&#x53EF;&#x4EE5;&#x5C07;ColoredPoint&#x5B9A;&#x7FA9;&#x7232;&#x4E00;&#x500B;&#x6709;&#x4E09;&#x500B;&#x5B57;&#x6BB5;&#x7684;struct&#xFF0C;&#x4F46;&#x662F;&#x6211;&#x5011;&#x537B;&#x5C07;Point&#x9019;&#x500B;&#x985E;&#x578B;&#x5D4C;&#x5165;&#x5230;ColoredPoint&#x4F86;&#x63D0;&#x4F9B;X&#x548C;Y&#x9019;&#x5169;&#x500B;&#x5B57;&#x6BB5;&#x3002;&#x50CF;&#x6211;&#x5011;&#x5728;4.4&#x7BC0;&#x4E2D;&#x770B;&#x5230;&#x7684;&#x90A3;&#x6A23;&#xFF0C;&#x5167;&#x5D4C;&#x53EF;&#x4EE5;&#x4F7F;&#x6211;&#x5011;&#x5728;&#x5B9A;&#x7FA9;ColoredPoint&#x6642;&#x5F97;&#x5230;&#x4E00;&#x7A2E;&#x53E5;&#x6CD5;&#x4E0A;&#x7684;&#x7C21;&#x5BEB;&#x5F62;&#x5F0F;&#xFF0C;&#x4F75;&#x4F7F;&#x5176;&#x5305;&#x542B;Point&#x985E;&#x578B;&#x6240;&#x5177;&#x6709;&#x7684;&#x4E00;&#x5207;&#x5B57;&#x6BB5;&#xFF0C;&#x7136;&#x5F8C;&#x518D;&#x5B9A;&#x7FA9;&#x4E00;&#x4E9B;&#x81EA;&#x5DF1;&#x7684;&#x3002;&#x5982;&#x679C;&#x6211;&#x5011;&#x60F3;&#x8981;&#x7684;&#x8A71;&#xFF0C;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x8A8D;&#x7232;&#x901A;&#x904E;&#x5D4C;&#x5165;&#x7684;&#x5B57;&#x6BB5;&#x5C31;&#x662F;ColoredPoint&#x81EA;&#x8EAB;&#x7684;&#x5B57;&#x6BB5;&#xFF0C;&#x800C;&#x5B8C;&#x5168;&#x4E0D;&#x9700;&#x8981;&#x5728;&#x8ABF;&#x7528;&#x6642;&#x6307;&#x9F63;Point&#xFF0C;&#x6BD4;&#x5982;&#x4E0B;&#x9762;&#x9019;&#x6A23;&#x3002;</p>
<pre><code class="lang-go"><span class="hljs-keyword">var</span> cp ColoredPoint
cp.X = <span class="hljs-number">1</span>
fmt.Println(cp.Point.X) <span class="hljs-comment">// &quot;1&quot;</span>
cp.Point.Y = <span class="hljs-number">2</span>
fmt.Println(cp.Y) <span class="hljs-comment">// &quot;2&quot;</span>
</code></pre>
<p>&#x5C0D;&#x65BC;Point&#x4E2D;&#x7684;&#x65B9;&#x6CD5;&#x6211;&#x5011;&#x4E5F;&#x6709;&#x985E;&#x4F3C;&#x7684;&#x7528;&#x6CD5;&#xFF0C;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x628A;ColoredPoint&#x985E;&#x578B;&#x7576;&#x4F5C;&#x63A5;&#x6536;&#x5668;&#x4F86;&#x8ABF;&#x7528;Point&#x88CF;&#x7684;&#x65B9;&#x6CD5;&#xFF0C;&#x537D;&#x4F7F;ColoredPoint&#x88CF;&#x6C92;&#x6709;&#x8072;&#x660E;&#x9019;&#x4E9B;&#x65B9;&#x6CD5;&#xFF1A;</p>
<p>&#x5C0D;&#x65BC;Point&#x4E2D;&#x7684;&#x65B9;&#x6CD5;&#x6211;&#x5011;&#x4E5F;&#x6709;&#x985E;&#x4F3C;&#x7684;&#x7528;&#x6CD5;&#xFF0C;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x628A;ColoredPoint&#x985E;&#x578B;&#x7576;&#x4F5C;&#x63A5;&#x6536;&#x5668;&#x4F86;&#x8ABF;&#x7528;Point&#x91CC;&#x7684;&#x65B9;&#x6CD5;&#xFF0C;&#x537D;&#x4F7F;ColoredPoint&#x91CC;&#x6C92;&#x6709;&#x8072;&#x660E;&#x9019;&#x4E9B;&#x65B9;&#x6CD5;&#xFF1A;</p>
<pre><code class="lang-go">red := color.RGBA{<span class="hljs-number">255</span>, <span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">255</span>}
blue := color.RGBA{<span class="hljs-number">0</span>, <span class="hljs-number">0</span>, <span class="hljs-number">255</span>, <span class="hljs-number">255</span>}
<span class="hljs-keyword">var</span> p = ColoredPoint{Point{<span class="hljs-number">1</span>, <span class="hljs-number">1</span>}, red}
@@ -2086,11 +2050,11 @@ p.ScaleBy(<span class="hljs-number">2</span>)
q.ScaleBy(<span class="hljs-number">2</span>)
fmt.Println(p.Distance(q.Point)) <span class="hljs-comment">// &quot;10&quot;</span>
</code></pre>
<p>Point&#x985E;&#x7684;&#x65B9;&#x6CD5;&#x4E5F;&#x88AB;&#x5F15;&#x5165;&#x4E86;ColoredPoint&#x3002;&#x7528;&#x9019;&#x7A2E;&#x65B9;&#x5F0F;&#xFF0C;&#x5167;&#x5D4C;&#x53EF;&#x4EE5;&#x4F7F;&#x6211;&#x5011;&#x5B9A;&#x7FA9;&#x5B57;&#x6BB5;&#x7279;&#x5F46;&#x591A;&#x7684;&#x5FA9;&#x96DC;&#x985E;&#x578B;&#xFF0C;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x5C07;&#x5B57;&#x6BB5;&#x5148;&#x6309;&#x5C0F;&#x985E;&#x578B;&#x5206;&#x7D44;&#xFF0C;&#x7136;&#x5F8C;&#x5B9A;&#x7FA9;&#x5C0F;&#x985E;&#x578B;&#x7684;&#x65B9;&#x6CD5;&#xFF0C;&#x4E4B;&#x5F8C;&#x518D;&#x628A;&#x5B83;&#x5011;&#x7D44;&#x95A4;&#x8D77;&#x4F86;&#x3002;</p>
<p>&#x8B80;&#x8005;&#x5982;&#x679C;&#x5C0D;&#x57FA;&#x65BC;&#x985E;&#x4F86;&#x5BE6;&#x73FE;&#x9EAB;&#x66CF;&#x5C0D;&#x8C61;&#x7684;&#x8A9E;&#x8A00;&#x6BD4;&#x8F03;&#x719F;&#x6089;&#x7684;&#x8A71;&#xFF0C;&#x53EF;&#x80FD;&#x6703;&#x50BE;&#x66CF;&#x65BC;&#x5C07;Point&#x770B;&#x4F5C;&#x4E00;&#x500B;&#x57FA;&#x985E;&#xFF0C;&#x800C;ColoredPoint&#x770B;&#x4F5C;&#x5176;&#x5B50;&#x985E;&#x6216;&#x8005;&#x7E7C;&#x627F;&#x985E;&#xFF0C;&#x6216;&#x8005;&#x5C07;ColoredPoint&#x770B;&#x4F5C;&quot;is a&quot; Point&#x985E;&#x578B;&#x3002;&#x4F46;&#x9019;&#x662F;&#x932F;&#x8AA4;&#x7684;&#x7406;&#x89E3;&#x3002;&#x8ACB;&#x8A3B;&#x610F;&#x4E0A;&#x9EAB;&#x4F8B;&#x5B50;&#x4E2D;&#x5C0D;Distance&#x65B9;&#x6CD5;&#x7684;&#x8ABF;&#x7528;&#x3002;Distance&#x6709;&#x4E00;&#x500B;&#x53C3;&#x6578;&#x662F;Point&#x985E;&#x578B;&#xFF0C;&#x4F46;q&#x4F75;&#x4E0D;&#x662F;&#x4E00;&#x500B;Point&#x985E;&#xFF0C;&#x6240;&#x4EE5;&#x76E1;&#x7BA1;q&#x6709;&#x7740;Point&#x9019;&#x500B;&#x5167;&#x5D4C;&#x985E;&#x578B;&#xFF0C;&#x6211;&#x5011;&#x4E5F;&#x5FC5;&#x9B1A;&#x8981;&#x986F;&#x5F0F;&#x5730;&#x9078;&#x64C7;&#x5B83;&#x3002;&#x5690;&#x8A66;&#x76F4;&#x63A5;&#x50B3;q&#x7684;&#x8A71;&#x4F60;&#x6703;&#x770B;&#x5230;&#x4E0B;&#x9EAB;&#x9019;&#x6A23;&#x7684;&#x932F;&#x8AA4;&#xFF1A;</p>
<p>Point&#x985E;&#x7684;&#x65B9;&#x6CD5;&#x4E5F;&#x88AB;&#x5F15;&#x5165;&#x4E86;ColoredPoint&#x3002;&#x7528;&#x9019;&#x7A2E;&#x65B9;&#x5F0F;&#xFF0C;&#x5167;&#x5D4C;&#x53EF;&#x4EE5;&#x4F7F;&#x6211;&#x5011;&#x5B9A;&#x7FA9;&#x5B57;&#x6BB5;&#x7279;&#x522B;&#x591A;&#x7684;&#x8907;&#x96DC;&#x985E;&#x578B;&#xFF0C;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x5C07;&#x5B57;&#x6BB5;&#x5148;&#x6309;&#x5C0F;&#x985E;&#x578B;&#x5206;&#x7D44;&#xFF0C;&#x7136;&#x5F8C;&#x5B9A;&#x7FA9;&#x5C0F;&#x985E;&#x578B;&#x7684;&#x65B9;&#x6CD5;&#xFF0C;&#x4E4B;&#x5F8C;&#x518D;&#x628A;&#x5B83;&#x5011;&#x7D44;&#x5408;&#x8D77;&#x4F86;&#x3002;</p>
<p>&#x8B80;&#x8005;&#x5982;&#x679C;&#x5C0D;&#x57FA;&#x65BC;&#x985E;&#x4F86;&#x5BE6;&#x73FE;&#x9762;&#x5411;&#x5C0D;&#x8C61;&#x7684;&#x8A9E;&#x8A00;&#x6BD4;&#x8F03;&#x719F;&#x6089;&#x7684;&#x8A71;&#xFF0C;&#x53EF;&#x80FD;&#x6703;&#x50BE;&#x5411;&#x65BC;&#x5C07;Point&#x770B;&#x4F5C;&#x4E00;&#x500B;&#x57FA;&#x985E;&#xFF0C;&#x800C;ColoredPoint&#x770B;&#x4F5C;&#x5176;&#x5B50;&#x985E;&#x6216;&#x8005;&#x7E7C;&#x627F;&#x985E;&#xFF0C;&#x6216;&#x8005;&#x5C07;ColoredPoint&#x770B;&#x4F5C;&quot;is a&quot; Point&#x985E;&#x578B;&#x3002;&#x4F46;&#x9019;&#x662F;&#x932F;&#x8AA4;&#x7684;&#x7406;&#x89E3;&#x3002;&#x8ACB;&#x8A3B;&#x610F;&#x4E0A;&#x9762;&#x4F8B;&#x5B50;&#x4E2D;&#x5C0D;Distance&#x65B9;&#x6CD5;&#x7684;&#x8ABF;&#x7528;&#x3002;Distance&#x6709;&#x4E00;&#x500B;&#x53C3;&#x6578;&#x662F;Point&#x985E;&#x578B;&#xFF0C;&#x4F46;q&#x4F75;&#x4E0D;&#x662F;&#x4E00;&#x500B;Point&#x985E;&#xFF0C;&#x6240;&#x4EE5;&#x76E1;&#x7BA1;q&#x6709;&#x7740;Point&#x9019;&#x500B;&#x5167;&#x5D4C;&#x985E;&#x578B;&#xFF0C;&#x6211;&#x5011;&#x4E5F;&#x5FC5;&#x9B1A;&#x8981;&#x986F;&#x5F0F;&#x5730;&#x9078;&#x64C7;&#x5B83;&#x3002;&#x5690;&#x8A66;&#x76F4;&#x63A5;&#x50B3;q&#x7684;&#x8A71;&#x4F60;&#x6703;&#x770B;&#x5230;&#x4E0B;&#x9762;&#x9019;&#x6A23;&#x7684;&#x932F;&#x8AA4;&#xFF1A;</p>
<pre><code class="lang-go">p.Distance(q) <span class="hljs-comment">// compile error: cannot use q (ColoredPoint) as Point</span>
</code></pre>
<p>&#x4E00;&#x500B;ColoredPoint&#x4F75;&#x4E0D;&#x662F;&#x4E00;&#x500B;Point&#xFF0C;&#x4F46;&#x4ED6;&quot;has a&quot;Point&#xFF0C;&#x4F75;&#x4E14;&#x5B83;&#x6709;&#x5F9E;Point&#x985E;&#x88CF;&#x5F15;&#x5165;&#x7684;Distance&#x548C;ScaleBy&#x65B9;&#x6CD5;&#x3002;&#x5982;&#x679C;&#x4F60;&#x559C;&#x6B61;&#x5F9E;&#x5BE6;&#x73FE;&#x7684;&#x89D2;&#x5EA6;&#x4F86;&#x8003;&#x616E;&#x554F;&#x984C;&#xFF0C;&#x5167;&#x5D4C;&#x5B57;&#x6BB5;&#x6703;&#x6307;&#x5C0E;&#x7DE8;&#x8B6F;&#x5668;&#x53BB;&#x751F;&#x6210;&#x984D;&#x5916;&#x7684;&#x5305;&#x88DD;&#x65B9;&#x6CD5;&#x4F86;&#x59D4;&#x8A17;&#x5DF2;&#x7D93;&#x8072;&#x660E;&#x597D;&#x7684;&#x65B9;&#x6CD5;&#xFF0C;&#x548C;&#x4E0B;&#x9EAB;&#x7684;&#x5F62;&#x5F0F;&#x662F;&#x7B49;&#x50F9;&#x7684;&#xFF1A;</p>
<p>&#x4E00;&#x500B;ColoredPoint&#x4F75;&#x4E0D;&#x662F;&#x4E00;&#x500B;Point&#xFF0C;&#x4F46;&#x4ED6;&quot;has a&quot;Point&#xFF0C;&#x4F75;&#x4E14;&#x5B83;&#x6709;&#x5F9E;Point&#x985E;&#x91CC;&#x5F15;&#x5165;&#x7684;Distance&#x548C;ScaleBy&#x65B9;&#x6CD5;&#x3002;&#x5982;&#x679C;&#x4F60;&#x559C;&#x6B61;&#x5F9E;&#x5BE6;&#x73FE;&#x7684;&#x89D2;&#x5EA6;&#x4F86;&#x8003;&#x616E;&#x554F;&#x984C;&#xFF0C;&#x5167;&#x5D4C;&#x5B57;&#x6BB5;&#x6703;&#x6307;&#x5C0E;&#x7DE8;&#x8B6F;&#x5668;&#x53BB;&#x751F;&#x6210;&#x984D;&#x5916;&#x7684;&#x5305;&#x88DD;&#x65B9;&#x6CD5;&#x4F86;&#x59D4;&#x8A17;&#x5DF2;&#x7D93;&#x8072;&#x660E;&#x597D;&#x7684;&#x65B9;&#x6CD5;&#xFF0C;&#x548C;&#x4E0B;&#x9762;&#x7684;&#x5F62;&#x5F0F;&#x662F;&#x7B49;&#x50F9;&#x7684;&#xFF1A;</p>
<pre><code class="lang-go"><span class="hljs-keyword">func</span> (p ColoredPoint) Distance(q Point) <span class="hljs-typename">float64</span> {
<span class="hljs-keyword">return</span> p.Point.Distance(q)
}
@@ -2099,8 +2063,8 @@ fmt.Println(p.Distance(q.Point)) <span class="hljs-comment">// &quot;10&quot;</s
p.Point.ScaleBy(factor)
}
</code></pre>
<p>&#x7576;Point.Distance&#x88AB;&#x7B2C;&#x4E00;&#x500B;&#x5305;&#x88DD;&#x65B9;&#x6CD5;&#x8ABF;&#x7528;&#x6642;&#xFF0C;&#x5B83;&#x7684;&#x63A5;&#x6536;&#x5668;&#x503C;&#x662F;p.Point&#xFF0C;&#x800C;&#x4E0D;&#x662F;p&#xFF0C;&#x7576;&#x7136;&#x4E86;&#xFF0C;&#x5728;Point&#x985E;&#x7684;&#x65B9;&#x6CD5;&#x88CF;&#xFF0C;&#x4F60;&#x662F;&#x8A2A;&#x554F;&#x4E0D;&#x5230;ColoredPoint&#x7684;&#x4EFB;&#x4F55;&#x5B57;&#x6BB5;&#x7684;&#x3002;</p>
<p>&#x5728;&#x985E;&#x578B;&#x4E2D;&#x5167;&#x5D4C;&#x7684;&#x533F;&#x540D;&#x5B57;&#x6BB5;&#x4E5F;&#x53EF;&#x80FD;&#x662F;&#x4E00;&#x500B;&#x547D;&#x540D;&#x985E;&#x578B;&#x7684;&#x6307;&#x937C;&#xFF0C;&#x9019;&#x7A2E;&#x60C5;&#x6CC1;&#x4E0B;&#x5B57;&#x6BB5;&#x548C;&#x65B9;&#x6CD5;&#x6703;&#x88AB;&#x9593;&#x63A5;&#x5730;&#x5F15;&#x5165;&#x5230;&#x7576;&#x524D;&#x7684;&#x985E;&#x578B;&#x4E2D;(&#x8B6F;&#x8A3B;&#xFF1A;&#x8A2A;&#x554F;&#x9700;&#x8981;&#x901A;&#x904E;&#x8A72;&#x6307;&#x937C;&#x6307;&#x66CF;&#x7684;&#x5C0D;&#x8C61;&#x53BB;&#x53D6;)&#x3002;&#x6DFB;&#x52A0;&#x9019;&#x4E00;&#x5C64;&#x9593;&#x63A5;&#x95DC;&#x7E6B;&#x8B93;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x5171;&#x4EAB;&#x901A;&#x7528;&#x7684;&#x7D50;&#x69CB;&#x4F75;&#x52D5;&#x614B;&#x5730;&#x6539;&#x8B8A;&#x5C0D;&#x8C61;&#x4E4B;&#x9593;&#x7684;&#x95DC;&#x7E6B;&#x3002;&#x4E0B;&#x9EAB;&#x9019;&#x500B;ColoredPoint&#x7684;&#x8072;&#x660E;&#x5167;&#x5D4C;&#x4E86;&#x4E00;&#x500B;*Point&#x7684;&#x6307;&#x937C;&#x3002;</p>
<p>&#x7576;Point.Distance&#x88AB;&#x7B2C;&#x4E00;&#x500B;&#x5305;&#x88DD;&#x65B9;&#x6CD5;&#x8ABF;&#x7528;&#x6642;&#xFF0C;&#x5B83;&#x7684;&#x63A5;&#x6536;&#x5668;&#x503C;&#x662F;p.Point&#xFF0C;&#x800C;&#x4E0D;&#x662F;p&#xFF0C;&#x7576;&#x7136;&#x4E86;&#xFF0C;&#x5728;Point&#x985E;&#x7684;&#x65B9;&#x6CD5;&#x91CC;&#xFF0C;&#x4F60;&#x662F;&#x8A2A;&#x554F;&#x4E0D;&#x5230;ColoredPoint&#x7684;&#x4EFB;&#x4F55;&#x5B57;&#x6BB5;&#x7684;&#x3002;</p>
<p>&#x5728;&#x985E;&#x578B;&#x4E2D;&#x5167;&#x5D4C;&#x7684;&#x533F;&#x540D;&#x5B57;&#x6BB5;&#x4E5F;&#x53EF;&#x80FD;&#x662F;&#x4E00;&#x500B;&#x547D;&#x540D;&#x985E;&#x578B;&#x7684;&#x6307;&#x91DD;&#xFF0C;&#x9019;&#x7A2E;&#x60C5;&#x6CC1;&#x4E0B;&#x5B57;&#x6BB5;&#x548C;&#x65B9;&#x6CD5;&#x6703;&#x88AB;&#x9593;&#x63A5;&#x5730;&#x5F15;&#x5165;&#x5230;&#x7576;&#x524D;&#x7684;&#x985E;&#x578B;&#x4E2D;(&#x8B6F;&#x8A3B;&#xFF1A;&#x8A2A;&#x554F;&#x9700;&#x8981;&#x901A;&#x904E;&#x8A72;&#x6307;&#x91DD;&#x6307;&#x5411;&#x7684;&#x5C0D;&#x8C61;&#x53BB;&#x53D6;)&#x3002;&#x6DFB;&#x52A0;&#x9019;&#x4E00;&#x5C64;&#x9593;&#x63A5;&#x95DC;&#x7E6B;&#x8B93;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x5171;&#x4EAB;&#x901A;&#x7528;&#x7684;&#x7D50;&#x69CB;&#x4F75;&#x52D5;&#x614B;&#x5730;&#x6539;&#x8B8A;&#x5C0D;&#x8C61;&#x4E4B;&#x9593;&#x7684;&#x95DC;&#x7E6B;&#x3002;&#x4E0B;&#x9762;&#x9019;&#x500B;ColoredPoint&#x7684;&#x8072;&#x660E;&#x5167;&#x5D4C;&#x4E86;&#x4E00;&#x500B;*Point&#x7684;&#x6307;&#x91DD;&#x3002;</p>
<pre><code class="lang-go"><span class="hljs-keyword">type</span> ColoredPoint <span class="hljs-keyword">struct</span> {
*Point
Color color.RGBA
@@ -2113,15 +2077,15 @@ q.Point = p.Point <span class="hljs-comment">// p and q now shar
p.ScaleBy(<span class="hljs-number">2</span>)
fmt.Println(*p.Point, *q.Point) <span class="hljs-comment">// &quot;{2 2} {2 2}&quot;</span>
</code></pre>
<p>&#x4E00;&#x500B;struct&#x985E;&#x578B;&#x4E5F;&#x53EF;&#x80FD;&#x6703;&#x6709;&#x591A;&#x500B;&#x533F;&#x540D;&#x5B57;&#x6BB5;&#x3002;&#x6211;&#x5011;&#x5C07;ColoredPoint&#x5B9A;&#x7FA9;&#x70BA;&#x4E0B;&#x9EAB;&#x9019;&#x6A23;&#xFF1A;</p>
<p>&#x4E00;&#x500B;struct&#x985E;&#x578B;&#x4E5F;&#x53EF;&#x80FD;&#x6703;&#x6709;&#x591A;&#x500B;&#x533F;&#x540D;&#x5B57;&#x6BB5;&#x3002;&#x6211;&#x5011;&#x5C07;ColoredPoint&#x5B9A;&#x7FA9;&#x7232;&#x4E0B;&#x9762;&#x9019;&#x6A23;&#xFF1A;</p>
<pre><code class="lang-go"><span class="hljs-keyword">type</span> ColoredPoint <span class="hljs-keyword">struct</span> {
Point
color.RGBA
}
</code></pre>
<p>&#x7136;&#x5F8C;&#x9019;&#x7A2E;&#x985E;&#x578B;&#x7684;&#x503C;&#x4FBF;&#x6703;&#x64C1;&#x6709;Point&#x548C;RGBA&#x985E;&#x578B;&#x7684;&#x6240;&#x6709;&#x65B9;&#x6CD5;&#xFF0C;&#x4EE5;&#x53CA;&#x76F4;&#x63A5;&#x5B9A;&#x7FA9;&#x5728;ColoredPoint&#x4E2D;&#x7684;&#x65B9;&#x6CD5;&#x3002;&#x7576;&#x7DE8;&#x8B6F;&#x5668;&#x89E3;&#x6790;&#x4E00;&#x500B;&#x9078;&#x64C7;&#x5668;&#x5230;&#x65B9;&#x6CD5;&#x6642;&#xFF0C;&#x6BD4;&#x5982;p.ScaleBy&#xFF0C;&#x5B83;&#x6703;&#x9996;&#x5148;&#x53BB;&#x627E;&#x76F4;&#x63A5;&#x5B9A;&#x7FA9;&#x5728;&#x9019;&#x500B;&#x985E;&#x578B;&#x88CF;&#x7684;ScaleBy&#x65B9;&#x6CD5;&#xFF0C;&#x7136;&#x5F8C;&#x627E;&#x88AB;ColoredPoint&#x7684;&#x5167;&#x5D4C;&#x5B57;&#x6BB5;&#x5011;&#x5F15;&#x5165;&#x7684;&#x65B9;&#x6CD5;&#xFF0C;&#x7136;&#x5F8C;&#x53BB;&#x627E;Point&#x548C;RGBA&#x7684;&#x5167;&#x5D4C;&#x5B57;&#x6BB5;&#x5F15;&#x5165;&#x7684;&#x65B9;&#x6CD5;&#xFF0C;&#x7136;&#x5F8C;&#x4E00;&#x76F4;&#x905E;&#x6B78;&#x66CF;&#x4E0B;&#x627E;&#x3002;&#x5982;&#x679C;&#x9078;&#x64C7;&#x5668;&#x6709;&#x4E8C;&#x7FA9;&#x6027;&#x7684;&#x8A71;&#x7DE8;&#x8B6F;&#x5668;&#x6703;&#x5831;&#x932F;&#xFF0C;&#x6BD4;&#x5982;&#x4F60;&#x5728;&#x8855;&#x4E00;&#x7D1A;&#x88CF;&#x6709;&#x5169;&#x500B;&#x8855;&#x540D;&#x7684;&#x65B9;&#x6CD5;&#x3002;</p>
<p>&#x65B9;&#x6CD5;&#x96BB;&#x80FD;&#x5728;&#x547D;&#x540D;&#x985E;&#x578B;(&#x50CF;Point)&#x6216;&#x8005;&#x6307;&#x66CF;&#x985E;&#x578B;&#x7684;&#x6307;&#x937C;&#x4E0A;&#x5B9A;&#x7FA9;&#xFF0C;&#x4F46;&#x662F;&#x591A;&#x8667;&#x4E86;&#x5167;&#x5D4C;&#xFF0C;&#x6709;&#x4E9B;&#x6642;&#x5019;&#x6211;&#x5011;&#x7D66;&#x533F;&#x540D;struct&#x985E;&#x578B;&#x4F86;&#x5B9A;&#x7FA9;&#x65B9;&#x6CD5;&#x4E5F;&#x6709;&#x4E86;&#x624B;&#x6BB5;&#x3002;</p>
<p>&#x4E0B;&#x9EAB;&#x662F;&#x4E00;&#x500B;&#x5C0F;trick&#x3002;&#x9019;&#x500B;&#x4F8B;&#x5B50;&#x5C55;&#x793A;&#x4E86;&#x7C21;&#x55AE;&#x7684;cache&#xFF0C;&#x5176;&#x4F7F;&#x7528;&#x5169;&#x500B;&#x5305;&#x7D1A;&#x5F46;&#x7684;&#x8B8A;&#x91CF;&#x4F86;&#x5BE6;&#x73FE;&#xFF0C;&#x4E00;&#x500B;mutex&#x4E92;&#x65A5;&#x91CF;(&#xA7;9.2)&#x548C;&#x5B83;&#x6240;&#x64CD;&#x4F5C;&#x7684;cache&#xFF1A;</p>
<p>&#x7136;&#x5F8C;&#x9019;&#x7A2E;&#x985E;&#x578B;&#x7684;&#x503C;&#x4FBF;&#x6703;&#x64C1;&#x6709;Point&#x548C;RGBA&#x985E;&#x578B;&#x7684;&#x6240;&#x6709;&#x65B9;&#x6CD5;&#xFF0C;&#x4EE5;&#x53CA;&#x76F4;&#x63A5;&#x5B9A;&#x7FA9;&#x5728;ColoredPoint&#x4E2D;&#x7684;&#x65B9;&#x6CD5;&#x3002;&#x7576;&#x7DE8;&#x8B6F;&#x5668;&#x89E3;&#x6790;&#x4E00;&#x500B;&#x9078;&#x64C7;&#x5668;&#x5230;&#x65B9;&#x6CD5;&#x6642;&#xFF0C;&#x6BD4;&#x5982;p.ScaleBy&#xFF0C;&#x5B83;&#x6703;&#x9996;&#x5148;&#x53BB;&#x627E;&#x76F4;&#x63A5;&#x5B9A;&#x7FA9;&#x5728;&#x9019;&#x500B;&#x985E;&#x578B;&#x91CC;&#x7684;ScaleBy&#x65B9;&#x6CD5;&#xFF0C;&#x7136;&#x5F8C;&#x627E;&#x88AB;ColoredPoint&#x7684;&#x5167;&#x5D4C;&#x5B57;&#x6BB5;&#x5011;&#x5F15;&#x5165;&#x7684;&#x65B9;&#x6CD5;&#xFF0C;&#x7136;&#x5F8C;&#x53BB;&#x627E;Point&#x548C;RGBA&#x7684;&#x5167;&#x5D4C;&#x5B57;&#x6BB5;&#x5F15;&#x5165;&#x7684;&#x65B9;&#x6CD5;&#xFF0C;&#x7136;&#x5F8C;&#x4E00;&#x76F4;&#x905E;&#x6B78;&#x5411;&#x4E0B;&#x627E;&#x3002;&#x5982;&#x679C;&#x9078;&#x64C7;&#x5668;&#x6709;&#x4E8C;&#x7FA9;&#x6027;&#x7684;&#x8A71;&#x7DE8;&#x8B6F;&#x5668;&#x6703;&#x5831;&#x932F;&#xFF0C;&#x6BD4;&#x5982;&#x4F60;&#x5728;&#x540C;&#x4E00;&#x7D1A;&#x91CC;&#x6709;&#x5169;&#x500B;&#x540C;&#x540D;&#x7684;&#x65B9;&#x6CD5;&#x3002;</p>
<p>&#x65B9;&#x6CD5;&#x96BB;&#x80FD;&#x5728;&#x547D;&#x540D;&#x985E;&#x578B;(&#x50CF;Point)&#x6216;&#x8005;&#x6307;&#x5411;&#x985E;&#x578B;&#x7684;&#x6307;&#x91DD;&#x4E0A;&#x5B9A;&#x7FA9;&#xFF0C;&#x4F46;&#x662F;&#x591A;&#x8667;&#x4E86;&#x5167;&#x5D4C;&#xFF0C;&#x6709;&#x4E9B;&#x6642;&#x5019;&#x6211;&#x5011;&#x7D66;&#x533F;&#x540D;struct&#x985E;&#x578B;&#x4F86;&#x5B9A;&#x7FA9;&#x65B9;&#x6CD5;&#x4E5F;&#x6709;&#x4E86;&#x624B;&#x6BB5;&#x3002;</p>
<p>&#x4E0B;&#x9762;&#x662F;&#x4E00;&#x500B;&#x5C0F;trick&#x3002;&#x9019;&#x500B;&#x4F8B;&#x5B50;&#x5C55;&#x793A;&#x4E86;&#x7C21;&#x55AE;&#x7684;cache&#xFF0C;&#x5176;&#x4F7F;&#x7528;&#x5169;&#x500B;&#x5305;&#x7D1A;&#x522B;&#x7684;&#x8B8A;&#x91CF;&#x4F86;&#x5BE6;&#x73FE;&#xFF0C;&#x4E00;&#x500B;mutex&#x4E92;&#x65A5;&#x91CF;(&#xA7;9.2)&#x548C;&#x5B83;&#x6240;&#x64CD;&#x4F5C;&#x7684;cache&#xFF1A;</p>
<pre><code class="lang-go"><span class="hljs-keyword">var</span> (
mu sync.Mutex <span class="hljs-comment">// guards mapping</span>
mapping = <span class="hljs-built_in">make</span>(<span class="hljs-keyword">map</span>[<span class="hljs-typename">string</span>]<span class="hljs-typename">string</span>)
@@ -2134,7 +2098,7 @@ fmt.Println(*p.Point, *q.Point) <span class="hljs-comment">// &quot;{2 2} {2 2}&
<span class="hljs-keyword">return</span> v
}
</code></pre>
<p>&#x4E0B;&#x9EAB;&#x9019;&#x500B;&#x7248;&#x672C;&#x5728;&#x529F;&#x80FD;&#x4E0A;&#x662F;&#x4E00;&#x7DFB;&#x7684;&#xFF0C;&#x4F46;&#x5C07;&#x5169;&#x500B;&#x5305;&#x7D1A;&#x5427;&#x7684;&#x8B8A;&#x91CF;&#x653E;&#x5728;&#x4E86;cache&#x9019;&#x500B;struct&#x4E00;&#x7D44;&#x5167;&#xFF1A;</p>
<p>&#x4E0B;&#x9762;&#x9019;&#x500B;&#x7248;&#x672C;&#x5728;&#x529F;&#x80FD;&#x4E0A;&#x662F;&#x4E00;&#x81F4;&#x7684;&#xFF0C;&#x4F46;&#x5C07;&#x5169;&#x500B;&#x5305;&#x7D1A;&#x5427;&#x7684;&#x8B8A;&#x91CF;&#x653E;&#x5728;&#x4E86;cache&#x9019;&#x500B;struct&#x4E00;&#x7D44;&#x5167;&#xFF1A;</p>
<pre><code class="lang-go"><span class="hljs-keyword">var</span> cache = <span class="hljs-keyword">struct</span> {
sync.Mutex
mapping <span class="hljs-keyword">map</span>[<span class="hljs-typename">string</span>]<span class="hljs-typename">string</span>
@@ -2150,7 +2114,7 @@ fmt.Println(*p.Point, *q.Point) <span class="hljs-comment">// &quot;{2 2} {2 2}&
<span class="hljs-keyword">return</span> v
}
</code></pre>
<p>&#x6211;&#x5011;&#x7D66;&#x65B0;&#x7684;&#x8B8A;&#x91CF;&#x8D77;&#x4E86;&#x4E00;&#x500B;&#x66F4;&#x5177;&#x9336;&#x9054;&#x6027;&#x7684;&#x540D;&#x5B57;&#xFF1A;cache&#x3002;&#x56E0;&#x70BA;sync.Mutex&#x5B57;&#x6BB5;&#x4E5F;&#x88AB;&#x5D4C;&#x5165;&#x5230;&#x4E86;&#x9019;&#x500B;struct&#x88CF;&#xFF0C;&#x5176;Lock&#x548C;Unlock&#x65B9;&#x6CD5;&#x4E5F;&#x5C31;&#x90FD;&#x88AB;&#x5F15;&#x5165;&#x5230;&#x4E86;&#x9019;&#x500B;&#x533F;&#x540D;&#x7D50;&#x69CB;&#x4E2D;&#x4E86;&#xFF0C;&#x9019;&#x8B93;&#x6211;&#x5011;&#x80FD;&#x5920;&#x4EE5;&#x4E00;&#x500B;&#x7C21;&#x55AE;&#x660E;&#x4E86;&#x7684;&#x8A9E;&#x6CD5;&#x4F86;&#x5C0D;&#x5176;&#x9032;&#x884C;&#x52A0;&#x9396;&#x89E3;&#x9396;&#x64CD;&#x4F5C;&#x3002;</p>
<p>&#x6211;&#x5011;&#x7D66;&#x65B0;&#x7684;&#x8B8A;&#x91CF;&#x8D77;&#x4E86;&#x4E00;&#x500B;&#x66F4;&#x5177;&#x8868;&#x9054;&#x6027;&#x7684;&#x540D;&#x5B57;&#xFF1A;cache&#x3002;&#x56E0;&#x7232;sync.Mutex&#x5B57;&#x6BB5;&#x4E5F;&#x88AB;&#x5D4C;&#x5165;&#x5230;&#x4E86;&#x9019;&#x500B;struct&#x91CC;&#xFF0C;&#x5176;Lock&#x548C;Unlock&#x65B9;&#x6CD5;&#x4E5F;&#x5C31;&#x90FD;&#x88AB;&#x5F15;&#x5165;&#x5230;&#x4E86;&#x9019;&#x500B;&#x533F;&#x540D;&#x7D50;&#x69CB;&#x4E2D;&#x4E86;&#xFF0C;&#x9019;&#x8B93;&#x6211;&#x5011;&#x80FD;&#x5920;&#x4EE5;&#x4E00;&#x500B;&#x7C21;&#x55AE;&#x660E;&#x4E86;&#x7684;&#x8A9E;&#x6CD5;&#x4F86;&#x5C0D;&#x5176;&#x9032;&#x884C;&#x52A0;&#x9396;&#x89E3;&#x9396;&#x64CD;&#x4F5C;&#x3002;</p>
</section>
@@ -2161,10 +2125,10 @@ fmt.Println(*p.Point, *q.Point) <span class="hljs-comment">// &quot;{2 2} {2 2}&
</div>
<a href="../ch6/ch6-02.html" class="navigation navigation-prev " aria-label="Previous page: 基於指對象的方法"><i class="fa fa-angle-left"></i></a>
<a href="../ch6/ch6-02.html" class="navigation navigation-prev " aria-label="Previous page: 基於指對象的方法"><i class="fa fa-angle-left"></i></a>
<a href="../ch6/ch6-04.html" class="navigation navigation-next " aria-label="Next page: 方法值和方法達式"><i class="fa fa-angle-right"></i></a>
<a href="../ch6/ch6-04.html" class="navigation navigation-next " aria-label="Next page: 方法值和方法達式"><i class="fa fa-angle-right"></i></a>
</div>
</div>

View File

@@ -5,7 +5,7 @@
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>方法值和方法達式 | Go编程语言</title>
<title>方法值和方法達式 | Go编程语言</title>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<meta name="description" content="">
<meta name="generator" content="GitBook 2.5.2">
@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="6.4" data-chapter-title="方法值和方法達式" data-filepath="ch6/ch6-04.md" data-basepath=".." data-revision="Wed Dec 16 2015 10:54:29 GMT+0800 (中国标准时间)">
<div class="book" data-level="6.4" data-chapter-title="方法值和方法達式" data-filepath="ch6/ch6-04.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book-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>
@@ -2059,8 +2023,8 @@
<section class="normal" id="section-">
<h2 id="64-&#x65B9;&#x6CD5;&#x503C;&#x548C;&#x65B9;&#x6CD5;&#x9336;&#x9054;&#x5F0F;">6.4. &#x65B9;&#x6CD5;&#x503C;&#x548C;&#x65B9;&#x6CD5;&#x9336;&#x9054;&#x5F0F;</h2>
<p>&#x6211;&#x5011;&#x7D93;&#x5E38;&#x9078;&#x64C7;&#x4E00;&#x500B;&#x65B9;&#x6CD5;&#xFF0C;&#x4F75;&#x4E14;&#x5728;&#x8855;&#x4E00;&#x500B;&#x9336;&#x9054;&#x5F0F;&#x88CF;&#x57F7;&#x884C;&#xFF0C;&#x6BD4;&#x5982;&#x5E38;&#x898B;&#x7684;p.Distance()&#x5F62;&#x5F0F;&#xFF0C;&#x5BE6;&#x969B;&#x4E0A;&#x5C07;&#x5176;&#x5206;&#x6210;&#x5169;&#x6B65;&#x4F86;&#x57F7;&#x884C;&#x4E5F;&#x662F;&#x53EF;&#x80FD;&#x7684;&#x3002;p.Distance&#x53EB;&#x4F5C;&#x201C;&#x9078;&#x64C7;&#x5668;&#x201D;&#xFF0C;&#x9078;&#x64C7;&#x5668;&#x6703;&#x8FD4;&#x8FF4;&#x4E00;&#x500B;&#x65B9;&#x6CD5;&quot;&#x503C;&quot;-&gt;&#x4E00;&#x500B;&#x5C07;&#x65B9;&#x6CD5;(Point.Distance)&#x7D81;&#x5B9A;&#x5230;&#x7279;&#x5B9A;&#x63A5;&#x6536;&#x5668;&#x8B8A;&#x91CF;&#x7684;&#x51FD;&#x6578;&#x3002;&#x9019;&#x500B;&#x51FD;&#x6578;&#x53EF;&#x4EE5;&#x4E0D;&#x901A;&#x904E;&#x6307;&#x5B9A;&#x5176;&#x63A5;&#x6536;&#x5668;&#x537D;&#x53EF;&#x88AB;&#x8ABF;&#x7528;&#xFF1B;&#x537D;&#x8ABF;&#x7528;&#x6642;&#x4E0D;&#x9700;&#x8981;&#x6307;&#x5B9A;&#x63A5;&#x6536;&#x5668;(&#x8B6F;&#x8A3B;&#xFF1A;&#x56E0;&#x70BA;&#x5DF2;&#x7D93;&#x5728;&#x524D;&#x6587;&#x4E2D;&#x6307;&#x5B9A;&#x904E;&#x4E86;)&#xFF0C;&#x96BB;&#x8981;&#x50B3;&#x5165;&#x51FD;&#x6578;&#x7684;&#x53C3;&#x6578;&#x537D;&#x53EF;&#xFF1A;</p>
<h2 id="64-&#x65B9;&#x6CD5;&#x503C;&#x548C;&#x65B9;&#x6CD5;&#x8868;&#x9054;&#x5F0F;">6.4. &#x65B9;&#x6CD5;&#x503C;&#x548C;&#x65B9;&#x6CD5;&#x8868;&#x9054;&#x5F0F;</h2>
<p>&#x6211;&#x5011;&#x7D93;&#x5E38;&#x9078;&#x64C7;&#x4E00;&#x500B;&#x65B9;&#x6CD5;&#xFF0C;&#x4F75;&#x4E14;&#x5728;&#x540C;&#x4E00;&#x500B;&#x8868;&#x9054;&#x5F0F;&#x91CC;&#x57F7;&#x884C;&#xFF0C;&#x6BD4;&#x5982;&#x5E38;&#x898B;&#x7684;p.Distance()&#x5F62;&#x5F0F;&#xFF0C;&#x5BE6;&#x969B;&#x4E0A;&#x5C07;&#x5176;&#x5206;&#x6210;&#x5169;&#x6B65;&#x4F86;&#x57F7;&#x884C;&#x4E5F;&#x662F;&#x53EF;&#x80FD;&#x7684;&#x3002;p.Distance&#x53EB;&#x4F5C;&#x201C;&#x9078;&#x64C7;&#x5668;&#x201D;&#xFF0C;&#x9078;&#x64C7;&#x5668;&#x6703;&#x8FD4;&#x8FF4;&#x4E00;&#x500B;&#x65B9;&#x6CD5;&quot;&#x503C;&quot;-&gt;&#x4E00;&#x500B;&#x5C07;&#x65B9;&#x6CD5;(Point.Distance)&#x7D81;&#x5B9A;&#x5230;&#x7279;&#x5B9A;&#x63A5;&#x6536;&#x5668;&#x8B8A;&#x91CF;&#x7684;&#x51FD;&#x6578;&#x3002;&#x9019;&#x500B;&#x51FD;&#x6578;&#x53EF;&#x4EE5;&#x4E0D;&#x901A;&#x904E;&#x6307;&#x5B9A;&#x5176;&#x63A5;&#x6536;&#x5668;&#x537D;&#x53EF;&#x88AB;&#x8ABF;&#x7528;&#xFF1B;&#x537D;&#x8ABF;&#x7528;&#x6642;&#x4E0D;&#x9700;&#x8981;&#x6307;&#x5B9A;&#x63A5;&#x6536;&#x5668;(&#x8B6F;&#x8A3B;&#xFF1A;&#x56E0;&#x7232;&#x5DF2;&#x7D93;&#x5728;&#x524D;&#x6587;&#x4E2D;&#x6307;&#x5B9A;&#x904E;&#x4E86;)&#xFF0C;&#x96BB;&#x8981;&#x50B3;&#x5165;&#x51FD;&#x6578;&#x7684;&#x53C3;&#x6578;&#x537D;&#x53EF;&#xFF1A;</p>
<pre><code class="lang-go">p := Point{<span class="hljs-number">1</span>, <span class="hljs-number">2</span>}
q := Point{<span class="hljs-number">4</span>, <span class="hljs-number">6</span>}
@@ -2073,23 +2037,23 @@ scaleP(<span class="hljs-number">2</span>) <span class="hljs-comment">
scaleP(<span class="hljs-number">3</span>) <span class="hljs-comment">// then (6, 12)</span>
scaleP(<span class="hljs-number">10</span>) <span class="hljs-comment">// then (60, 120)</span>
</code></pre>
<p>&#x5728;&#x4E00;&#x500B;&#x5305;&#x7684;API&#x9700;&#x8981;&#x4E00;&#x500B;&#x51FD;&#x6578;&#x503C;&#x3001;&#x4E14;&#x8ABF;&#x7528;&#x65B9;&#x5E0C;&#x671B;&#x64CD;&#x4F5C;&#x7684;&#x662F;&#x67D0;&#x4E00;&#x500B;&#x7D81;&#x5B9A;&#x4E86;&#x5C0D;&#x8C61;&#x7684;&#x65B9;&#x6CD5;&#x7684;&#x8A71;&#xFF0C;&#x65B9;&#x6CD5;&quot;&#x503C;&quot;&#x6703;&#x975E;&#x5E38;&#x5BE6;&#x7528;(=_=&#x771E;&#x662F;&#x7E5E;)&#x3002;&#x8209;&#x4F8B;&#x4F86;&#x8AAA;&#xFF0C;&#x4E0B;&#x9EAB;&#x4F8B;&#x5B50;&#x4E2D;&#x7684;time.AfterFunc&#x9019;&#x500B;&#x51FD;&#x6578;&#x7684;&#x529F;&#x80FD;&#x662F;&#x5728;&#x6307;&#x5B9A;&#x7684;&#x5EF6;&#x9072;&#x6642;&#x9593;&#x4E4B;&#x5F8C;&#x4F86;&#x57F7;&#x884C;&#x4E00;&#x500B;(&#x8B6F;&#x8A3B;&#xFF1A;&#x53E6;&#x5916;&#x7684;)&#x51FD;&#x6578;&#x3002;&#x4E14;&#x9019;&#x500B;&#x51FD;&#x6578;&#x64CD;&#x4F5C;&#x7684;&#x662F;&#x4E00;&#x500B;Rocket&#x5C0D;&#x8C61;r</p>
<p>&#x5728;&#x4E00;&#x500B;&#x5305;&#x7684;API&#x9700;&#x8981;&#x4E00;&#x500B;&#x51FD;&#x6578;&#x503C;&#x3001;&#x4E14;&#x8ABF;&#x7528;&#x65B9;&#x5E0C;&#x671B;&#x64CD;&#x4F5C;&#x7684;&#x662F;&#x67D0;&#x4E00;&#x500B;&#x7D81;&#x5B9A;&#x4E86;&#x5C0D;&#x8C61;&#x7684;&#x65B9;&#x6CD5;&#x7684;&#x8A71;&#xFF0C;&#x65B9;&#x6CD5;&quot;&#x503C;&quot;&#x6703;&#x975E;&#x5E38;&#x5BE6;&#x7528;(=_=&#x771E;&#x662F;&#x7E5E;)&#x3002;&#x8209;&#x4F8B;&#x4F86;&#x8AAC;&#xFF0C;&#x4E0B;&#x9762;&#x4F8B;&#x5B50;&#x4E2D;&#x7684;time.AfterFunc&#x9019;&#x500B;&#x51FD;&#x6578;&#x7684;&#x529F;&#x80FD;&#x662F;&#x5728;&#x6307;&#x5B9A;&#x7684;&#x5EF6;&#x9072;&#x6642;&#x9593;&#x4E4B;&#x5F8C;&#x4F86;&#x57F7;&#x884C;&#x4E00;&#x500B;(&#x8B6F;&#x8A3B;&#xFF1A;&#x53E6;&#x5916;&#x7684;)&#x51FD;&#x6578;&#x3002;&#x4E14;&#x9019;&#x500B;&#x51FD;&#x6578;&#x64CD;&#x4F5C;&#x7684;&#x662F;&#x4E00;&#x500B;Rocket&#x5C0D;&#x8C61;r</p>
<pre><code class="lang-go"><span class="hljs-keyword">type</span> Rocket <span class="hljs-keyword">struct</span> { <span class="hljs-comment">/* ... */</span> }
<span class="hljs-keyword">func</span> (r *Rocket) Launch() { <span class="hljs-comment">/* ... */</span> }
r := <span class="hljs-built_in">new</span>(Rocket)
time.AfterFunc(<span class="hljs-number">10</span> * time.Second, <span class="hljs-keyword">func</span>() { r.Launch() })
</code></pre>
<p>&#x76F4;&#x63A5;&#x7528;&#x65B9;&#x6CD5;&quot;&#x503C;&quot;&#x50B3;&#x5165;AfterFunc&#x7684;&#x8A71;&#x53EF;&#x4EE5;&#x66F4;&#x70BA;&#x7C21;&#x77ED;&#xFF1A;</p>
<p>&#x76F4;&#x63A5;&#x7528;&#x65B9;&#x6CD5;&quot;&#x503C;&quot;&#x50B3;&#x5165;AfterFunc&#x7684;&#x8A71;&#x53EF;&#x4EE5;&#x66F4;&#x7232;&#x7C21;&#x77ED;&#xFF1A;</p>
<pre><code class="lang-go">time.AfterFunc(<span class="hljs-number">10</span> * time.Second, r.Launch)
</code></pre>
<p>&#x8B6F;&#x8A3B;&#xFF1A;&#x7701;&#x6389;&#x4E86;&#x4E0A;&#x9EAB;&#x90A3;&#x500B;&#x4F8B;&#x5B50;&#x88CF;&#x7684;&#x533F;&#x540D;&#x51FD;&#x6578;&#x3002;</p>
<p>&#x548C;&#x65B9;&#x6CD5;&quot;&#x503C;&quot;&#x76F8;&#x95DC;&#x7684;&#x9084;&#x6709;&#x65B9;&#x6CD5;&#x9336;&#x9054;&#x5F0F;&#x3002;&#x7576;&#x8ABF;&#x7528;&#x4E00;&#x500B;&#x65B9;&#x6CD5;&#x6642;&#xFF0C;&#x8207;&#x8ABF;&#x7528;&#x4E00;&#x500B;&#x666E;&#x901A;&#x7684;&#x51FD;&#x6578;&#x76F8;&#x6BD4;&#xFF0C;&#x6211;&#x5011;&#x5FC5;&#x9B1A;&#x8981;&#x7528;&#x9078;&#x64C7;&#x5668;(p.Distance)&#x8A9E;&#x6CD5;&#x4F86;&#x6307;&#x5B9A;&#x65B9;&#x6CD5;&#x7684;&#x63A5;&#x6536;&#x5668;&#x3002;</p>
<p>&#x7576;T&#x662F;&#x4E00;&#x500B;&#x985E;&#x578B;&#x6642;&#xFF0C;&#x65B9;&#x6CD5;&#x9336;&#x9054;&#x5F0F;&#x53EF;&#x80FD;&#x6703;&#x5BEB;&#x4F5C;T.f&#x6216;&#x8005;(*T).f&#xFF0C;&#x6703;&#x8FD4;&#x8FF4;&#x4E00;&#x500B;&#x51FD;&#x6578;&quot;&#x503C;&quot;&#xFF0C;&#x9019;&#x7A2E;&#x51FD;&#x6578;&#x6703;&#x5C07;&#x5176;&#x7B2C;&#x4E00;&#x500B;&#x53C3;&#x6578;&#x7528;&#x4F5C;&#x63A5;&#x6536;&#x5668;&#xFF0C;&#x6240;&#x4EE5;&#x53EF;&#x4EE5;&#x7528;&#x901A;&#x5E38;(&#x8B6F;&#x8A3B;&#xFF1A;&#x4E0D;&#x5BEB;&#x9078;&#x64C7;&#x5668;)&#x7684;&#x65B9;&#x5F0F;&#x4F86;&#x5C0D;&#x5176;&#x9032;&#x884C;&#x8ABF;&#x7528;&#xFF1A;</p>
<p>&#x8B6F;&#x8A3B;&#xFF1A;&#x7701;&#x6389;&#x4E86;&#x4E0A;&#x9762;&#x90A3;&#x500B;&#x4F8B;&#x5B50;&#x91CC;&#x7684;&#x533F;&#x540D;&#x51FD;&#x6578;&#x3002;</p>
<p>&#x548C;&#x65B9;&#x6CD5;&quot;&#x503C;&quot;&#x76F8;&#x95DC;&#x7684;&#x9084;&#x6709;&#x65B9;&#x6CD5;&#x8868;&#x9054;&#x5F0F;&#x3002;&#x7576;&#x8ABF;&#x7528;&#x4E00;&#x500B;&#x65B9;&#x6CD5;&#x6642;&#xFF0C;&#x8207;&#x8ABF;&#x7528;&#x4E00;&#x500B;&#x666E;&#x901A;&#x7684;&#x51FD;&#x6578;&#x76F8;&#x6BD4;&#xFF0C;&#x6211;&#x5011;&#x5FC5;&#x9B1A;&#x8981;&#x7528;&#x9078;&#x64C7;&#x5668;(p.Distance)&#x8A9E;&#x6CD5;&#x4F86;&#x6307;&#x5B9A;&#x65B9;&#x6CD5;&#x7684;&#x63A5;&#x6536;&#x5668;&#x3002;</p>
<p>&#x7576;T&#x662F;&#x4E00;&#x500B;&#x985E;&#x578B;&#x6642;&#xFF0C;&#x65B9;&#x6CD5;&#x8868;&#x9054;&#x5F0F;&#x53EF;&#x80FD;&#x6703;&#x5BEB;&#x4F5C;T.f&#x6216;&#x8005;(*T).f&#xFF0C;&#x6703;&#x8FD4;&#x8FF4;&#x4E00;&#x500B;&#x51FD;&#x6578;&quot;&#x503C;&quot;&#xFF0C;&#x9019;&#x7A2E;&#x51FD;&#x6578;&#x6703;&#x5C07;&#x5176;&#x7B2C;&#x4E00;&#x500B;&#x53C3;&#x6578;&#x7528;&#x4F5C;&#x63A5;&#x6536;&#x5668;&#xFF0C;&#x6240;&#x4EE5;&#x53EF;&#x4EE5;&#x7528;&#x901A;&#x5E38;(&#x8B6F;&#x8A3B;&#xFF1A;&#x4E0D;&#x5BEB;&#x9078;&#x64C7;&#x5668;)&#x7684;&#x65B9;&#x5F0F;&#x4F86;&#x5C0D;&#x5176;&#x9032;&#x884C;&#x8ABF;&#x7528;&#xFF1A;</p>
<pre><code class="lang-go">p := Point{<span class="hljs-number">1</span>, <span class="hljs-number">2</span>}
q := Point{<span class="hljs-number">4</span>, <span class="hljs-number">6</span>}
distance := Point.Distance <span class="hljs-comment">// method expression</span>
<span class="hljs-comment">//&#x8B6F;&#x8A3B;&#xFF1A;&#x9019;&#x500B;Distance&#x5BE6;&#x969B;&#x4E0A;&#x662F;&#x6307;&#x5B9A;&#x4E86;Point&#x5C0D;&#x8C61;&#x70BA;&#x63A5;&#x6536;&#x5668;&#x7684;&#x4E00;&#x500B;&#x65B9;&#x6CD5;func (p Point) Distance()&#xFF0C;&#x4F46;&#x901A;&#x904E;Point.Distance&#x5F97;&#x5230;&#x7684;&#x51FD;&#x6578;&#x9700;&#x8981;&#x6BD4;&#x5BE6;&#x969B;&#x7684;Distance&#x65B9;&#x6CD5;&#x591A;&#x4E00;&#x500B;&#x53C3;&#x6578;&#xFF0C;&#x537D;&#x5176;&#x9700;&#x8981;&#x7528;&#x7B2C;&#x4E00;&#x500B;&#x984D;&#x5916;&#x53C3;&#x6578;&#x6307;&#x5B9A;&#x63A5;&#x6536;&#x5668;&#xFF0C;&#x5F8C;&#x9EAB;&#x6392;&#x5217;Distance&#x65B9;&#x6CD5;&#x7684;&#x53C3;&#x6578;&#x3002;&#x770B;&#x8D77;&#x4F86;&#x672C;&#x66F8;&#x4E2D;&#x51FD;&#x6578;&#x548C;&#x65B9;&#x6CD5;&#x7684;&#x5340;&#x5F46;&#x662F;&#x6307;&#x6709;&#x6C92;&#x6709;&#x63A5;&#x6536;&#x5668;&#xFF0C;&#x800C;&#x4E0D;&#x50CF;&#x5176;&#x4ED6;&#x8A9E;&#x8A00;&#x90A3;&#x6A23;&#x662F;&#x6307;&#x6709;&#x6C92;&#x6709;&#x8FD4;&#x8FF4;&#x503C;&#x3002;</span>
<span class="hljs-comment">//&#x8B6F;&#x8A3B;&#xFF1A;&#x9019;&#x500B;Distance&#x5BE6;&#x969B;&#x4E0A;&#x662F;&#x6307;&#x5B9A;&#x4E86;Point&#x5C0D;&#x8C61;&#x7232;&#x63A5;&#x6536;&#x5668;&#x7684;&#x4E00;&#x500B;&#x65B9;&#x6CD5;func (p Point) Distance()&#xFF0C;&#x4F46;&#x901A;&#x904E;Point.Distance&#x5F97;&#x5230;&#x7684;&#x51FD;&#x6578;&#x9700;&#x8981;&#x6BD4;&#x5BE6;&#x969B;&#x7684;Distance&#x65B9;&#x6CD5;&#x591A;&#x4E00;&#x500B;&#x53C3;&#x6578;&#xFF0C;&#x537D;&#x5176;&#x9700;&#x8981;&#x7528;&#x7B2C;&#x4E00;&#x500B;&#x984D;&#x5916;&#x53C3;&#x6578;&#x6307;&#x5B9A;&#x63A5;&#x6536;&#x5668;&#xFF0C;&#x5F8C;&#x9762;&#x6392;&#x5217;Distance&#x65B9;&#x6CD5;&#x7684;&#x53C3;&#x6578;&#x3002;&#x770B;&#x8D77;&#x4F86;&#x672C;&#x66F8;&#x4E2D;&#x51FD;&#x6578;&#x548C;&#x65B9;&#x6CD5;&#x7684;&#x5340;&#x522B;&#x662F;&#x6307;&#x6709;&#x6C92;&#x6709;&#x63A5;&#x6536;&#x5668;&#xFF0C;&#x800C;&#x4E0D;&#x50CF;&#x5176;&#x4ED6;&#x8A9E;&#x8A00;&#x90A3;&#x6A23;&#x662F;&#x6307;&#x6709;&#x6C92;&#x6709;&#x8FD4;&#x8FF4;&#x503C;&#x3002;</span>
fmt.Println(distance(p, q)) <span class="hljs-comment">// &quot;5&quot;</span>
fmt.Printf(<span class="hljs-string">&quot;%T\n&quot;</span>, distance) <span class="hljs-comment">// &quot;func(Point, Point) float64&quot;</span>
@@ -2098,7 +2062,7 @@ scale(&amp;p, <span class="hljs-number">2</span>)
fmt.Println(p) <span class="hljs-comment">// &quot;{2 4}&quot;</span>
fmt.Printf(<span class="hljs-string">&quot;%T\n&quot;</span>, scale) <span class="hljs-comment">// &quot;func(*Point, float64)&quot;</span>
</code></pre>
<p>&#x7576;&#x4F60;&#x6839;&#x64DA;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#x4F86;&#x6C7A;&#x5B9A;&#x8ABF;&#x7528;&#x8855;&#x4E00;&#x500B;&#x985E;&#x578B;&#x7684;&#x54EA;&#x500B;&#x51FD;&#x6578;&#x6642;&#xFF0C;&#x65B9;&#x6CD5;&#x9336;&#x9054;&#x5F0F;&#x5C31;&#x986F;&#x5F97;&#x5F88;&#x6709;&#x7528;&#x4E86;&#x3002;&#x4F60;&#x53EF;&#x4EE5;&#x6839;&#x64DA;&#x9078;&#x64C7;&#x4F86;&#x8ABF;&#x7528;&#x63A5;&#x6536;&#x5668;&#x5404;&#x4E0D;&#x76F8;&#x8855;&#x7684;&#x65B9;&#x6CD5;&#x3002;&#x4E0B;&#x9EAB;&#x7684;&#x4F8B;&#x5B50;&#xFF0C;&#x8B8A;&#x91CF;op&#x4EE3;&#x9336;Point&#x985E;&#x578B;&#x7684;addition&#x6216;&#x8005;subtraction&#x65B9;&#x6CD5;&#xFF0C;Path.TranslateBy&#x65B9;&#x6CD5;&#x6703;&#x70BA;&#x5176;Path&#x6578;&#x7D44;&#x4E2D;&#x7684;&#x6BCF;&#x4E00;&#x500B;Point&#x4F86;&#x8ABF;&#x7528;&#x5C0D;&#x61C9;&#x7684;&#x65B9;&#x6CD5;&#xFF1A;</p>
<p>&#x7576;&#x4F60;&#x6839;&#x64DA;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#x4F86;&#x6C7A;&#x5B9A;&#x8ABF;&#x7528;&#x540C;&#x4E00;&#x500B;&#x985E;&#x578B;&#x7684;&#x54EA;&#x500B;&#x51FD;&#x6578;&#x6642;&#xFF0C;&#x65B9;&#x6CD5;&#x8868;&#x9054;&#x5F0F;&#x5C31;&#x986F;&#x5F97;&#x5F88;&#x6709;&#x7528;&#x4E86;&#x3002;&#x4F60;&#x53EF;&#x4EE5;&#x6839;&#x64DA;&#x9078;&#x64C7;&#x4F86;&#x8ABF;&#x7528;&#x63A5;&#x6536;&#x5668;&#x5404;&#x4E0D;&#x76F8;&#x540C;&#x7684;&#x65B9;&#x6CD5;&#x3002;&#x4E0B;&#x9762;&#x7684;&#x4F8B;&#x5B50;&#xFF0C;&#x8B8A;&#x91CF;op&#x4EE3;&#x8868;Point&#x985E;&#x578B;&#x7684;addition&#x6216;&#x8005;subtraction&#x65B9;&#x6CD5;&#xFF0C;Path.TranslateBy&#x65B9;&#x6CD5;&#x6703;&#x7232;&#x5176;Path&#x6578;&#x7D44;&#x4E2D;&#x7684;&#x6BCF;&#x4E00;&#x500B;Point&#x4F86;&#x8ABF;&#x7528;&#x5C0D;&#x61C9;&#x7684;&#x65B9;&#x6CD5;&#xFF1A;</p>
<pre><code class="lang-go"><span class="hljs-keyword">type</span> Point <span class="hljs-keyword">struct</span>{ X, Y <span class="hljs-typename">float64</span> }
<span class="hljs-keyword">func</span> (p Point) Add(q Point) Point { <span class="hljs-keyword">return</span> Point{p.X + q.X, p.Y + q.Y} }

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="6.5" data-chapter-title="示例: Bit數組" data-filepath="ch6/ch6-05.md" data-basepath=".." data-revision="Wed Dec 16 2015 10:54:29 GMT+0800 (中国标准时间)">
<div class="book" data-level="6.5" data-chapter-title="示例: Bit數組" data-filepath="ch6/ch6-05.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book-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-">
<h2 id="65-&#x793A;&#x4F8B;-bit&#x6578;&#x7D44;">6.5. &#x793A;&#x4F8B;: Bit&#x6578;&#x7D44;</h2>
<p>Go&#x8A9E;&#x8A00;&#x88CF;&#x7684;&#x96C6;&#x95A4;&#x4E00;&#x822C;&#x6703;&#x7528;map[T]bool&#x9019;&#x7A2E;&#x5F62;&#x5F0F;&#x4F86;&#x9336;&#x793A;&#xFF0C;T&#x4EE3;&#x9336;&#x5143;&#x7D20;&#x985E;&#x578B;&#x3002;&#x96C6;&#x95A4;&#x7528;map&#x985E;&#x578B;&#x4F86;&#x9336;&#x793A;&#x96D6;&#x7136;&#x975E;&#x5E38;&#x9748;&#x6D3B;&#xFF0C;&#x4F46;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x4EE5;&#x4E00;&#x7A2E;&#x66F4;&#x597D;&#x7684;&#x5F62;&#x5F0F;&#x4F86;&#x9336;&#x793A;&#x5B83;&#x3002;&#x4F8B;&#x5982;&#x5728;&#x6578;&#x64DA;&#x6D41;&#x5206;&#x6790;&#x9818;&#x57DF;&#xFF0C;&#x96C6;&#x95A4;&#x5143;&#x7D20;&#x901A;&#x5E38;&#x662F;&#x4E00;&#x500B;&#x975E;&#x8CA0;&#x6574;&#x6578;&#xFF0C;&#x96C6;&#x95A4;&#x6703;&#x5305;&#x542B;&#x5F88;&#x591A;&#x5143;&#x7D20;&#xFF0C;&#x4F75;&#x4E14;&#x96C6;&#x95A4;&#x6703;&#x7D93;&#x5E38;&#x9032;&#x884C;&#x4F75;&#x96C6;&#x3001;&#x4EA4;&#x96C6;&#x64CD;&#x4F5C;&#xFF0C;&#x9019;&#x7A2E;&#x60C5;&#x6CC1;&#x4E0B;&#xFF0C;bit&#x6578;&#x7D44;&#x6703;&#x6BD4;map&#x9336;&#x73FE;&#x66F4;&#x52A0;&#x7406;&#x60F3;&#x3002;(&#x8B6F;&#x8A3B;&#xFF1A;&#x9019;&#x88CF;&#x518D;&#x88DC;&#x5145;&#x4E00;&#x500B;&#x4F8B;&#x5B50;&#xFF0C;&#x6BD4;&#x5982;&#x6211;&#x5011;&#x57F7;&#x884C;&#x4E00;&#x500B;http&#x4E0B;&#x8F09;&#x4EFB;&#x52D9;&#xFF0C;&#x628A;&#x6587;&#x4EF6;&#x6309;&#x7167;16kb&#x4E00;&#x584A;&#x5283;&#x5206;&#x70BA;&#x5F88;&#x591A;&#x584A;&#xFF0C;&#x9700;&#x8981;&#x6709;&#x4E00;&#x500B;&#x5168;&#x4FB7;&#x8B8A;&#x91CF;&#x4F86;&#x6A19;&#x8B58;&#x54EA;&#x4E9B;&#x584A;&#x4E0B;&#x8F09;&#x5B8C;&#x6210;&#x4E86;&#xFF0C;&#x9019;&#x7A2E;&#x6642;&#x5019;&#x4E5F;&#x9700;&#x8981;&#x7528;&#x5230;bit&#x6578;&#x7D44;)</p>
<p>&#x4E00;&#x500B;bit&#x6578;&#x7D44;&#x901A;&#x5E38;&#x6703;&#x7528;&#x4E00;&#x500B;&#x7121;&#x7B26;&#x865F;&#x6578;&#x6216;&#x8005;&#x7A31;&#x4E4B;&#x70BA;&#x201C;&#x5B57;&#x201D;&#x7684;slice&#x6216;&#x8005;&#x4F86;&#x9336;&#x793A;&#xFF0C;&#x6BCF;&#x4E00;&#x500B;&#x5143;&#x7D20;&#x7684;&#x6BCF;&#x4E00;&#x4F4D;&#x90FD;&#x9336;&#x793A;&#x96C6;&#x95A4;&#x88CF;&#x7684;&#x4E00;&#x500B;&#x503C;&#x3002;&#x7576;&#x96C6;&#x95A4;&#x7684;&#x7B2C;i&#x4F4D;&#x88AB;&#x8A2D;&#x7F6E;&#x6642;&#xFF0C;&#x6211;&#x5011;&#x7E94;&#x8AAA;&#x9019;&#x500B;&#x96C6;&#x95A4;&#x5305;&#x542B;&#x5143;&#x7D20;i&#x3002;&#x4E0B;&#x9EAB;&#x7684;&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#x5C55;&#x793A;&#x4E86;&#x4E00;&#x500B;&#x7C21;&#x55AE;&#x7684;bit&#x6578;&#x7D44;&#x985E;&#x578B;&#xFF0C;&#x4F75;&#x4E14;&#x5BE6;&#x73FE;&#x4E86;&#x4E09;&#x500B;&#x51FD;&#x6578;&#x4F86;&#x5C0D;&#x9019;&#x500B;bit&#x6578;&#x7D44;&#x4F86;&#x9032;&#x884C;&#x64CD;&#x4F5C;&#xFF1A;</p>
<p>Go&#x8A9E;&#x8A00;&#x91CC;&#x7684;&#x96C6;&#x5408;&#x4E00;&#x822C;&#x6703;&#x7528;map[T]bool&#x9019;&#x7A2E;&#x5F62;&#x5F0F;&#x4F86;&#x8868;&#x793A;&#xFF0C;T&#x4EE3;&#x8868;&#x5143;&#x7D20;&#x985E;&#x578B;&#x3002;&#x96C6;&#x5408;&#x7528;map&#x985E;&#x578B;&#x4F86;&#x8868;&#x793A;&#x96D6;&#x7136;&#x975E;&#x5E38;&#x9748;&#x6D3B;&#xFF0C;&#x4F46;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x4EE5;&#x4E00;&#x7A2E;&#x66F4;&#x597D;&#x7684;&#x5F62;&#x5F0F;&#x4F86;&#x8868;&#x793A;&#x5B83;&#x3002;&#x4F8B;&#x5982;&#x5728;&#x6578;&#x64DA;&#x6D41;&#x5206;&#x6790;&#x9818;&#x57DF;&#xFF0C;&#x96C6;&#x5408;&#x5143;&#x7D20;&#x901A;&#x5E38;&#x662F;&#x4E00;&#x500B;&#x975E;&#x8CA0;&#x6574;&#x6578;&#xFF0C;&#x96C6;&#x5408;&#x6703;&#x5305;&#x542B;&#x5F88;&#x591A;&#x5143;&#x7D20;&#xFF0C;&#x4F75;&#x4E14;&#x96C6;&#x5408;&#x6703;&#x7D93;&#x5E38;&#x9032;&#x884C;&#x4F75;&#x96C6;&#x3001;&#x4EA4;&#x96C6;&#x64CD;&#x4F5C;&#xFF0C;&#x9019;&#x7A2E;&#x60C5;&#x6CC1;&#x4E0B;&#xFF0C;bit&#x6578;&#x7D44;&#x6703;&#x6BD4;map&#x8868;&#x73FE;&#x66F4;&#x52A0;&#x7406;&#x60F3;&#x3002;(&#x8B6F;&#x8A3B;&#xFF1A;&#x9019;&#x91CC;&#x518D;&#x88DC;&#x5145;&#x4E00;&#x500B;&#x4F8B;&#x5B50;&#xFF0C;&#x6BD4;&#x5982;&#x6211;&#x5011;&#x57F7;&#x884C;&#x4E00;&#x500B;http&#x4E0B;&#x8F09;&#x4EFB;&#x52D9;&#xFF0C;&#x628A;&#x6587;&#x4EF6;&#x6309;&#x7167;16kb&#x4E00;&#x584A;&#x5283;&#x5206;&#x7232;&#x5F88;&#x591A;&#x584A;&#xFF0C;&#x9700;&#x8981;&#x6709;&#x4E00;&#x500B;&#x5168;&#x5C40;&#x8B8A;&#x91CF;&#x4F86;&#x6A19;&#x8B58;&#x54EA;&#x4E9B;&#x584A;&#x4E0B;&#x8F09;&#x5B8C;&#x6210;&#x4E86;&#xFF0C;&#x9019;&#x7A2E;&#x6642;&#x5019;&#x4E5F;&#x9700;&#x8981;&#x7528;&#x5230;bit&#x6578;&#x7D44;)</p>
<p>&#x4E00;&#x500B;bit&#x6578;&#x7D44;&#x901A;&#x5E38;&#x6703;&#x7528;&#x4E00;&#x500B;&#x7121;&#x7B26;&#x865F;&#x6578;&#x6216;&#x8005;&#x7A31;&#x4E4B;&#x7232;&#x201C;&#x5B57;&#x201D;&#x7684;slice&#x6216;&#x8005;&#x4F86;&#x8868;&#x793A;&#xFF0C;&#x6BCF;&#x4E00;&#x500B;&#x5143;&#x7D20;&#x7684;&#x6BCF;&#x4E00;&#x4F4D;&#x90FD;&#x8868;&#x793A;&#x96C6;&#x5408;&#x91CC;&#x7684;&#x4E00;&#x500B;&#x503C;&#x3002;&#x7576;&#x96C6;&#x5408;&#x7684;&#x7B2C;i&#x4F4D;&#x88AB;&#x8A2D;&#x7F6E;&#x6642;&#xFF0C;&#x6211;&#x5011;&#x7E94;&#x8AAC;&#x9019;&#x500B;&#x96C6;&#x5408;&#x5305;&#x542B;&#x5143;&#x7D20;i&#x3002;&#x4E0B;&#x9762;&#x7684;&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#x5C55;&#x793A;&#x4E86;&#x4E00;&#x500B;&#x7C21;&#x55AE;&#x7684;bit&#x6578;&#x7D44;&#x985E;&#x578B;&#xFF0C;&#x4F75;&#x4E14;&#x5BE6;&#x73FE;&#x4E86;&#x4E09;&#x500B;&#x51FD;&#x6578;&#x4F86;&#x5C0D;&#x9019;&#x500B;bit&#x6578;&#x7D44;&#x4F86;&#x9032;&#x884C;&#x64CD;&#x4F5C;&#xFF1A;</p>
<pre><code class="lang-go">gopl.io/ch6/intset
<span class="hljs-comment">// An IntSet is a set of small non-negative integers.</span>
<span class="hljs-comment">// Its zero value represents the empty set.</span>
@@ -2095,8 +2059,8 @@
}
}
</code></pre>
<p>&#x56E0;&#x70BA;&#x6BCF;&#x4E00;&#x500B;&#x5B57;&#x90FD;&#x6709;64&#x500B;&#x4E8C;&#x9032;&#x88FD;&#x4F4D;&#xFF0C;&#x6240;&#x4EE5;&#x70BA;&#x4E86;&#x5B9A;&#x4F4D;x&#x7684;bit&#x4F4D;&#xFF0C;&#x6211;&#x5011;&#x7528;&#x4E86;x/64&#x7684;&#x5546;&#x4F5C;&#x70BA;&#x5B57;&#x7684;&#x4E0B;&#x6A19;&#xFF0C;&#x4F75;&#x4E14;&#x7528;x%64&#x5F97;&#x5230;&#x7684;&#x503C;&#x4F5C;&#x70BA;&#x9019;&#x500B;&#x5B57;&#x5167;&#x7684;bit&#x7684;&#x6240;&#x5728;&#x4F4D;&#x7F6E;&#x3002;UnionWith&#x9019;&#x500B;&#x65B9;&#x6CD5;&#x88CF;&#x7528;&#x5230;&#x4E86;bit&#x4F4D;&#x7684;&#x201C;&#x6216;&#x201D;&#x908F;&#x8F2F;&#x64CD;&#x4F5C;&#x7B26;&#x865F;|&#x4F86;&#x4E00;&#x6B21;&#x5B8C;&#x6210;64&#x500B;&#x5143;&#x7D20;&#x7684;&#x6216;&#x8A08;&#x7B97;&#x3002;(&#x5728;&#x7DF4;&#x7FD2;6.5&#x4E2D;&#x6211;&#x5011;&#x9084;&#x6703;&#x7A0B;&#x5E8F;&#x7528;&#x5230;&#x9019;&#x500B;64&#x4F4D;&#x5B57;&#x7684;&#x4F8B;&#x5B50;&#x3002;)</p>
<p>&#x7576;&#x524D;&#x9019;&#x500B;&#x5BE6;&#x73FE;&#x9084;&#x7F3A;&#x5C11;&#x4E86;&#x5F88;&#x591A;&#x5FC5;&#x8981;&#x7684;&#x7279;&#x6027;&#xFF0C;&#x6211;&#x5011;&#x628A;&#x5176;&#x4E2D;&#x4E00;&#x4E9B;&#x4F5C;&#x70BA;&#x7DF4;&#x7FD2;&#x984C;&#x5217;&#x5728;&#x672C;&#x5C0F;&#x7BC0;&#x4E4B;&#x5F8C;&#x3002;&#x4F46;&#x662F;&#x6709;&#x4E00;&#x500B;&#x65B9;&#x6CD5;&#x5982;&#x679C;&#x7F3A;&#x5931;&#x7684;&#x8A71;&#x6211;&#x5011;&#x7684;bit&#x6578;&#x7D44;&#x53EF;&#x80FD;&#x6703;&#x6BD4;&#x8F03;&#x96E3;&#x6DF7;&#xFF1A;&#x5C07;IntSet&#x4F5C;&#x70BA;&#x4E00;&#x500B;&#x5B57;&#x7B26;&#x4E32;&#x4F86;&#x6253;&#x5370;&#x3002;&#x9019;&#x88CF;&#x6211;&#x5011;&#x4F86;&#x5BE6;&#x73FE;&#x5B83;&#xFF0C;&#x8B93;&#x6211;&#x5011;&#x4F86;&#x7D66;&#x4E0A;&#x9EAB;&#x7684;&#x4F8B;&#x5B50;&#x6DFB;&#x52A0;&#x4E00;&#x500B;String&#x65B9;&#x6CD5;&#xFF0C;&#x985E;&#x4F3C;2.5&#x7BC0;&#x4E2D;&#x505A;&#x7684;&#x90A3;&#x6A23;&#xFF1A;</p>
<p>&#x56E0;&#x7232;&#x6BCF;&#x4E00;&#x500B;&#x5B57;&#x90FD;&#x6709;64&#x500B;&#x4E8C;&#x9032;&#x88FD;&#x4F4D;&#xFF0C;&#x6240;&#x4EE5;&#x7232;&#x4E86;&#x5B9A;&#x4F4D;x&#x7684;bit&#x4F4D;&#xFF0C;&#x6211;&#x5011;&#x7528;&#x4E86;x/64&#x7684;&#x5546;&#x4F5C;&#x7232;&#x5B57;&#x7684;&#x4E0B;&#x6A19;&#xFF0C;&#x4F75;&#x4E14;&#x7528;x%64&#x5F97;&#x5230;&#x7684;&#x503C;&#x4F5C;&#x7232;&#x9019;&#x500B;&#x5B57;&#x5167;&#x7684;bit&#x7684;&#x6240;&#x5728;&#x4F4D;&#x7F6E;&#x3002;UnionWith&#x9019;&#x500B;&#x65B9;&#x6CD5;&#x91CC;&#x7528;&#x5230;&#x4E86;bit&#x4F4D;&#x7684;&#x201C;&#x6216;&#x201D;&#x908F;&#x8F2F;&#x64CD;&#x4F5C;&#x7B26;&#x865F;|&#x4F86;&#x4E00;&#x6B21;&#x5B8C;&#x6210;64&#x500B;&#x5143;&#x7D20;&#x7684;&#x6216;&#x8A08;&#x7B97;&#x3002;(&#x5728;&#x7DF4;&#x7FD2;6.5&#x4E2D;&#x6211;&#x5011;&#x9084;&#x6703;&#x7A0B;&#x5E8F;&#x7528;&#x5230;&#x9019;&#x500B;64&#x4F4D;&#x5B57;&#x7684;&#x4F8B;&#x5B50;&#x3002;)</p>
<p>&#x7576;&#x524D;&#x9019;&#x500B;&#x5BE6;&#x73FE;&#x9084;&#x7F3A;&#x5C11;&#x4E86;&#x5F88;&#x591A;&#x5FC5;&#x8981;&#x7684;&#x7279;&#x6027;&#xFF0C;&#x6211;&#x5011;&#x628A;&#x5176;&#x4E2D;&#x4E00;&#x4E9B;&#x4F5C;&#x7232;&#x7DF4;&#x7FD2;&#x984C;&#x5217;&#x5728;&#x672C;&#x5C0F;&#x7BC0;&#x4E4B;&#x5F8C;&#x3002;&#x4F46;&#x662F;&#x6709;&#x4E00;&#x500B;&#x65B9;&#x6CD5;&#x5982;&#x679C;&#x7F3A;&#x5931;&#x7684;&#x8A71;&#x6211;&#x5011;&#x7684;bit&#x6578;&#x7D44;&#x53EF;&#x80FD;&#x6703;&#x6BD4;&#x8F03;&#x96E3;&#x6DF7;&#xFF1A;&#x5C07;IntSet&#x4F5C;&#x7232;&#x4E00;&#x500B;&#x5B57;&#x7B26;&#x4E32;&#x4F86;&#x6253;&#x5370;&#x3002;&#x9019;&#x91CC;&#x6211;&#x5011;&#x4F86;&#x5BE6;&#x73FE;&#x5B83;&#xFF0C;&#x8B93;&#x6211;&#x5011;&#x4F86;&#x7D66;&#x4E0A;&#x9762;&#x7684;&#x4F8B;&#x5B50;&#x6DFB;&#x52A0;&#x4E00;&#x500B;String&#x65B9;&#x6CD5;&#xFF0C;&#x985E;&#x4F3C;2.5&#x7BC0;&#x4E2D;&#x505A;&#x7684;&#x90A3;&#x6A23;&#xFF1A;</p>
<pre><code class="lang-go"><span class="hljs-comment">// String returns the set as a string of the form &quot;{1 2 3}&quot;.</span>
<span class="hljs-keyword">func</span> (s *IntSet) String() <span class="hljs-typename">string</span> {
<span class="hljs-keyword">var</span> buf bytes.Buffer
@@ -2118,8 +2082,8 @@
<span class="hljs-keyword">return</span> buf.String()
}
</code></pre>
<p>&#x9019;&#x88CF;&#x7559;&#x610F;&#x4E00;&#x4E0B;String&#x65B9;&#x6CD5;&#xFF0C;&#x662F;&#x4E0D;&#x662F;&#x548C;3.5.4&#x7BC0;&#x4E2D;&#x7684;intsToString&#x65B9;&#x6CD5;&#x5F88;&#x76F8;&#x4F3C;&#xFF1B;bytes.Buffer&#x5728;String&#x65B9;&#x6CD5;&#x88CF;&#x7D93;&#x5E38;&#x9019;&#x9EBC;&#x7528;&#x3002;&#x7576;&#x4F60;&#x70BA;&#x4E00;&#x500B;&#x5FA9;&#x96DC;&#x7684;&#x985E;&#x578B;&#x5B9A;&#x7FA9;&#x4E86;&#x4E00;&#x500B;String&#x65B9;&#x6CD5;&#x6642;&#xFF0C;fmt&#x5305;&#x5C31;&#x6703;&#x7279;&#x6B8A;&#x5C0D;&#x5F85;&#x9019;&#x7A2E;&#x985E;&#x578B;&#x7684;&#x503C;&#xFF0C;&#x9019;&#x6A23;&#x53EF;&#x4EE5;&#x8B93;&#x9019;&#x4E9B;&#x985E;&#x578B;&#x5728;&#x6253;&#x5370;&#x7684;&#x6642;&#x5019;&#x770B;&#x8D77;&#x4F86;&#x66F4;&#x52A0;&#x53CB;&#x597D;&#xFF0C;&#x800C;&#x4E0D;&#x662F;&#x76F4;&#x63A5;&#x6253;&#x5370;&#x5176;&#x539F;&#x59CB;&#x7684;&#x503C;&#x3002;fmt&#x6703;&#x76F4;&#x63A5;&#x8ABF;&#x7528;&#x7528;&#x6236;&#x5B9A;&#x7FA9;&#x7684;String&#x65B9;&#x6CD5;&#x3002;&#x9019;&#x7A2E;&#x6A5F;&#x88FD;&#x4F9D;&#x8CF4;&#x65BC;&#x63A5;&#x53E3;&#x548C;&#x985E;&#x578B;&#x65B7;&#x8A00;&#xFF0C;&#x5728;&#x7B2C;7&#x7AE0;&#x4E2D;&#x6211;&#x5011;&#x6703;&#x8A73;&#x7D30;&#x4ECB;&#x7D39;&#x3002;</p>
<p>&#x73FE;&#x5728;&#x6211;&#x5011;&#x5C31;&#x53EF;&#x4EE5;&#x5728;&#x5BE6;&#x6230;&#x4E2D;&#x76F4;&#x63A5;&#x7528;&#x4E0A;&#x9EAB;&#x5B9A;&#x7FA9;&#x597D;&#x7684;IntSet&#x4E86;&#xFF1A;</p>
<p>&#x9019;&#x91CC;&#x7559;&#x610F;&#x4E00;&#x4E0B;String&#x65B9;&#x6CD5;&#xFF0C;&#x662F;&#x4E0D;&#x662F;&#x548C;3.5.4&#x7BC0;&#x4E2D;&#x7684;intsToString&#x65B9;&#x6CD5;&#x5F88;&#x76F8;&#x4F3C;&#xFF1B;bytes.Buffer&#x5728;String&#x65B9;&#x6CD5;&#x91CC;&#x7D93;&#x5E38;&#x9019;&#x9EBD;&#x7528;&#x3002;&#x7576;&#x4F60;&#x7232;&#x4E00;&#x500B;&#x8907;&#x96DC;&#x7684;&#x985E;&#x578B;&#x5B9A;&#x7FA9;&#x4E86;&#x4E00;&#x500B;String&#x65B9;&#x6CD5;&#x6642;&#xFF0C;fmt&#x5305;&#x5C31;&#x6703;&#x7279;&#x6B8A;&#x5C0D;&#x5F85;&#x9019;&#x7A2E;&#x985E;&#x578B;&#x7684;&#x503C;&#xFF0C;&#x9019;&#x6A23;&#x53EF;&#x4EE5;&#x8B93;&#x9019;&#x4E9B;&#x985E;&#x578B;&#x5728;&#x6253;&#x5370;&#x7684;&#x6642;&#x5019;&#x770B;&#x8D77;&#x4F86;&#x66F4;&#x52A0;&#x53CB;&#x597D;&#xFF0C;&#x800C;&#x4E0D;&#x662F;&#x76F4;&#x63A5;&#x6253;&#x5370;&#x5176;&#x539F;&#x59CB;&#x7684;&#x503C;&#x3002;fmt&#x6703;&#x76F4;&#x63A5;&#x8ABF;&#x7528;&#x7528;&#x6236;&#x5B9A;&#x7FA9;&#x7684;String&#x65B9;&#x6CD5;&#x3002;&#x9019;&#x7A2E;&#x6A5F;&#x88FD;&#x4F9D;&#x8CF4;&#x65BC;&#x63A5;&#x53E3;&#x548C;&#x985E;&#x578B;&#x65B7;&#x8A00;&#xFF0C;&#x5728;&#x7B2C;7&#x7AE0;&#x4E2D;&#x6211;&#x5011;&#x6703;&#x8A73;&#x7D30;&#x4ECB;&#x7D39;&#x3002;</p>
<p>&#x73FE;&#x5728;&#x6211;&#x5011;&#x5C31;&#x53EF;&#x4EE5;&#x5728;&#x5BE6;&#x6230;&#x4E2D;&#x76F4;&#x63A5;&#x7528;&#x4E0A;&#x9762;&#x5B9A;&#x7FA9;&#x597D;&#x7684;IntSet&#x4E86;&#xFF1A;</p>
<pre><code class="lang-go"><span class="hljs-keyword">var</span> x, y IntSet
x.Add(<span class="hljs-number">1</span>)
x.Add(<span class="hljs-number">144</span>)
@@ -2134,22 +2098,22 @@ x.UnionWith(&amp;y)
fmt.Println(x.String()) <span class="hljs-comment">// &quot;{1 9 42 144}&quot;</span>
fmt.Println(x.Has(<span class="hljs-number">9</span>), x.Has(<span class="hljs-number">123</span>)) <span class="hljs-comment">// &quot;true false&quot;</span>
</code></pre>
<p>&#x9019;&#x88CF;&#x8981;&#x8A3B;&#x610F;&#xFF1A;&#x6211;&#x5011;&#x8072;&#x660E;&#x7684;String&#x548C;Has&#x5169;&#x500B;&#x65B9;&#x6CD5;&#x90FD;&#x662F;&#x4EE5;&#x6307;&#x937C;&#x985E;&#x578B;*IntSet&#x4F86;&#x4F5C;&#x70BA;&#x63A5;&#x6536;&#x5668;&#x7684;&#xFF0C;&#x4F46;&#x5BE6;&#x969B;&#x4E0A;&#x5C0D;&#x65BC;&#x9019;&#x5169;&#x500B;&#x985E;&#x578B;&#x4F86;&#x8AAA;&#xFF0C;&#x628A;&#x63A5;&#x6536;&#x5668;&#x8072;&#x660E;&#x70BA;&#x6307;&#x937C;&#x985E;&#x578B;&#x4E5F;&#x6C92;&#x4EC0;&#x9EBC;&#x5FC5;&#x8981;&#x3002;&#x4E0D;&#x904E;&#x53E6;&#x5916;&#x5169;&#x500B;&#x51FD;&#x6578;&#x5C31;&#x4E0D;&#x662F;&#x9019;&#x6A23;&#x4E86;&#xFF0C;&#x56E0;&#x70BA;&#x53E6;&#x5916;&#x5169;&#x500B;&#x51FD;&#x6578;&#x64CD;&#x4F5C;&#x7684;&#x662F;s.words&#x5C0D;&#x8C61;&#xFF0C;&#x5982;&#x679C;&#x4F60;&#x4E0D;&#x628A;&#x63A5;&#x6536;&#x5668;&#x8072;&#x660E;&#x70BA;&#x6307;&#x937C;&#x5C0D;&#x8C61;&#xFF0C;&#x90A3;&#x9EBC;&#x5BE6;&#x969B;&#x64CD;&#x4F5C;&#x7684;&#x662F;&#x62F7;&#x8C9D;&#x5C0D;&#x8C61;&#xFF0C;&#x800C;&#x4E0D;&#x662F;&#x539F;&#x4F86;&#x7684;&#x90A3;&#x500B;&#x5C0D;&#x8C61;&#x3002;&#x56E0;&#x6B64;&#xFF0C;&#x56E0;&#x70BA;&#x6211;&#x5011;&#x7684;String&#x65B9;&#x6CD5;&#x5B9A;&#x7FA9;&#x5728;IntSet&#x6307;&#x937C;&#x4E0A;&#xFF0C;&#x6240;&#x4EE5;&#x7576;&#x6211;&#x5011;&#x7684;&#x8B8A;&#x91CF;&#x662F;IntSet&#x985E;&#x578B;&#x800C;&#x4E0D;&#x662F;IntSet&#x6307;&#x937C;&#x6642;&#xFF0C;&#x53EF;&#x80FD;&#x6703;&#x6709;&#x4E0B;&#x9EAB;&#x9019;&#x6A23;&#x8B93;&#x4EBA;&#x610F;&#x5916;&#x7684;&#x60C5;&#x6CC1;&#xFF1A;</p>
<p>&#x9019;&#x91CC;&#x8981;&#x8A3B;&#x610F;&#xFF1A;&#x6211;&#x5011;&#x8072;&#x660E;&#x7684;String&#x548C;Has&#x5169;&#x500B;&#x65B9;&#x6CD5;&#x90FD;&#x662F;&#x4EE5;&#x6307;&#x91DD;&#x985E;&#x578B;*IntSet&#x4F86;&#x4F5C;&#x7232;&#x63A5;&#x6536;&#x5668;&#x7684;&#xFF0C;&#x4F46;&#x5BE6;&#x969B;&#x4E0A;&#x5C0D;&#x65BC;&#x9019;&#x5169;&#x500B;&#x985E;&#x578B;&#x4F86;&#x8AAC;&#xFF0C;&#x628A;&#x63A5;&#x6536;&#x5668;&#x8072;&#x660E;&#x7232;&#x6307;&#x91DD;&#x985E;&#x578B;&#x4E5F;&#x6C92;&#x4EC0;&#x9EBD;&#x5FC5;&#x8981;&#x3002;&#x4E0D;&#x904E;&#x53E6;&#x5916;&#x5169;&#x500B;&#x51FD;&#x6578;&#x5C31;&#x4E0D;&#x662F;&#x9019;&#x6A23;&#x4E86;&#xFF0C;&#x56E0;&#x7232;&#x53E6;&#x5916;&#x5169;&#x500B;&#x51FD;&#x6578;&#x64CD;&#x4F5C;&#x7684;&#x662F;s.words&#x5C0D;&#x8C61;&#xFF0C;&#x5982;&#x679C;&#x4F60;&#x4E0D;&#x628A;&#x63A5;&#x6536;&#x5668;&#x8072;&#x660E;&#x7232;&#x6307;&#x91DD;&#x5C0D;&#x8C61;&#xFF0C;&#x90A3;&#x9EBD;&#x5BE6;&#x969B;&#x64CD;&#x4F5C;&#x7684;&#x662F;&#x62F7;&#x8C9D;&#x5C0D;&#x8C61;&#xFF0C;&#x800C;&#x4E0D;&#x662F;&#x539F;&#x4F86;&#x7684;&#x90A3;&#x500B;&#x5C0D;&#x8C61;&#x3002;&#x56E0;&#x6B64;&#xFF0C;&#x56E0;&#x7232;&#x6211;&#x5011;&#x7684;String&#x65B9;&#x6CD5;&#x5B9A;&#x7FA9;&#x5728;IntSet&#x6307;&#x91DD;&#x4E0A;&#xFF0C;&#x6240;&#x4EE5;&#x7576;&#x6211;&#x5011;&#x7684;&#x8B8A;&#x91CF;&#x662F;IntSet&#x985E;&#x578B;&#x800C;&#x4E0D;&#x662F;IntSet&#x6307;&#x91DD;&#x6642;&#xFF0C;&#x53EF;&#x80FD;&#x6703;&#x6709;&#x4E0B;&#x9762;&#x9019;&#x6A23;&#x8B93;&#x4EBA;&#x610F;&#x5916;&#x7684;&#x60C5;&#x6CC1;&#xFF1A;</p>
<pre><code class="lang-go">fmt.Println(&amp;x) <span class="hljs-comment">// &quot;{1 9 42 144}&quot;</span>
fmt.Println(x.String()) <span class="hljs-comment">// &quot;{1 9 42 144}&quot;</span>
fmt.Println(x) <span class="hljs-comment">// &quot;{[4398046511618 0 65536]}&quot;</span>
</code></pre>
<p>&#x5728;&#x7B2C;&#x4E00;&#x500B;Println&#x4E2D;&#xFF0C;&#x6211;&#x5011;&#x6253;&#x5370;&#x4E00;&#x500B;*IntSet&#x7684;&#x6307;&#x937C;&#xFF0C;&#x9019;&#x500B;&#x985E;&#x578B;&#x7684;&#x6307;&#x937C;&#x78BA;&#x5BE6;&#x6709;&#x81EA;&#x5B9A;&#x7FA9;&#x7684;String&#x65B9;&#x6CD5;&#x3002;&#x7B2C;&#x4E8C;Println&#xFF0C;&#x6211;&#x5011;&#x76F4;&#x63A5;&#x8ABF;&#x7528;&#x4E86;x&#x8B8A;&#x91CF;&#x7684;String()&#x65B9;&#x6CD5;&#xFF1B;&#x9019;&#x7A2E;&#x60C5;&#x6CC1;&#x4E0B;&#x7DE8;&#x8B6F;&#x5668;&#x6703;&#x96B1;&#x5F0F;&#x5730;&#x5728;x&#x524D;&#x63D2;&#x5165;&amp;&#x64CD;&#x4F5C;&#x7B26;&#xFF0C;&#x9019;&#x6A23;&#x76F8;&#x7576;&#x9060;&#x6211;&#x5011;&#x9084;&#x662F;&#x8ABF;&#x7528;&#x7684;IntSet&#x6307;&#x937C;&#x7684;String&#x65B9;&#x6CD5;&#x3002;&#x5728;&#x7B2C;&#x4E09;&#x500B;Println&#x4E2D;&#xFF0C;&#x56E0;&#x70BA;IntSet&#x985E;&#x578B;&#x6C92;&#x6709;String&#x65B9;&#x6CD5;&#xFF0C;&#x6240;&#x4EE5;Println&#x65B9;&#x6CD5;&#x6703;&#x76F4;&#x63A5;&#x4EE5;&#x539F;&#x59CB;&#x7684;&#x65B9;&#x5F0F;&#x7406;&#x89E3;&#x4F75;&#x6253;&#x5370;&#x3002;&#x6240;&#x4EE5;&#x5728;&#x9019;&#x7A2E;&#x60C5;&#x6CC1;&#x4E0B;&amp;&#x7B26;&#x865F;&#x662F;&#x4E0D;&#x80FD;&#x5FD8;&#x7684;&#x3002;&#x5728;&#x6211;&#x5011;&#x9019;&#x7A2E;&#x5834;&#x666F;&#x4E0B;&#xFF0C;&#x4F60;&#x628A;String&#x65B9;&#x6CD5;&#x7D81;&#x5B9A;&#x5230;IntSet&#x5C0D;&#x8C61;&#x4E0A;&#xFF0C;&#x800C;&#x4E0D;&#x662F;IntSet&#x6307;&#x937C;&#x4E0A;&#x53EF;&#x80FD;&#x6703;&#x66F4;&#x95A4;&#x9069;&#x4E00;&#x4E9B;&#xFF0C;&#x4E0D;&#x904E;&#x9019;&#x4E5F;&#x9700;&#x8981;&#x5177;&#x9AD4;&#x554F;&#x984C;&#x5177;&#x9AD4;&#x5206;&#x6790;&#x3002;</p>
<p>&#x7DF4;&#x7FD2;6.1: &#x70BA;bit&#x6578;&#x7D44;&#x5BE6;&#x73FE;&#x4E0B;&#x9EAB;&#x9019;&#x4E9B;&#x65B9;&#x6CD5;</p>
<p>&#x5728;&#x7B2C;&#x4E00;&#x500B;Println&#x4E2D;&#xFF0C;&#x6211;&#x5011;&#x6253;&#x5370;&#x4E00;&#x500B;*IntSet&#x7684;&#x6307;&#x91DD;&#xFF0C;&#x9019;&#x500B;&#x985E;&#x578B;&#x7684;&#x6307;&#x91DD;&#x78BA;&#x5BE6;&#x6709;&#x81EA;&#x5B9A;&#x7FA9;&#x7684;String&#x65B9;&#x6CD5;&#x3002;&#x7B2C;&#x4E8C;Println&#xFF0C;&#x6211;&#x5011;&#x76F4;&#x63A5;&#x8ABF;&#x7528;&#x4E86;x&#x8B8A;&#x91CF;&#x7684;String()&#x65B9;&#x6CD5;&#xFF1B;&#x9019;&#x7A2E;&#x60C5;&#x6CC1;&#x4E0B;&#x7DE8;&#x8B6F;&#x5668;&#x6703;&#x96B1;&#x5F0F;&#x5730;&#x5728;x&#x524D;&#x63D2;&#x5165;&amp;&#x64CD;&#x4F5C;&#x7B26;&#xFF0C;&#x9019;&#x6A23;&#x76F8;&#x7576;&#x9060;&#x6211;&#x5011;&#x9084;&#x662F;&#x8ABF;&#x7528;&#x7684;IntSet&#x6307;&#x91DD;&#x7684;String&#x65B9;&#x6CD5;&#x3002;&#x5728;&#x7B2C;&#x4E09;&#x500B;Println&#x4E2D;&#xFF0C;&#x56E0;&#x7232;IntSet&#x985E;&#x578B;&#x6C92;&#x6709;String&#x65B9;&#x6CD5;&#xFF0C;&#x6240;&#x4EE5;Println&#x65B9;&#x6CD5;&#x6703;&#x76F4;&#x63A5;&#x4EE5;&#x539F;&#x59CB;&#x7684;&#x65B9;&#x5F0F;&#x7406;&#x89E3;&#x4F75;&#x6253;&#x5370;&#x3002;&#x6240;&#x4EE5;&#x5728;&#x9019;&#x7A2E;&#x60C5;&#x6CC1;&#x4E0B;&amp;&#x7B26;&#x865F;&#x662F;&#x4E0D;&#x80FD;&#x5FD8;&#x7684;&#x3002;&#x5728;&#x6211;&#x5011;&#x9019;&#x7A2E;&#x5834;&#x666F;&#x4E0B;&#xFF0C;&#x4F60;&#x628A;String&#x65B9;&#x6CD5;&#x7D81;&#x5B9A;&#x5230;IntSet&#x5C0D;&#x8C61;&#x4E0A;&#xFF0C;&#x800C;&#x4E0D;&#x662F;IntSet&#x6307;&#x91DD;&#x4E0A;&#x53EF;&#x80FD;&#x6703;&#x66F4;&#x5408;&#x9069;&#x4E00;&#x4E9B;&#xFF0C;&#x4E0D;&#x904E;&#x9019;&#x4E5F;&#x9700;&#x8981;&#x5177;&#x9AD4;&#x554F;&#x984C;&#x5177;&#x9AD4;&#x5206;&#x6790;&#x3002;</p>
<p>&#x7DF4;&#x7FD2;6.1: &#x7232;bit&#x6578;&#x7D44;&#x5BE6;&#x73FE;&#x4E0B;&#x9762;&#x9019;&#x4E9B;&#x65B9;&#x6CD5;</p>
<pre><code class="lang-go"><span class="hljs-keyword">func</span> (*IntSet) Len() <span class="hljs-typename">int</span> <span class="hljs-comment">// return the number of elements</span>
<span class="hljs-keyword">func</span> (*IntSet) Remove(x <span class="hljs-typename">int</span>) <span class="hljs-comment">// remove x from the set</span>
<span class="hljs-keyword">func</span> (*IntSet) Clear() <span class="hljs-comment">// remove all elements from the set</span>
<span class="hljs-keyword">func</span> (*IntSet) Copy() *IntSet <span class="hljs-comment">// return a copy of the set</span>
</code></pre>
<p>&#x7DF4;&#x7FD2;6.2: &#x5B9A;&#x7FA9;&#x4E00;&#x500B;&#x8B8A;&#x53C3;&#x65B9;&#x6CD5;(*IntSet).AddAll(...int)&#xFF0C;&#x9019;&#x500B;&#x65B9;&#x6CD5;&#x53EF;&#x4EE5;&#x70BA;&#x4E00;&#x7D44;IntSet&#x503C;&#x6C42;&#x548C;&#xFF0C;&#x6BD4;&#x5982;s.AddAll(1,2,3)&#x3002;</p>
<p>&#x7DF4;&#x7FD2;6.3: (*IntSet).UnionWith&#x6703;&#x7528;|&#x64CD;&#x4F5C;&#x7B26;&#x8A08;&#x7B97;&#x5169;&#x500B;&#x96C6;&#x95A4;&#x7684;&#x4EA4;&#x96C6;&#xFF0C;&#x6211;&#x5011;&#x518D;&#x70BA;IntSet&#x5BE6;&#x73FE;&#x53E6;&#x5916;&#x7684;&#x5E7E;&#x500B;&#x51FD;&#x6578;IntersectWith(&#x4EA4;&#x96C6;&#xFF1A;&#x5143;&#x7D20;&#x5728;A&#x96C6;&#x95A4;B&#x96C6;&#x95A4;&#x5747;&#x9F63;&#x73FE;),DifferenceWith(&#x5DEE;&#x96C6;&#xFF1A;&#x5143;&#x7D20;&#x9F63;&#x73FE;&#x5728;A&#x96C6;&#x95A4;&#xFF0C;&#x672A;&#x9F63;&#x73FE;&#x5728;B&#x96C6;&#x95A4;),SymmetricDifference(&#x4F75;&#x5DEE;&#x96C6;&#xFF1A;&#x5143;&#x7D20;&#x9F63;&#x73FE;&#x5728;A&#x4F46;&#x6C92;&#x6709;&#x9F63;&#x73FE;&#x5728;B&#xFF0C;&#x6216;&#x8005;&#x9F63;&#x73FE;&#x5728;B&#x6C92;&#x6709;&#x9F63;&#x73FE;&#x5728;A)&#x3002;
&#x7DF4;&#x7FD2;6.4: &#x5BE6;&#x73FE;&#x4E00;&#x500B;Elems&#x65B9;&#x6CD5;&#xFF0C;&#x8FD4;&#x8FF4;&#x96C6;&#x95A4;&#x4E2D;&#x7684;&#x6240;&#x6709;&#x5143;&#x7D20;&#xFF0C;&#x7528;&#x65BC;&#x505A;&#x4E00;&#x4E9B;range&#x4E4B;&#x985E;&#x7684;&#x904D;&#x6B77;&#x64CD;&#x4F5C;&#x3002;</p>
<p>&#x7DF4;&#x7FD2;6.5: &#x6211;&#x5011;&#x9019;&#x7AE0;&#x5B9A;&#x7FA9;&#x7684;IntSet&#x88CF;&#x7684;&#x6BCF;&#x500B;&#x5B57;&#x90FD;&#x662F;&#x7528;&#x7684;uint64&#x985E;&#x578B;&#xFF0C;&#x4F46;&#x662F;64&#x4F4D;&#x7684;&#x6578;&#x503C;&#x53EF;&#x80FD;&#x5728;32&#x4F4D;&#x7684;&#x5E73;&#x98B1;&#x4E0A;&#x4E0D;&#x9AD8;&#x6548;&#x3002;&#x8129;&#x6539;&#x7A0B;&#x5E8F;&#xFF0C;&#x4F7F;&#x5176;&#x4F7F;&#x7528;uint&#x985E;&#x578B;&#xFF0C;&#x9019;&#x7A2E;&#x985E;&#x578B;&#x5C0D;&#x65BC;32&#x4F4D;&#x5E73;&#x98B1;&#x4F86;&#x8AAA;&#x66F4;&#x95A4;&#x9069;&#x3002;&#x7576;&#x7136;&#x4E86;&#xFF0C;&#x9019;&#x88CF;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x4E0D;&#x7528;&#x7C21;&#x55AE;&#x7C97;&#x66B4;&#x5730;&#x9664;64&#xFF0C;&#x53EF;&#x4EE5;&#x5B9A;&#x7FA9;&#x4E00;&#x500B;&#x5E38;&#x91CF;&#x4F86;&#x6C7A;&#x5B9A;&#x662F;&#x7528;32&#x9084;&#x662F;64&#xFF0C;&#x9019;&#x88CF;&#x4F60;&#x53EF;&#x80FD;&#x6703;&#x7528;&#x5230;&#x5E73;&#x98B1;&#x7684;&#x81EA;&#x52D5;&#x5224;&#x65B7;&#x7684;&#x4E00;&#x500B;&#x667A;&#x80FD;&#x9336;&#x9054;&#x5F0F;&#xFF1A;32 &lt;&lt; (^uint(0) &gt;&gt; 63)</p>
<p>&#x7DF4;&#x7FD2;6.2: &#x5B9A;&#x7FA9;&#x4E00;&#x500B;&#x8B8A;&#x53C3;&#x65B9;&#x6CD5;(*IntSet).AddAll(...int)&#xFF0C;&#x9019;&#x500B;&#x65B9;&#x6CD5;&#x53EF;&#x4EE5;&#x7232;&#x4E00;&#x7D44;IntSet&#x503C;&#x6C42;&#x548C;&#xFF0C;&#x6BD4;&#x5982;s.AddAll(1,2,3)&#x3002;</p>
<p>&#x7DF4;&#x7FD2;6.3: (*IntSet).UnionWith&#x6703;&#x7528;|&#x64CD;&#x4F5C;&#x7B26;&#x8A08;&#x7B97;&#x5169;&#x500B;&#x96C6;&#x5408;&#x7684;&#x4EA4;&#x96C6;&#xFF0C;&#x6211;&#x5011;&#x518D;&#x7232;IntSet&#x5BE6;&#x73FE;&#x53E6;&#x5916;&#x7684;&#x5E7E;&#x500B;&#x51FD;&#x6578;IntersectWith(&#x4EA4;&#x96C6;&#xFF1A;&#x5143;&#x7D20;&#x5728;A&#x96C6;&#x5408;B&#x96C6;&#x5408;&#x5747;&#x9F63;&#x73FE;),DifferenceWith(&#x5DEE;&#x96C6;&#xFF1A;&#x5143;&#x7D20;&#x9F63;&#x73FE;&#x5728;A&#x96C6;&#x5408;&#xFF0C;&#x672A;&#x9F63;&#x73FE;&#x5728;B&#x96C6;&#x5408;),SymmetricDifference(&#x4F75;&#x5DEE;&#x96C6;&#xFF1A;&#x5143;&#x7D20;&#x9F63;&#x73FE;&#x5728;A&#x4F46;&#x6C92;&#x6709;&#x9F63;&#x73FE;&#x5728;B&#xFF0C;&#x6216;&#x8005;&#x9F63;&#x73FE;&#x5728;B&#x6C92;&#x6709;&#x9F63;&#x73FE;&#x5728;A)&#x3002;
&#x7DF4;&#x7FD2;6.4: &#x5BE6;&#x73FE;&#x4E00;&#x500B;Elems&#x65B9;&#x6CD5;&#xFF0C;&#x8FD4;&#x8FF4;&#x96C6;&#x5408;&#x4E2D;&#x7684;&#x6240;&#x6709;&#x5143;&#x7D20;&#xFF0C;&#x7528;&#x65BC;&#x505A;&#x4E00;&#x4E9B;range&#x4E4B;&#x985E;&#x7684;&#x904D;&#x6B77;&#x64CD;&#x4F5C;&#x3002;</p>
<p>&#x7DF4;&#x7FD2;6.5: &#x6211;&#x5011;&#x9019;&#x7AE0;&#x5B9A;&#x7FA9;&#x7684;IntSet&#x91CC;&#x7684;&#x6BCF;&#x500B;&#x5B57;&#x90FD;&#x662F;&#x7528;&#x7684;uint64&#x985E;&#x578B;&#xFF0C;&#x4F46;&#x662F;64&#x4F4D;&#x7684;&#x6578;&#x503C;&#x53EF;&#x80FD;&#x5728;32&#x4F4D;&#x7684;&#x5E73;&#x98B1;&#x4E0A;&#x4E0D;&#x9AD8;&#x6548;&#x3002;&#x8129;&#x6539;&#x7A0B;&#x5E8F;&#xFF0C;&#x4F7F;&#x5176;&#x4F7F;&#x7528;uint&#x985E;&#x578B;&#xFF0C;&#x9019;&#x7A2E;&#x985E;&#x578B;&#x5C0D;&#x65BC;32&#x4F4D;&#x5E73;&#x98B1;&#x4F86;&#x8AAC;&#x66F4;&#x5408;&#x9069;&#x3002;&#x7576;&#x7136;&#x4E86;&#xFF0C;&#x9019;&#x91CC;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x4E0D;&#x7528;&#x7C21;&#x55AE;&#x7C97;&#x66B4;&#x5730;&#x9664;64&#xFF0C;&#x53EF;&#x4EE5;&#x5B9A;&#x7FA9;&#x4E00;&#x500B;&#x5E38;&#x91CF;&#x4F86;&#x6C7A;&#x5B9A;&#x662F;&#x7528;32&#x9084;&#x662F;64&#xFF0C;&#x9019;&#x91CC;&#x4F60;&#x53EF;&#x80FD;&#x6703;&#x7528;&#x5230;&#x5E73;&#x98B1;&#x7684;&#x81EA;&#x52D5;&#x5224;&#x65B7;&#x7684;&#x4E00;&#x500B;&#x667A;&#x80FD;&#x8868;&#x9054;&#x5F0F;&#xFF1A;32 &lt;&lt; (^uint(0) &gt;&gt; 63)</p>
</section>
@@ -2160,7 +2124,7 @@ fmt.Println(x) <span class="hljs-comment">// &quot;{[4398046511618 0 65
</div>
<a href="../ch6/ch6-04.html" class="navigation navigation-prev " aria-label="Previous page: 方法值和方法達式"><i class="fa fa-angle-left"></i></a>
<a href="../ch6/ch6-04.html" class="navigation navigation-prev " aria-label="Previous page: 方法值和方法達式"><i class="fa fa-angle-left"></i></a>
<a href="../ch6/ch6-06.html" class="navigation navigation-next " aria-label="Next page: 封裝"><i class="fa fa-angle-right"></i></a>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="6.6" data-chapter-title="封裝" data-filepath="ch6/ch6-06.md" data-basepath=".." data-revision="Wed Dec 16 2015 10:54:29 GMT+0800 (中国标准时间)">
<div class="book" data-level="6.6" data-chapter-title="封裝" data-filepath="ch6/ch6-06.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book-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,21 +2024,21 @@
<section class="normal" id="section-">
<h2 id="66-&#x5C01;&#x88DD;">6.6. &#x5C01;&#x88DD;</h2>
<p>&#x4E00;&#x500B;&#x5C0D;&#x8C61;&#x7684;&#x8B8A;&#x91CF;&#x6216;&#x8005;&#x65B9;&#x6CD5;&#x5982;&#x679C;&#x5C0D;&#x8ABF;&#x7528;&#x65B9;&#x662F;&#x4E0D;&#x53EF;&#x898B;&#x7684;&#x8A71;&#xFF0C;&#x4E00;&#x822C;&#x5C31;&#x88AB;&#x5B9A;&#x7FA9;&#x70BA;&#x201C;&#x5C01;&#x88DD;&#x201D;&#x3002;&#x5C01;&#x88DD;&#x6709;&#x6642;&#x5019;&#x4E5F;&#x88AB;&#x53EB;&#x505A;&#x4FE1;&#x606F;&#x96B1;&#x85CF;&#xFF0C;&#x8855;&#x6642;&#x4E5F;&#x662F;&#x9EAB;&#x66CF;&#x5C0D;&#x8C61;&#x7DE8;&#x7A0B;&#x6700;&#x95DC;&#x9375;&#x7684;&#x4E00;&#x500B;&#x65B9;&#x9EAB;&#x3002;</p>
<p>Go&#x8A9E;&#x8A00;&#x96BB;&#x6709;&#x4E00;&#x7A2E;&#x63A7;&#x88FD;&#x53EF;&#x898B;&#x6027;&#x7684;&#x624B;&#x6BB5;&#xFF1A;&#x5927;&#x5BEB;&#x9996;&#x5B57;&#x6BCD;&#x7684;&#x6A19;&#x8B58;&#x7B26;&#x6703;&#x5F9E;&#x5B9A;&#x7FA9;&#x5B83;&#x5011;&#x7684;&#x5305;&#x4E2D;&#x88AB;&#x5C0E;&#x9F63;&#xFF0C;&#x5C0F;&#x5BEB;&#x5B57;&#x6BCD;&#x7684;&#x5247;&#x4E0D;&#x6703;&#x3002;&#x9019;&#x7A2E;&#x9650;&#x88FD;&#x5305;&#x5167;&#x6210;&#x54E1;&#x7684;&#x65B9;&#x5F0F;&#x8855;&#x6A23;&#x9069;&#x7528;&#x65BC;struct&#x6216;&#x8005;&#x4E00;&#x500B;&#x985E;&#x578B;&#x7684;&#x65B9;&#x6CD5;&#x3002;&#x56E0;&#x800C;&#x5982;&#x679C;&#x6211;&#x5011;&#x60F3;&#x8981;&#x5C01;&#x88DD;&#x4E00;&#x500B;&#x5C0D;&#x8C61;&#xFF0C;&#x6211;&#x5011;&#x5FC5;&#x9B1A;&#x5C07;&#x5176;&#x5B9A;&#x7FA9;&#x70BA;&#x4E00;&#x500B;struct&#x3002;</p>
<p>&#x9019;&#x4E5F;&#x5C31;&#x662F;&#x524D;&#x9EAB;&#x7684;&#x5C0F;&#x7BC0;&#x4E2D;IntSet&#x88AB;&#x5B9A;&#x7FA9;&#x70BA;struct&#x985E;&#x578B;&#x7684;&#x539F;&#x56E0;&#xFF0C;&#x76E1;&#x7BA1;&#x5B83;&#x96BB;&#x6709;&#x4E00;&#x500B;&#x5B57;&#x6BB5;&#xFF1A;</p>
<p>&#x4E00;&#x500B;&#x5C0D;&#x8C61;&#x7684;&#x8B8A;&#x91CF;&#x6216;&#x8005;&#x65B9;&#x6CD5;&#x5982;&#x679C;&#x5C0D;&#x8ABF;&#x7528;&#x65B9;&#x662F;&#x4E0D;&#x53EF;&#x898B;&#x7684;&#x8A71;&#xFF0C;&#x4E00;&#x822C;&#x5C31;&#x88AB;&#x5B9A;&#x7FA9;&#x7232;&#x201C;&#x5C01;&#x88DD;&#x201D;&#x3002;&#x5C01;&#x88DD;&#x6709;&#x6642;&#x5019;&#x4E5F;&#x88AB;&#x53EB;&#x505A;&#x4FE1;&#x606F;&#x96B1;&#x85CF;&#xFF0C;&#x540C;&#x6642;&#x4E5F;&#x662F;&#x9762;&#x5411;&#x5C0D;&#x8C61;&#x7DE8;&#x7A0B;&#x6700;&#x95DC;&#x9375;&#x7684;&#x4E00;&#x500B;&#x65B9;&#x9762;&#x3002;</p>
<p>Go&#x8A9E;&#x8A00;&#x96BB;&#x6709;&#x4E00;&#x7A2E;&#x63A7;&#x88FD;&#x53EF;&#x898B;&#x6027;&#x7684;&#x624B;&#x6BB5;&#xFF1A;&#x5927;&#x5BEB;&#x9996;&#x5B57;&#x6BCD;&#x7684;&#x6A19;&#x8B58;&#x7B26;&#x6703;&#x5F9E;&#x5B9A;&#x7FA9;&#x5B83;&#x5011;&#x7684;&#x5305;&#x4E2D;&#x88AB;&#x5C0E;&#x9F63;&#xFF0C;&#x5C0F;&#x5BEB;&#x5B57;&#x6BCD;&#x7684;&#x5247;&#x4E0D;&#x6703;&#x3002;&#x9019;&#x7A2E;&#x9650;&#x88FD;&#x5305;&#x5167;&#x6210;&#x54E1;&#x7684;&#x65B9;&#x5F0F;&#x540C;&#x6A23;&#x9069;&#x7528;&#x65BC;struct&#x6216;&#x8005;&#x4E00;&#x500B;&#x985E;&#x578B;&#x7684;&#x65B9;&#x6CD5;&#x3002;&#x56E0;&#x800C;&#x5982;&#x679C;&#x6211;&#x5011;&#x60F3;&#x8981;&#x5C01;&#x88DD;&#x4E00;&#x500B;&#x5C0D;&#x8C61;&#xFF0C;&#x6211;&#x5011;&#x5FC5;&#x9B1A;&#x5C07;&#x5176;&#x5B9A;&#x7FA9;&#x7232;&#x4E00;&#x500B;struct&#x3002;</p>
<p>&#x9019;&#x4E5F;&#x5C31;&#x662F;&#x524D;&#x9762;&#x7684;&#x5C0F;&#x7BC0;&#x4E2D;IntSet&#x88AB;&#x5B9A;&#x7FA9;&#x7232;struct&#x985E;&#x578B;&#x7684;&#x539F;&#x56E0;&#xFF0C;&#x76E1;&#x7BA1;&#x5B83;&#x96BB;&#x6709;&#x4E00;&#x500B;&#x5B57;&#x6BB5;&#xFF1A;</p>
<pre><code class="lang-go"><span class="hljs-keyword">type</span> IntSet <span class="hljs-keyword">struct</span> {
words []<span class="hljs-typename">uint64</span>
}
</code></pre>
<p>&#x7576;&#x7136;&#xFF0C;&#x6211;&#x5011;&#x4E5F;&#x53EF;&#x4EE5;&#x628A;IntSet&#x5B9A;&#x7FA9;&#x70BA;&#x4E00;&#x500B;slice&#x985E;&#x578B;&#xFF0C;&#x76E1;&#x7BA1;&#x9019;&#x6A23;&#x6211;&#x5011;&#x5C31;&#x9700;&#x8981;&#x628A;&#x4EE3;&#x78BC;&#x4E2D;&#x6240;&#x6709;&#x65B9;&#x6CD5;&#x88CF;&#x7528;&#x5230;&#x7684;s.words&#x7528;*s&#x66FF;&#x63DB;&#x6389;&#x4E86;&#xFF1A;</p>
<p>&#x7576;&#x7136;&#xFF0C;&#x6211;&#x5011;&#x4E5F;&#x53EF;&#x4EE5;&#x628A;IntSet&#x5B9A;&#x7FA9;&#x7232;&#x4E00;&#x500B;slice&#x985E;&#x578B;&#xFF0C;&#x76E1;&#x7BA1;&#x9019;&#x6A23;&#x6211;&#x5011;&#x5C31;&#x9700;&#x8981;&#x628A;&#x4EE3;&#x78BC;&#x4E2D;&#x6240;&#x6709;&#x65B9;&#x6CD5;&#x91CC;&#x7528;&#x5230;&#x7684;s.words&#x7528;*s&#x66FF;&#x63DB;&#x6389;&#x4E86;&#xFF1A;</p>
<pre><code class="lang-go"><span class="hljs-keyword">type</span> IntSet []<span class="hljs-typename">uint64</span>
</code></pre>
<p>&#x76E1;&#x7BA1;&#x9019;&#x500B;&#x7248;&#x672C;&#x7684;IntSet&#x5728;&#x672C;&#x8CEA;&#x4E0A;&#x662F;&#x4E00;&#x6A23;&#x7684;&#xFF0C;&#x4ED6;&#x4E5F;&#x53EF;&#x4EE5;&#x5141;&#x8A31;&#x5176;&#x5B83;&#x5305;&#x4E2D;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x8B80;&#x53D6;&#x4F75;&#x7DE8;&#x8F2F;&#x9019;&#x500B;slice&#x3002;&#x63DB;&#x53E5;&#x8A71;&#x8AAA;&#xFF0C;&#x76F8;&#x5C0D;*s&#x9019;&#x500B;&#x9336;&#x9054;&#x5F0F;&#x6703;&#x9F63;&#x73FE;&#x5728;&#x6240;&#x6709;&#x7684;&#x5305;&#x4E2D;&#xFF0C;s.words&#x96BB;&#x9700;&#x8981;&#x5728;&#x5B9A;&#x7FA9;IntSet&#x7684;&#x5305;&#x4E2D;&#x9F63;&#x73FE;(&#x8B6F;&#x8A3B;&#xFF1A;&#x6240;&#x4EE5;&#x9084;&#x662F;&#x63A8;&#x85A6;&#x5F8C;&#x8005;&#x5427;&#x7684;&#x610F;&#x601D;)&#x3002;</p>
<p>&#x9019;&#x7A2E;&#x57FA;&#x65BC;&#x540D;&#x5B57;&#x7684;&#x624B;&#x6BB5;&#x4F7F;&#x5F97;&#x5728;&#x8A9E;&#x8A00;&#x4E2D;&#x6700;&#x5C0F;&#x7684;&#x5C01;&#x88DD;&#x55AE;&#x5143;&#x662F;package&#xFF0C;&#x800C;&#x4E0D;&#x662F;&#x50CF;&#x5176;&#x5B83;&#x8A9E;&#x8A00;&#x4E00;&#x6A23;&#x7684;&#x985E;&#x578B;&#x3002;&#x4E00;&#x500B;struct&#x985E;&#x578B;&#x7684;&#x5B57;&#x6BB5;&#x5C0D;&#x8855;&#x4E00;&#x500B;&#x5305;&#x7684;&#x6240;&#x6709;&#x4EE3;&#x78BC;&#x90FD;&#x6709;&#x53EF;&#x898B;&#x6027;&#xFF0C;&#x7121;&#x8AD6;&#x4F60;&#x7684;&#x4EE3;&#x78BC;&#x662F;&#x5BEB;&#x5728;&#x4E00;&#x500B;&#x51FD;&#x6578;&#x9084;&#x662F;&#x4E00;&#x500B;&#x65B9;&#x6CD5;&#x88CF;&#x3002;</p>
<p>&#x5C01;&#x88DD;&#x63D0;&#x4F9B;&#x4E86;&#x4E09;&#x65B9;&#x9EAB;&#x7684;&#x512A;&#x9EDE;&#x3002;&#x9996;&#x5148;&#xFF0C;&#x56E0;&#x70BA;&#x8ABF;&#x7528;&#x65B9;&#x4E0D;&#x80FD;&#x76F4;&#x63A5;&#x8129;&#x6539;&#x5C0D;&#x8C61;&#x7684;&#x8B8A;&#x91CF;&#x503C;&#xFF0C;&#x5176;&#x96BB;&#x9700;&#x8981;&#x95DC;&#x8A3B;&#x5C11;&#x91CF;&#x7684;&#x8A9E;&#x53E5;&#x4F75;&#x4E14;&#x96BB;&#x8981;&#x5F04;&#x61C2;&#x5C11;&#x91CF;&#x8B8A;&#x91CF;&#x7684;&#x53EF;&#x80FD;&#x7684;&#x503C;&#x537D;&#x53EF;&#x3002;</p>
<p>&#x76E1;&#x7BA1;&#x9019;&#x500B;&#x7248;&#x672C;&#x7684;IntSet&#x5728;&#x672C;&#x8CEA;&#x4E0A;&#x662F;&#x4E00;&#x6A23;&#x7684;&#xFF0C;&#x4ED6;&#x4E5F;&#x53EF;&#x4EE5;&#x5141;&#x8A31;&#x5176;&#x5B83;&#x5305;&#x4E2D;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x8B80;&#x53D6;&#x4F75;&#x7DE8;&#x8F2F;&#x9019;&#x500B;slice&#x3002;&#x63DB;&#x53E5;&#x8A71;&#x8AAC;&#xFF0C;&#x76F8;&#x5C0D;*s&#x9019;&#x500B;&#x8868;&#x9054;&#x5F0F;&#x6703;&#x9F63;&#x73FE;&#x5728;&#x6240;&#x6709;&#x7684;&#x5305;&#x4E2D;&#xFF0C;s.words&#x96BB;&#x9700;&#x8981;&#x5728;&#x5B9A;&#x7FA9;IntSet&#x7684;&#x5305;&#x4E2D;&#x9F63;&#x73FE;(&#x8B6F;&#x8A3B;&#xFF1A;&#x6240;&#x4EE5;&#x9084;&#x662F;&#x63A8;&#x85A6;&#x5F8C;&#x8005;&#x5427;&#x7684;&#x610F;&#x601D;)&#x3002;</p>
<p>&#x9019;&#x7A2E;&#x57FA;&#x65BC;&#x540D;&#x5B57;&#x7684;&#x624B;&#x6BB5;&#x4F7F;&#x5F97;&#x5728;&#x8A9E;&#x8A00;&#x4E2D;&#x6700;&#x5C0F;&#x7684;&#x5C01;&#x88DD;&#x55AE;&#x5143;&#x662F;package&#xFF0C;&#x800C;&#x4E0D;&#x662F;&#x50CF;&#x5176;&#x5B83;&#x8A9E;&#x8A00;&#x4E00;&#x6A23;&#x7684;&#x985E;&#x578B;&#x3002;&#x4E00;&#x500B;struct&#x985E;&#x578B;&#x7684;&#x5B57;&#x6BB5;&#x5C0D;&#x540C;&#x4E00;&#x500B;&#x5305;&#x7684;&#x6240;&#x6709;&#x4EE3;&#x78BC;&#x90FD;&#x6709;&#x53EF;&#x898B;&#x6027;&#xFF0C;&#x7121;&#x8AD6;&#x4F60;&#x7684;&#x4EE3;&#x78BC;&#x662F;&#x5BEB;&#x5728;&#x4E00;&#x500B;&#x51FD;&#x6578;&#x9084;&#x662F;&#x4E00;&#x500B;&#x65B9;&#x6CD5;&#x91CC;&#x3002;</p>
<p>&#x5C01;&#x88DD;&#x63D0;&#x4F9B;&#x4E86;&#x4E09;&#x65B9;&#x9762;&#x7684;&#x512A;&#x9EDE;&#x3002;&#x9996;&#x5148;&#xFF0C;&#x56E0;&#x7232;&#x8ABF;&#x7528;&#x65B9;&#x4E0D;&#x80FD;&#x76F4;&#x63A5;&#x8129;&#x6539;&#x5C0D;&#x8C61;&#x7684;&#x8B8A;&#x91CF;&#x503C;&#xFF0C;&#x5176;&#x96BB;&#x9700;&#x8981;&#x95DC;&#x8A3B;&#x5C11;&#x91CF;&#x7684;&#x8A9E;&#x53E5;&#x4F75;&#x4E14;&#x96BB;&#x8981;&#x5F04;&#x61C2;&#x5C11;&#x91CF;&#x8B8A;&#x91CF;&#x7684;&#x53EF;&#x80FD;&#x7684;&#x503C;&#x537D;&#x53EF;&#x3002;</p>
<p>&#x7B2C;&#x4E8C;&#xFF0C;&#x96B1;&#x85CF;&#x5BE6;&#x73FE;&#x7684;&#x7D30;&#x7BC0;&#xFF0C;&#x53EF;&#x4EE5;&#x9632;&#x6B62;&#x8ABF;&#x7528;&#x65B9;&#x4F9D;&#x8CF4;&#x90A3;&#x4E9B;&#x53EF;&#x80FD;&#x8B8A;&#x5316;&#x7684;&#x5177;&#x9AD4;&#x5BE6;&#x73FE;&#xFF0C;&#x9019;&#x6A23;&#x4F7F;&#x8A2D;&#x8A08;&#x5305;&#x7684;&#x7A0B;&#x5E8F;&#x54E1;&#x5728;&#x4E0D;&#x7834;&#x58DE;&#x5C0D;&#x5916;&#x7684;api&#x60C5;&#x6CC1;&#x4E0B;&#x80FD;&#x5F97;&#x5230;&#x66F4;&#x5927;&#x7684;&#x81EA;&#x7531;&#x3002;</p>
<p>&#x628A;bytes.Buffer&#x9019;&#x500B;&#x985E;&#x578B;&#x4F5C;&#x70BA;&#x4F8B;&#x5B50;&#x4F86;&#x8003;&#x616E;&#x3002;&#x9019;&#x500B;&#x985E;&#x578B;&#x5728;&#x505A;&#x77ED;&#x5B57;&#x7B26;&#x4E32;&#x758A;&#x52A0;&#x7684;&#x6642;&#x5019;&#x5F88;&#x5E38;&#x7528;&#xFF0C;&#x6240;&#x4EE5;&#x5728;&#x8A2D;&#x8A08;&#x7684;&#x6642;&#x5019;&#x53EF;&#x4EE5;&#x505A;&#x4E00;&#x4E9B;&#x9810;&#x5148;&#x7684;&#x512A;&#x5316;&#xFF0C;&#x6BD4;&#x5982;&#x63D0;&#x524D;&#x9810;&#x7559;&#x4E00;&#x90E8;&#x5206;&#x7A7A;&#x9593;&#xFF0C;&#x4F86;&#x907F;&#x514D;&#x53CD;&#x5FA9;&#x7684;&#x5167;&#x5B58;&#x5206;&#x914D;&#x3002;&#x53C8;&#x56E0;&#x70BA;Buffer&#x662F;&#x4E00;&#x500B;struct&#x985E;&#x578B;&#xFF0C;&#x9019;&#x4E9B;&#x984D;&#x5916;&#x7684;&#x7A7A;&#x9593;&#x53EF;&#x4EE5;&#x7528;&#x9644;&#x52A0;&#x7684;&#x5B57;&#x7BC0;&#x6578;&#x7D44;&#x4F86;&#x4FDD;&#x5B58;&#xFF0C;&#x4E14;&#x653E;&#x5728;&#x4E00;&#x500B;&#x5C0F;&#x5BEB;&#x5B57;&#x6BCD;&#x958B;&#x982D;&#x7684;&#x5B57;&#x6BB5;&#x4E2D;&#x3002;&#x9019;&#x6A23;&#x5728;&#x5916;&#x90E8;&#x7684;&#x8ABF;&#x7528;&#x65B9;&#x96BB;&#x80FD;&#x770B;&#x5230;&#x6027;&#x80FD;&#x7684;&#x63D0;&#x965E;&#xFF0C;&#x4F46;&#x4F75;&#x4E0D;&#x6703;&#x5F97;&#x5230;&#x9019;&#x500B;&#x9644;&#x52A0;&#x8B8A;&#x91CF;&#x3002;Buffer&#x548C;&#x5176;&#x589E;&#x9577;&#x7B97;&#x6CD5;&#x6211;&#x5011;&#x5217;&#x5728;&#x9019;&#x88CF;&#xFF0C;&#x70BA;&#x4E86;&#x7C21;&#x6F54;&#x6027;&#x7A0D;&#x5FAE;&#x505A;&#x4E86;&#x4E00;&#x4E9B;&#x7CBE;&#x7C21;&#xFF1A;</p>
<p>&#x628A;bytes.Buffer&#x9019;&#x500B;&#x985E;&#x578B;&#x4F5C;&#x7232;&#x4F8B;&#x5B50;&#x4F86;&#x8003;&#x616E;&#x3002;&#x9019;&#x500B;&#x985E;&#x578B;&#x5728;&#x505A;&#x77ED;&#x5B57;&#x7B26;&#x4E32;&#x758A;&#x52A0;&#x7684;&#x6642;&#x5019;&#x5F88;&#x5E38;&#x7528;&#xFF0C;&#x6240;&#x4EE5;&#x5728;&#x8A2D;&#x8A08;&#x7684;&#x6642;&#x5019;&#x53EF;&#x4EE5;&#x505A;&#x4E00;&#x4E9B;&#x9810;&#x5148;&#x7684;&#x512A;&#x5316;&#xFF0C;&#x6BD4;&#x5982;&#x63D0;&#x524D;&#x9810;&#x7559;&#x4E00;&#x90E8;&#x5206;&#x7A7A;&#x9593;&#xFF0C;&#x4F86;&#x907F;&#x514D;&#x53CD;&#x8907;&#x7684;&#x5167;&#x5B58;&#x5206;&#x914D;&#x3002;&#x53C8;&#x56E0;&#x7232;Buffer&#x662F;&#x4E00;&#x500B;struct&#x985E;&#x578B;&#xFF0C;&#x9019;&#x4E9B;&#x984D;&#x5916;&#x7684;&#x7A7A;&#x9593;&#x53EF;&#x4EE5;&#x7528;&#x9644;&#x52A0;&#x7684;&#x5B57;&#x7BC0;&#x6578;&#x7D44;&#x4F86;&#x4FDD;&#x5B58;&#xFF0C;&#x4E14;&#x653E;&#x5728;&#x4E00;&#x500B;&#x5C0F;&#x5BEB;&#x5B57;&#x6BCD;&#x958B;&#x982D;&#x7684;&#x5B57;&#x6BB5;&#x4E2D;&#x3002;&#x9019;&#x6A23;&#x5728;&#x5916;&#x90E8;&#x7684;&#x8ABF;&#x7528;&#x65B9;&#x96BB;&#x80FD;&#x770B;&#x5230;&#x6027;&#x80FD;&#x7684;&#x63D0;&#x965E;&#xFF0C;&#x4F46;&#x4F75;&#x4E0D;&#x6703;&#x5F97;&#x5230;&#x9019;&#x500B;&#x9644;&#x52A0;&#x8B8A;&#x91CF;&#x3002;Buffer&#x548C;&#x5176;&#x589E;&#x9577;&#x7B97;&#x6CD5;&#x6211;&#x5011;&#x5217;&#x5728;&#x9019;&#x91CC;&#xFF0C;&#x7232;&#x4E86;&#x7C21;&#x6F54;&#x6027;&#x7A0D;&#x5FAE;&#x505A;&#x4E86;&#x4E00;&#x4E9B;&#x7CBE;&#x7C21;&#xFF1A;</p>
<pre><code class="lang-go"><span class="hljs-keyword">type</span> Buffer <span class="hljs-keyword">struct</span> {
buf []<span class="hljs-typename">byte</span>
initial [<span class="hljs-number">64</span>]<span class="hljs-typename">byte</span>
@@ -2095,13 +2059,13 @@
}
}
</code></pre>
<p>&#x5C01;&#x88DD;&#x7684;&#x7B2C;&#x4E09;&#x500B;&#x512A;&#x9EDE;&#x4E5F;&#x662F;&#x6700;&#x91CD;&#x8981;&#x7684;&#x512A;&#x9EDE;&#xFF0C;&#x662F;&#x963B;&#x6B62;&#x4E86;&#x5916;&#x90E8;&#x8ABF;&#x7528;&#x65B9;&#x5C0D;&#x5C0D;&#x8C61;&#x5167;&#x90E8;&#x7684;&#x503C;&#x4EFB;&#x610F;&#x5730;&#x9032;&#x884C;&#x8129;&#x6539;&#x3002;&#x56E0;&#x70BA;&#x5C0D;&#x8C61;&#x5167;&#x90E8;&#x8B8A;&#x91CF;&#x96BB;&#x53EF;&#x4EE5;&#x88AB;&#x8855;&#x4E00;&#x500B;&#x5305;&#x5167;&#x7684;&#x51FD;&#x6578;&#x8129;&#x6539;&#xFF0C;&#x6240;&#x4EE5;&#x5305;&#x7684;&#x4F5C;&#x8005;&#x53EF;&#x4EE5;&#x8B93;&#x9019;&#x4E9B;&#x51FD;&#x6578;&#x78BA;&#x4FDD;&#x5C0D;&#x8C61;&#x5167;&#x90E8;&#x7684;&#x4E00;&#x4E9B;&#x503C;&#x7684;&#x4E0D;&#x8B8A;&#x6027;&#x3002;&#x6BD4;&#x5982;&#x4E0B;&#x9EAB;&#x7684;Counter&#x985E;&#x578B;&#x5141;&#x8A31;&#x8ABF;&#x7528;&#x65B9;&#x4F86;&#x589E;&#x52A0;counter&#x8B8A;&#x91CF;&#x7684;&#x503C;&#xFF0C;&#x4F75;&#x4E14;&#x5141;&#x8A31;&#x5C07;&#x9019;&#x500B;&#x503C;reset&#x70BA;0&#xFF0C;&#x4F46;&#x662F;&#x4E0D;&#x5141;&#x8A31;&#x96A8;&#x4FBF;&#x8A2D;&#x7F6E;&#x9019;&#x500B;&#x503C;(&#x8B6F;&#x8A3B;&#xFF1A;&#x56E0;&#x70BA;&#x58D3;&#x6839;&#x5C31;&#x8A2A;&#x554F;&#x4E0D;&#x5230;)&#xFF1A;</p>
<p>&#x5C01;&#x88DD;&#x7684;&#x7B2C;&#x4E09;&#x500B;&#x512A;&#x9EDE;&#x4E5F;&#x662F;&#x6700;&#x91CD;&#x8981;&#x7684;&#x512A;&#x9EDE;&#xFF0C;&#x662F;&#x963B;&#x6B62;&#x4E86;&#x5916;&#x90E8;&#x8ABF;&#x7528;&#x65B9;&#x5C0D;&#x5C0D;&#x8C61;&#x5167;&#x90E8;&#x7684;&#x503C;&#x4EFB;&#x610F;&#x5730;&#x9032;&#x884C;&#x8129;&#x6539;&#x3002;&#x56E0;&#x7232;&#x5C0D;&#x8C61;&#x5167;&#x90E8;&#x8B8A;&#x91CF;&#x96BB;&#x53EF;&#x4EE5;&#x88AB;&#x540C;&#x4E00;&#x500B;&#x5305;&#x5167;&#x7684;&#x51FD;&#x6578;&#x8129;&#x6539;&#xFF0C;&#x6240;&#x4EE5;&#x5305;&#x7684;&#x4F5C;&#x8005;&#x53EF;&#x4EE5;&#x8B93;&#x9019;&#x4E9B;&#x51FD;&#x6578;&#x78BA;&#x4FDD;&#x5C0D;&#x8C61;&#x5167;&#x90E8;&#x7684;&#x4E00;&#x4E9B;&#x503C;&#x7684;&#x4E0D;&#x8B8A;&#x6027;&#x3002;&#x6BD4;&#x5982;&#x4E0B;&#x9762;&#x7684;Counter&#x985E;&#x578B;&#x5141;&#x8A31;&#x8ABF;&#x7528;&#x65B9;&#x4F86;&#x589E;&#x52A0;counter&#x8B8A;&#x91CF;&#x7684;&#x503C;&#xFF0C;&#x4F75;&#x4E14;&#x5141;&#x8A31;&#x5C07;&#x9019;&#x500B;&#x503C;reset&#x7232;0&#xFF0C;&#x4F46;&#x662F;&#x4E0D;&#x5141;&#x8A31;&#x96A8;&#x4FBF;&#x8A2D;&#x7F6E;&#x9019;&#x500B;&#x503C;(&#x8B6F;&#x8A3B;&#xFF1A;&#x56E0;&#x7232;&#x58D3;&#x6839;&#x5C31;&#x8A2A;&#x554F;&#x4E0D;&#x5230;)&#xFF1A;</p>
<pre><code class="lang-go"><span class="hljs-keyword">type</span> Counter <span class="hljs-keyword">struct</span> { n <span class="hljs-typename">int</span> }
<span class="hljs-keyword">func</span> (c *Counter) N() <span class="hljs-typename">int</span> { <span class="hljs-keyword">return</span> c.n }
<span class="hljs-keyword">func</span> (c *Counter) Increment() { c.n++ }
<span class="hljs-keyword">func</span> (c *Counter) Reset() { c.n = <span class="hljs-number">0</span> }
</code></pre>
<p>&#x96BB;&#x7528;&#x4F86;&#x8A2A;&#x554F;&#x6216;&#x8129;&#x6539;&#x5167;&#x90E8;&#x8B8A;&#x91CF;&#x7684;&#x51FD;&#x6578;&#x88AB;&#x7A31;&#x70BA;setter&#x6216;&#x8005;getter&#xFF0C;&#x4F8B;&#x5B50;&#x5982;&#x4E0B;&#xFF0C;&#x6BD4;&#x5982;log&#x5305;&#x88CF;&#x7684;Logger&#x985E;&#x578B;&#x5C0D;&#x61C9;&#x7684;&#x4E00;&#x4E9B;&#x51FD;&#x6578;&#x3002;&#x5728;&#x547D;&#x540D;&#x4E00;&#x500B;getter&#x65B9;&#x6CD5;&#x6642;&#xFF0C;&#x6211;&#x5011;&#x901A;&#x5E38;&#x6703;&#x7701;&#x7565;&#x6389;&#x524D;&#x9EAB;&#x7684;Get&#x524D;&#x7DB4;&#x3002;&#x9019;&#x7A2E;&#x7C21;&#x6F54;&#x4E0A;&#x7684;&#x504F;&#x597D;&#x4E5F;&#x53EF;&#x4EE5;&#x63A8;&#x5EE3;&#x5230;&#x5404;&#x7A2E;&#x985E;&#x578B;&#x7684;&#x524D;&#x7DB4;&#x6BD4;&#x5982;Fetch&#xFF0C;Find&#x6216;&#x8005;Lookup&#x3002;</p>
<p>&#x96BB;&#x7528;&#x4F86;&#x8A2A;&#x554F;&#x6216;&#x8129;&#x6539;&#x5167;&#x90E8;&#x8B8A;&#x91CF;&#x7684;&#x51FD;&#x6578;&#x88AB;&#x7A31;&#x7232;setter&#x6216;&#x8005;getter&#xFF0C;&#x4F8B;&#x5B50;&#x5982;&#x4E0B;&#xFF0C;&#x6BD4;&#x5982;log&#x5305;&#x91CC;&#x7684;Logger&#x985E;&#x578B;&#x5C0D;&#x61C9;&#x7684;&#x4E00;&#x4E9B;&#x51FD;&#x6578;&#x3002;&#x5728;&#x547D;&#x540D;&#x4E00;&#x500B;getter&#x65B9;&#x6CD5;&#x6642;&#xFF0C;&#x6211;&#x5011;&#x901A;&#x5E38;&#x6703;&#x7701;&#x7565;&#x6389;&#x524D;&#x9762;&#x7684;Get&#x524D;&#x7DB4;&#x3002;&#x9019;&#x7A2E;&#x7C21;&#x6F54;&#x4E0A;&#x7684;&#x504F;&#x597D;&#x4E5F;&#x53EF;&#x4EE5;&#x63A8;&#x5EE3;&#x5230;&#x5404;&#x7A2E;&#x985E;&#x578B;&#x7684;&#x524D;&#x7DB4;&#x6BD4;&#x5982;Fetch&#xFF0C;Find&#x6216;&#x8005;Lookup&#x3002;</p>
<pre><code class="lang-go"><span class="hljs-keyword">package</span> log
<span class="hljs-keyword">type</span> Logger <span class="hljs-keyword">struct</span> {
flags <span class="hljs-typename">int</span>
@@ -2113,15 +2077,15 @@
<span class="hljs-keyword">func</span> (l *Logger) Prefix() <span class="hljs-typename">string</span>
<span class="hljs-keyword">func</span> (l *Logger) SetPrefix(prefix <span class="hljs-typename">string</span>)
</code></pre>
<p>Go&#x7684;&#x7DE8;&#x78BC;&#x98A8;&#x683C;&#x4E0D;&#x7981;&#x6B62;&#x76F4;&#x63A5;&#x5C0E;&#x9F63;&#x5B57;&#x6BB5;&#x3002;&#x7576;&#x7136;&#xFF0C;&#x4E00;&#x65E6;&#x9032;&#x884C;&#x4E86;&#x5C0E;&#x9F63;&#xFF0C;&#x5C31;&#x6C92;&#x6709;&#x8FA6;&#x6CD5;&#x5728;&#x4FDD;&#x8B49;API&#x517C;&#x5BB9;&#x7684;&#x60C5;&#x6CC1;&#x4E0B;&#x53BB;&#x9664;&#x5C0D;&#x5176;&#x7684;&#x5C0E;&#x9F63;&#xFF0C;&#x6240;&#x4EE5;&#x5728;&#x4E00;&#x958B;&#x59CB;&#x7684;&#x9078;&#x64C7;&#x4E00;&#x5B9A;&#x8981;&#x7D93;&#x904E;&#x6DF1;&#x601D;&#x719F;&#x616E;&#x4F75;&#x4E14;&#x8981;&#x8003;&#x616E;&#x5230;&#x5305;&#x5167;&#x90E8;&#x7684;&#x4E00;&#x4E9B;&#x4E0D;&#x8B8A;&#x91CF;&#x7684;&#x4FDD;&#x8B49;&#xFF0C;&#x672A;&#x4F86;&#x53EF;&#x80FD;&#x7684;&#x8B8A;&#x5316;&#xFF0C;&#x4EE5;&#x53CA;&#x8ABF;&#x7528;&#x65B9;&#x7684;&#x4EE3;&#x78BC;&#x8CEA;&#x91CF;&#x662F;&#x5426;&#x6703;&#x56E0;&#x70BA;&#x5305;&#x7684;&#x4E00;&#x9EDE;&#x8129;&#x6539;&#x800C;&#x8B8A;&#x5DEE;&#x3002;</p>
<p>Go&#x7684;&#x7DE8;&#x78BC;&#x98A8;&#x683C;&#x4E0D;&#x7981;&#x6B62;&#x76F4;&#x63A5;&#x5C0E;&#x9F63;&#x5B57;&#x6BB5;&#x3002;&#x7576;&#x7136;&#xFF0C;&#x4E00;&#x65E6;&#x9032;&#x884C;&#x4E86;&#x5C0E;&#x9F63;&#xFF0C;&#x5C31;&#x6C92;&#x6709;&#x8FA6;&#x6CD5;&#x5728;&#x4FDD;&#x8B49;API&#x517C;&#x5BB9;&#x7684;&#x60C5;&#x6CC1;&#x4E0B;&#x53BB;&#x9664;&#x5C0D;&#x5176;&#x7684;&#x5C0E;&#x9F63;&#xFF0C;&#x6240;&#x4EE5;&#x5728;&#x4E00;&#x958B;&#x59CB;&#x7684;&#x9078;&#x64C7;&#x4E00;&#x5B9A;&#x8981;&#x7D93;&#x904E;&#x6DF1;&#x601D;&#x719F;&#x616E;&#x4F75;&#x4E14;&#x8981;&#x8003;&#x616E;&#x5230;&#x5305;&#x5167;&#x90E8;&#x7684;&#x4E00;&#x4E9B;&#x4E0D;&#x8B8A;&#x91CF;&#x7684;&#x4FDD;&#x8B49;&#xFF0C;&#x672A;&#x4F86;&#x53EF;&#x80FD;&#x7684;&#x8B8A;&#x5316;&#xFF0C;&#x4EE5;&#x53CA;&#x8ABF;&#x7528;&#x65B9;&#x7684;&#x4EE3;&#x78BC;&#x8CEA;&#x91CF;&#x662F;&#x5426;&#x6703;&#x56E0;&#x7232;&#x5305;&#x7684;&#x4E00;&#x9EDE;&#x8129;&#x6539;&#x800C;&#x8B8A;&#x5DEE;&#x3002;</p>
<p>&#x5C01;&#x88DD;&#x4F75;&#x4E0D;&#x7E3D;&#x662F;&#x7406;&#x60F3;&#x7684;&#x3002;
&#x96D6;&#x7136;&#x5C01;&#x88DD;&#x5728;&#x6709;&#x4E9B;&#x60C5;&#x6CC1;&#x662F;&#x5FC5;&#x8981;&#x7684;&#xFF0C;&#x4F46;&#x6709;&#x6642;&#x5019;&#x6211;&#x5011;&#x4E5F;&#x9700;&#x8981;&#x66B4;&#x9732;&#x4E00;&#x4E9B;&#x5167;&#x90E8;&#x5167;&#x5BB9;&#xFF0C;&#x6BD4;&#x5982;&#xFF1A;time.Duration&#x5C07;&#x5176;&#x9336;&#x73FE;&#x66B4;&#x9732;&#x70BA;&#x4E00;&#x500B;int64&#x6578;&#x5B57;&#x7684;&#x7D0D;&#x79D2;&#xFF0C;&#x4F7F;&#x5F97;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x7528;&#x4E00;&#x822C;&#x7684;&#x6578;&#x503C;&#x64CD;&#x4F5C;&#x4F86;&#x5C0D;&#x6642;&#x9593;&#x9032;&#x884C;&#x5C0D;&#x6BD4;&#xFF0C;&#x751A;&#x81F3;&#x53EF;&#x4EE5;&#x5B9A;&#x7FA9;&#x9019;&#x7A2E;&#x985E;&#x578B;&#x7684;&#x5E38;&#x91CF;&#xFF1A;</p>
&#x96D6;&#x7136;&#x5C01;&#x88DD;&#x5728;&#x6709;&#x4E9B;&#x60C5;&#x6CC1;&#x662F;&#x5FC5;&#x8981;&#x7684;&#xFF0C;&#x4F46;&#x6709;&#x6642;&#x5019;&#x6211;&#x5011;&#x4E5F;&#x9700;&#x8981;&#x66B4;&#x9732;&#x4E00;&#x4E9B;&#x5167;&#x90E8;&#x5167;&#x5BB9;&#xFF0C;&#x6BD4;&#x5982;&#xFF1A;time.Duration&#x5C07;&#x5176;&#x8868;&#x73FE;&#x66B4;&#x9732;&#x7232;&#x4E00;&#x500B;int64&#x6578;&#x5B57;&#x7684;&#x7D0D;&#x79D2;&#xFF0C;&#x4F7F;&#x5F97;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x7528;&#x4E00;&#x822C;&#x7684;&#x6578;&#x503C;&#x64CD;&#x4F5C;&#x4F86;&#x5C0D;&#x6642;&#x9593;&#x9032;&#x884C;&#x5C0D;&#x6BD4;&#xFF0C;&#x751A;&#x81F3;&#x53EF;&#x4EE5;&#x5B9A;&#x7FA9;&#x9019;&#x7A2E;&#x985E;&#x578B;&#x7684;&#x5E38;&#x91CF;&#xFF1A;</p>
<pre><code class="lang-go"><span class="hljs-keyword">const</span> day = <span class="hljs-number">24</span> * time.Hour
fmt.Println(day.Seconds()) <span class="hljs-comment">// &quot;86400&quot;</span>
</code></pre>
<p>&#x53E6;&#x4E00;&#x500B;&#x4F8B;&#x5B50;&#xFF0C;&#x5C07;IntSet&#x548C;&#x672C;&#x7AE0;&#x958B;&#x982D;&#x7684;geometry.Path&#x9032;&#x884C;&#x5C0D;&#x6BD4;&#x3002;Path&#x88AB;&#x5B9A;&#x7FA9;&#x70BA;&#x4E00;&#x500B;slice&#x985E;&#x578B;&#xFF0C;&#x9019;&#x5141;&#x8A31;&#x5176;&#x8ABF;&#x7528;slice&#x7684;&#x5B57;&#x9EAB;&#x65B9;&#x6CD5;&#x4F86;&#x5C0D;&#x5176;&#x5167;&#x90E8;&#x7684;points&#x7528;range&#x9032;&#x884C;&#x8FED;&#x4EE3;&#x904D;&#x6B77;&#xFF1B;&#x5728;&#x9019;&#x4E00;&#x9EDE;&#x4E0A;&#xFF0C;IntSet&#x662F;&#x6C92;&#x6709;&#x8FA6;&#x6CD5;&#x8B93;&#x4F60;&#x9019;&#x9EBC;&#x505A;&#x7684;&#x3002;</p>
<p>&#x9019;&#x5169;&#x7A2E;&#x985E;&#x578B;&#x6C7A;&#x5B9A;&#x6027;&#x7684;&#x4E0D;&#x8855;&#xFF1A;geometry.Path&#x7684;&#x672C;&#x8CEA;&#x662F;&#x4E00;&#x500B;&#x5750;&#x6A19;&#x9EDE;&#x7684;&#x5E8F;&#x5217;&#xFF0C;&#x4E0D;&#x591A;&#x4E5F;&#x4E0D;&#x5C11;&#xFF0C;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x9810;&#x898B;&#x5230;&#x4E4B;&#x5F8C;&#x4E5F;&#x4F75;&#x4E0D;&#x6703;&#x7D66;&#x4ED6;&#x589E;&#x52A0;&#x984D;&#x5916;&#x7684;&#x5B57;&#x6BB5;&#xFF0C;&#x6240;&#x4EE5;&#x5728;geometry&#x5305;&#x4E2D;&#x5C07;Path&#x66B4;&#x9732;&#x70BA;&#x4E00;&#x500B;slice&#x3002;&#x76F8;&#x6BD4;&#x4E4B;&#x4E0B;&#xFF0C;IntSet&#x50C5;&#x50C5;&#x662F;&#x5728;&#x9019;&#x88CF;&#x7528;&#x4E86;&#x4E00;&#x500B;[]uint64&#x7684;slice&#x3002;&#x9019;&#x500B;&#x985E;&#x578B;&#x9084;&#x53EF;&#x4EE5;&#x7528;[]uint&#x985E;&#x578B;&#x4F86;&#x9336;&#x793A;&#xFF0C;&#x6216;&#x8005;&#x6211;&#x5011;&#x751A;&#x81F3;&#x53EF;&#x4EE5;&#x7528;&#x5176;&#x5B83;&#x5B8C;&#x5168;&#x4E0D;&#x8855;&#x7684;&#x4F54;&#x7528;&#x66F4;&#x5C0F;&#x5167;&#x5B58;&#x7A7A;&#x9593;&#x7684;&#x6771;&#x897F;&#x4F86;&#x9336;&#x793A;&#x9019;&#x500B;&#x96C6;&#x95A4;&#xFF0C;&#x6240;&#x4EE5;&#x6211;&#x5011;&#x53EF;&#x80FD;&#x9084;&#x6703;&#x9700;&#x8981;&#x984D;&#x5916;&#x7684;&#x5B57;&#x6BB5;&#x4F86;&#x5728;&#x9019;&#x500B;&#x985E;&#x578B;&#x4E2D;&#x8A18;&#x5F54;&#x5143;&#x7D20;&#x7684;&#x500B;&#x6578;&#x3002;&#x4E5F;&#x6B63;&#x662F;&#x56E0;&#x70BA;&#x9019;&#x4E9B;&#x539F;&#x56E0;&#xFF0C;&#x6211;&#x5011;&#x8B93;IntSet&#x5C0D;&#x8ABF;&#x7528;&#x65B9;&#x900F;&#x660E;&#x3002;</p>
<p>&#x5728;&#x9019;&#x7AE0;&#x4E2D;&#xFF0C;&#x6211;&#x5011;&#x5B78;&#x5230;&#x4E86;&#x5982;&#x4F55;&#x5C07;&#x65B9;&#x6CD5;&#x8207;&#x547D;&#x540D;&#x985E;&#x578B;&#x9032;&#x884C;&#x7D44;&#x95A4;&#xFF0C;&#x4F75;&#x4E14;&#x77E5;&#x9053;&#x4E86;&#x5982;&#x4F55;&#x8ABF;&#x7528;&#x9019;&#x4E9B;&#x65B9;&#x6CD5;&#x3002;&#x76E1;&#x7BA1;&#x65B9;&#x6CD5;&#x5C0D;&#x65BC;OOP&#x7DE8;&#x7A0B;&#x4F86;&#x8AAA;&#x81F3;&#x95DC;&#x91CD;&#x8981;&#xFF0C;&#x4F46;&#x4ED6;&#x5011;&#x96BB;&#x662F;OOP&#x7DE8;&#x7A0B;&#x88CF;&#x7684;&#x534A;&#x908A;&#x5929;&#x3002;&#x70BA;&#x4E86;&#x5B8C;&#x6210;OOP&#xFF0C;&#x6211;&#x5011;&#x9084;&#x9700;&#x8981;&#x63A5;&#x53E3;&#x3002;Go&#x88CF;&#x7684;&#x63A5;&#x53E3;&#x6703;&#x5728;&#x4E0B;&#x4E00;&#x7AE0;&#x4E2D;&#x4ECB;&#x7D39;&#x3002;</p>
<p>&#x53E6;&#x4E00;&#x500B;&#x4F8B;&#x5B50;&#xFF0C;&#x5C07;IntSet&#x548C;&#x672C;&#x7AE0;&#x958B;&#x982D;&#x7684;geometry.Path&#x9032;&#x884C;&#x5C0D;&#x6BD4;&#x3002;Path&#x88AB;&#x5B9A;&#x7FA9;&#x7232;&#x4E00;&#x500B;slice&#x985E;&#x578B;&#xFF0C;&#x9019;&#x5141;&#x8A31;&#x5176;&#x8ABF;&#x7528;slice&#x7684;&#x5B57;&#x9762;&#x65B9;&#x6CD5;&#x4F86;&#x5C0D;&#x5176;&#x5167;&#x90E8;&#x7684;points&#x7528;range&#x9032;&#x884C;&#x8FED;&#x4EE3;&#x904D;&#x6B77;&#xFF1B;&#x5728;&#x9019;&#x4E00;&#x9EDE;&#x4E0A;&#xFF0C;IntSet&#x662F;&#x6C92;&#x6709;&#x8FA6;&#x6CD5;&#x8B93;&#x4F60;&#x9019;&#x9EBD;&#x505A;&#x7684;&#x3002;</p>
<p>&#x9019;&#x5169;&#x7A2E;&#x985E;&#x578B;&#x6C7A;&#x5B9A;&#x6027;&#x7684;&#x4E0D;&#x540C;&#xFF1A;geometry.Path&#x7684;&#x672C;&#x8CEA;&#x662F;&#x4E00;&#x500B;&#x5750;&#x6A19;&#x9EDE;&#x7684;&#x5E8F;&#x5217;&#xFF0C;&#x4E0D;&#x591A;&#x4E5F;&#x4E0D;&#x5C11;&#xFF0C;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x9810;&#x898B;&#x5230;&#x4E4B;&#x5F8C;&#x4E5F;&#x4F75;&#x4E0D;&#x6703;&#x7D66;&#x4ED6;&#x589E;&#x52A0;&#x984D;&#x5916;&#x7684;&#x5B57;&#x6BB5;&#xFF0C;&#x6240;&#x4EE5;&#x5728;geometry&#x5305;&#x4E2D;&#x5C07;Path&#x66B4;&#x9732;&#x7232;&#x4E00;&#x500B;slice&#x3002;&#x76F8;&#x6BD4;&#x4E4B;&#x4E0B;&#xFF0C;IntSet&#x50C5;&#x50C5;&#x662F;&#x5728;&#x9019;&#x91CC;&#x7528;&#x4E86;&#x4E00;&#x500B;[]uint64&#x7684;slice&#x3002;&#x9019;&#x500B;&#x985E;&#x578B;&#x9084;&#x53EF;&#x4EE5;&#x7528;[]uint&#x985E;&#x578B;&#x4F86;&#x8868;&#x793A;&#xFF0C;&#x6216;&#x8005;&#x6211;&#x5011;&#x751A;&#x81F3;&#x53EF;&#x4EE5;&#x7528;&#x5176;&#x5B83;&#x5B8C;&#x5168;&#x4E0D;&#x540C;&#x7684;&#x5360;&#x7528;&#x66F4;&#x5C0F;&#x5167;&#x5B58;&#x7A7A;&#x9593;&#x7684;&#x6771;&#x897F;&#x4F86;&#x8868;&#x793A;&#x9019;&#x500B;&#x96C6;&#x5408;&#xFF0C;&#x6240;&#x4EE5;&#x6211;&#x5011;&#x53EF;&#x80FD;&#x9084;&#x6703;&#x9700;&#x8981;&#x984D;&#x5916;&#x7684;&#x5B57;&#x6BB5;&#x4F86;&#x5728;&#x9019;&#x500B;&#x985E;&#x578B;&#x4E2D;&#x8A18;&#x9332;&#x5143;&#x7D20;&#x7684;&#x500B;&#x6578;&#x3002;&#x4E5F;&#x6B63;&#x662F;&#x56E0;&#x7232;&#x9019;&#x4E9B;&#x539F;&#x56E0;&#xFF0C;&#x6211;&#x5011;&#x8B93;IntSet&#x5C0D;&#x8ABF;&#x7528;&#x65B9;&#x900F;&#x660E;&#x3002;</p>
<p>&#x5728;&#x9019;&#x7AE0;&#x4E2D;&#xFF0C;&#x6211;&#x5011;&#x5B78;&#x5230;&#x4E86;&#x5982;&#x4F55;&#x5C07;&#x65B9;&#x6CD5;&#x8207;&#x547D;&#x540D;&#x985E;&#x578B;&#x9032;&#x884C;&#x7D44;&#x5408;&#xFF0C;&#x4F75;&#x4E14;&#x77E5;&#x9053;&#x4E86;&#x5982;&#x4F55;&#x8ABF;&#x7528;&#x9019;&#x4E9B;&#x65B9;&#x6CD5;&#x3002;&#x76E1;&#x7BA1;&#x65B9;&#x6CD5;&#x5C0D;&#x65BC;OOP&#x7DE8;&#x7A0B;&#x4F86;&#x8AAC;&#x81F3;&#x95DC;&#x91CD;&#x8981;&#xFF0C;&#x4F46;&#x4ED6;&#x5011;&#x96BB;&#x662F;OOP&#x7DE8;&#x7A0B;&#x91CC;&#x7684;&#x534A;&#x908A;&#x5929;&#x3002;&#x7232;&#x4E86;&#x5B8C;&#x6210;OOP&#xFF0C;&#x6211;&#x5011;&#x9084;&#x9700;&#x8981;&#x63A5;&#x53E3;&#x3002;Go&#x91CC;&#x7684;&#x63A5;&#x53E3;&#x6703;&#x5728;&#x4E0B;&#x4E00;&#x7AE0;&#x4E2D;&#x4ECB;&#x7D39;&#x3002;</p>
</section>

View File

@@ -48,7 +48,7 @@
<body>
<div class="book" data-level="6" data-chapter-title="方法" data-filepath="ch6/ch6.md" data-basepath=".." data-revision="Wed Dec 16 2015 10:54:29 GMT+0800 (中国标准时间)">
<div class="book" data-level="6" data-chapter-title="方法" data-filepath="ch6/ch6.md" data-basepath=".." data-revision="Mon Dec 21 2015 12:51:02 GMT+0800 (中国标准时间)">
<div class="book-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,15 +2024,15 @@
<section class="normal" id="section-">
<h1 id="&#x7B2C;&#x516D;&#x7AE0;-&#x65B9;&#x6CD5;">&#x7B2C;&#x516D;&#x7AE0; &#x65B9;&#x6CD5;</h1>
<p>&#x5F9E;90&#x5E74;&#x4EE3;&#x65E9;&#x671F;&#x958B;&#x59CB;&#xFF0C;&#x9EAB;&#x66CF;&#x5C0D;&#x8C61;&#x7DE8;&#x7A0B;(OOP)&#x5C31;&#x6210;&#x70BA;&#x4E86;&#x7A31;&#x9738;&#x5DE5;&#x7A0B;&#x754C;&#x548C;&#x654E;&#x80B2;&#x754C;&#x7684;&#x7DE8;&#x7A0B;&#x7BC4;&#x5F0F;&#xFF0C;&#x6240;&#x4EE5;&#x4E4B;&#x5F8C;&#x5E7E;&#x4E4E;&#x6240;&#x6709;&#x5927;&#x898F;&#x6A21;&#x88AB;&#x61C9;&#x7528;&#x7684;&#x8A9E;&#x8A00;&#x90FD;&#x5305;&#x542B;&#x4E86;&#x5C0D;OOP&#x7684;&#x652F;&#x6301;&#xFF0C;go&#x8A9E;&#x8A00;&#x4E5F;&#x4E0D;&#x4F8B;&#x5916;&#x3002;</p>
<p>&#x76E1;&#x7BA1;&#x6C92;&#x6709;&#x88AB;&#x5927;&#x773E;&#x6240;&#x63A5;&#x53D7;&#x7684;&#x660E;&#x78BA;&#x7684;OOP&#x7684;&#x5B9A;&#x7FA9;&#xFF0C;&#x5F9E;&#x6211;&#x5011;&#x7684;&#x7406;&#x89E3;&#x4F86;&#x8B1B;&#xFF0C;&#x4E00;&#x500B;&#x5C0D;&#x8C61;&#x5176;&#x5BE6;&#x4E5F;&#x5C31;&#x662F;&#x4E00;&#x500B;&#x7C21;&#x55AE;&#x7684;&#x503C;&#x6216;&#x8005;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#xFF0C;&#x5728;&#x9019;&#x500B;&#x5C0D;&#x8C61;&#x4E2D;&#x6703;&#x5305;&#x542B;&#x4E00;&#x4E9B;&#x65B9;&#x6CD5;&#xFF0C;&#x800C;&#x4E00;&#x500B;&#x65B9;&#x6CD5;&#x5247;&#x662F;&#x4E00;&#x500B;&#x4E00;&#x500B;&#x548C;&#x7279;&#x6B8A;&#x985E;&#x578B;&#x95DC;&#x806F;&#x7684;&#x51FD;&#x6578;&#x3002;&#x4E00;&#x500B;&#x9EAB;&#x66CF;&#x5C0D;&#x8C61;&#x7684;&#x7A0B;&#x5E8F;&#x6703;&#x7528;&#x65B9;&#x6CD5;&#x4F86;&#x9336;&#x9054;&#x5176;&#x5C6C;&#x6027;&#x548C;&#x5C0D;&#x61C9;&#x7684;&#x64CD;&#x4F5C;&#xFF0C;&#x9019;&#x6A23;&#x4F7F;&#x7528;&#x9019;&#x500B;&#x5C0D;&#x8C61;&#x7684;&#x7528;&#x6236;&#x5C31;&#x4E0D;&#x9700;&#x8981;&#x76F4;&#x63A5;&#x53BB;&#x64CD;&#x4F5C;&#x5C0D;&#x8C61;&#xFF0C;&#x800C;&#x662F;&#x501F;&#x52A9;&#x65B9;&#x6CD5;&#x4F86;&#x505A;&#x9019;&#x4E9B;&#x4E8B;&#x60C5;&#x3002;</p>
<p>&#x5F9E;90&#x5E74;&#x4EE3;&#x65E9;&#x671F;&#x958B;&#x59CB;&#xFF0C;&#x9762;&#x5411;&#x5C0D;&#x8C61;&#x7DE8;&#x7A0B;(OOP)&#x5C31;&#x6210;&#x7232;&#x4E86;&#x7A31;&#x9738;&#x5DE5;&#x7A0B;&#x754C;&#x548C;&#x654E;&#x80B2;&#x754C;&#x7684;&#x7DE8;&#x7A0B;&#x8303;&#x5F0F;&#xFF0C;&#x6240;&#x4EE5;&#x4E4B;&#x5F8C;&#x5E7E;&#x4E4E;&#x6240;&#x6709;&#x5927;&#x898F;&#x6A21;&#x88AB;&#x61C9;&#x7528;&#x7684;&#x8A9E;&#x8A00;&#x90FD;&#x5305;&#x542B;&#x4E86;&#x5C0D;OOP&#x7684;&#x652F;&#x6301;&#xFF0C;go&#x8A9E;&#x8A00;&#x4E5F;&#x4E0D;&#x4F8B;&#x5916;&#x3002;</p>
<p>&#x76E1;&#x7BA1;&#x6C92;&#x6709;&#x88AB;&#x5927;&#x8846;&#x6240;&#x63A5;&#x53D7;&#x7684;&#x660E;&#x78BA;&#x7684;OOP&#x7684;&#x5B9A;&#x7FA9;&#xFF0C;&#x5F9E;&#x6211;&#x5011;&#x7684;&#x7406;&#x89E3;&#x4F86;&#x8B1B;&#xFF0C;&#x4E00;&#x500B;&#x5C0D;&#x8C61;&#x5176;&#x5BE6;&#x4E5F;&#x5C31;&#x662F;&#x4E00;&#x500B;&#x7C21;&#x55AE;&#x7684;&#x503C;&#x6216;&#x8005;&#x4E00;&#x500B;&#x8B8A;&#x91CF;&#xFF0C;&#x5728;&#x9019;&#x500B;&#x5C0D;&#x8C61;&#x4E2D;&#x6703;&#x5305;&#x542B;&#x4E00;&#x4E9B;&#x65B9;&#x6CD5;&#xFF0C;&#x800C;&#x4E00;&#x500B;&#x65B9;&#x6CD5;&#x5247;&#x662F;&#x4E00;&#x500B;&#x4E00;&#x500B;&#x548C;&#x7279;&#x6B8A;&#x985E;&#x578B;&#x95DC;&#x806F;&#x7684;&#x51FD;&#x6578;&#x3002;&#x4E00;&#x500B;&#x9762;&#x5411;&#x5C0D;&#x8C61;&#x7684;&#x7A0B;&#x5E8F;&#x6703;&#x7528;&#x65B9;&#x6CD5;&#x4F86;&#x8868;&#x9054;&#x5176;&#x5C6C;&#x6027;&#x548C;&#x5C0D;&#x61C9;&#x7684;&#x64CD;&#x4F5C;&#xFF0C;&#x9019;&#x6A23;&#x4F7F;&#x7528;&#x9019;&#x500B;&#x5C0D;&#x8C61;&#x7684;&#x7528;&#x6236;&#x5C31;&#x4E0D;&#x9700;&#x8981;&#x76F4;&#x63A5;&#x53BB;&#x64CD;&#x4F5C;&#x5C0D;&#x8C61;&#xFF0C;&#x800C;&#x662F;&#x501F;&#x52A9;&#x65B9;&#x6CD5;&#x4F86;&#x505A;&#x9019;&#x4E9B;&#x4E8B;&#x60C5;&#x3002;</p>
<p>&#x5728;&#x65E9;&#x4E9B;&#x7684;&#x7AE0;&#x7BC0;&#x4E2D;&#xFF0C;&#x6211;&#x5011;&#x5DF2;&#x7D93;&#x4F7F;&#x7528;&#x4E86;&#x6A19;&#x6E96;&#x5EAB;&#x63D0;&#x4F9B;&#x7684;&#x4E00;&#x4E9B;&#x65B9;&#x6CD5;&#xFF0C;&#x6BD4;&#x5982;time.Duration&#x9019;&#x500B;&#x985E;&#x578B;&#x7684;Seconds&#x65B9;&#x6CD5;&#xFF1A;</p>
<pre><code> const day = 24 * time.Hour
fmt.Println(day.Seconds()) // &quot;86400&quot;
</code></pre><p>&#x4F75;&#x4E14;&#x5728;2.5&#x7BC0;&#x4E2D;&#xFF0C;&#x6211;&#x5011;&#x5B9A;&#x7FA9;&#x4E86;&#x4E00;&#x500B;&#x81EA;&#x5DF1;&#x7684;&#x65B9;&#x6CD5;&#xFF0C;Celsius&#x985E;&#x578B;&#x7684;String&#x65B9;&#x6CD5;:</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>&#x5728;&#x672C;&#x7AE0;&#x4E2D;&#xFF0C;OOP&#x7DE8;&#x7A0B;&#x7684;&#x7B2C;&#x4E00;&#x65B9;&#x9EAB;&#xFF0C;&#x6211;&#x5011;&#x6703;&#x66CF;&#x4F60;&#x5C55;&#x793A;&#x5982;&#x4F55;&#x6709;&#x6548;&#x5730;&#x5B9A;&#x7FA9;&#x548C;&#x4F7F;&#x7528;&#x65B9;&#x6CD5;&#x3002;&#x6211;&#x5011;&#x6703;&#x8986;&#x84CB;&#x5230;OOP&#x7DE8;&#x7A0B;&#x7684;&#x5169;&#x500B;&#x95DC;&#x9375;&#x9EDE;&#xFF0C;&#x5C01;&#x88DD;&#x548C;&#x7D44;&#x95A4;&#x3002;</p>
<p>&#x5728;&#x672C;&#x7AE0;&#x4E2D;&#xFF0C;OOP&#x7DE8;&#x7A0B;&#x7684;&#x7B2C;&#x4E00;&#x65B9;&#x9762;&#xFF0C;&#x6211;&#x5011;&#x6703;&#x5411;&#x4F60;&#x5C55;&#x793A;&#x5982;&#x4F55;&#x6709;&#x6548;&#x5730;&#x5B9A;&#x7FA9;&#x548C;&#x4F7F;&#x7528;&#x65B9;&#x6CD5;&#x3002;&#x6211;&#x5011;&#x6703;&#x8986;&#x84CB;&#x5230;OOP&#x7DE8;&#x7A0B;&#x7684;&#x5169;&#x500B;&#x95DC;&#x9375;&#x9EDE;&#xFF0C;&#x5C01;&#x88DD;&#x548C;&#x7D44;&#x5408;&#x3002;</p>
</section>