This commit is contained in:
chai2010
2015-12-28 16:08:26 +08:00
parent 35b11c0ff4
commit 775502e64d
206 changed files with 2064 additions and 1460 deletions

View File

@@ -21,6 +21,10 @@
<link rel="stylesheet" href="../gitbook/style.css">
<link rel="stylesheet" href="../gitbook/plugins/gitbook-plugin-katex/katex.min.css">
<link rel="stylesheet" href="../gitbook/plugins/gitbook-plugin-highlight/website.css">
@@ -44,7 +48,7 @@
<body>
<div class="book" data-level="11.1" data-chapter-title="go test" data-filepath="ch11/ch11-01.md" data-basepath=".." data-revision="Fri Dec 25 2015 12:32:44 GMT+0800 (中国标准时间)">
<div class="book" data-level="11.1" data-chapter-title="go test" data-filepath="ch11/ch11-01.md" data-basepath=".." data-revision="Mon Dec 28 2015 16:03:52 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -238,7 +242,7 @@
<b>1.5.</b>
取URL
取URL
</a>
@@ -253,7 +257,7 @@
<b>1.6.</b>
併發取多個URL
併發取多個URL
</a>
@@ -802,7 +806,7 @@
<b>5.10.</b>
Recover捕異常
Recover捕異常
</a>
@@ -1315,7 +1319,7 @@
<b>8.9.</b>
併發的退
併發的退
</a>
@@ -1834,7 +1838,7 @@
<b>12.7.</b>
取結構體字段標識
取結構體字段標識
</a>
@@ -2054,7 +2058,7 @@
<script>
require(["gitbook"], function(gitbook) {
var config = {"highlight":{},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2}};
var config = {"katex":{},"highlight":{},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2}};
gitbook.start(config);
});
</script>

View File

@@ -21,6 +21,10 @@
<link rel="stylesheet" href="../gitbook/style.css">
<link rel="stylesheet" href="../gitbook/plugins/gitbook-plugin-katex/katex.min.css">
<link rel="stylesheet" href="../gitbook/plugins/gitbook-plugin-highlight/website.css">
@@ -44,7 +48,7 @@
<body>
<div class="book" data-level="11.2" data-chapter-title="測試函數" data-filepath="ch11/ch11-02.md" data-basepath=".." data-revision="Fri Dec 25 2015 12:32:44 GMT+0800 (中国标准时间)">
<div class="book" data-level="11.2" data-chapter-title="測試函數" data-filepath="ch11/ch11-02.md" data-basepath=".." data-revision="Mon Dec 28 2015 16:03:52 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -238,7 +242,7 @@
<b>1.5.</b>
取URL
取URL
</a>
@@ -253,7 +257,7 @@
<b>1.6.</b>
併發取多個URL
併發取多個URL
</a>
@@ -802,7 +806,7 @@
<b>5.10.</b>
Recover捕異常
Recover捕異常
</a>
@@ -1315,7 +1319,7 @@
<b>8.9.</b>
併發的退
併發的退
</a>
@@ -1834,7 +1838,7 @@
<b>12.7.</b>
取結構體字段標識
取結構體字段標識
</a>
@@ -2046,7 +2050,7 @@
<span class="hljs-keyword">return</span> <span class="hljs-constant">true</span>
}
</code></pre>
<p>&#x5728;&#x76F8;&#x540C;&#x7684;&#x76EE;&#x9332;&#x4E0B;, word_test.go &#x6587;&#x4EF6;&#x5305;&#x542B;&#x4E86; TestPalindrome &#x548C; TestNonPalindrome &#x5169;&#x500B;&#x6E2C;&#x8A66;&#x51FD;&#x6578;. &#x6BCF;&#x4E00;&#x500B;&#x90FD;&#x662F;&#x6E2C;&#x8A66; IsPalindrome &#x662F;&#x5426;&#x7D66;&#x9F63;&#x6B63;&#x78BA;&#x7684;&#x7D50;&#x679C;, &#x4F75;&#x4F7F;&#x7528; t.Error &#x5831;&#x544A;&#x5931;&#x6557;:</p>
<p>&#x5728;&#x76F8;&#x540C;&#x7684;&#x76EE;&#x9332;&#x4E0B;, word_test.go &#x6587;&#x4EF6;&#x5305;&#x542B;&#x4E86; TestPalindrome &#x548C; TestNonPalindrome &#x5169;&#x500B;&#x6E2C;&#x8A66;&#x51FD;&#x6578;. &#x6BCF;&#x4E00;&#x500B;&#x90FD;&#x662F;&#x6E2C;&#x8A66; IsPalindrome &#x662F;&#x5426;&#x7D66;&#x51FA;&#x6B63;&#x78BA;&#x7684;&#x7D50;&#x679C;, &#x4F75;&#x4F7F;&#x7528; t.Error &#x5831;&#x544A;&#x5931;&#x6557;:</p>
<pre><code class="lang-Go"><span class="hljs-keyword">package</span> word
<span class="hljs-keyword">import</span> <span class="hljs-string">&quot;testing&quot;</span>
@@ -2070,7 +2074,7 @@
<pre><code>$ cd $GOPATH/src/gopl.io/ch11/word1
$ go test
ok gopl.io/ch11/word1 0.008s
</code></pre><p>&#x9084;&#x6BD4;&#x8F03;&#x6EFF;&#x610F;, &#x6211;&#x5011;&#x904B;&#x884C;&#x4E86;&#x9019;&#x500B;&#x7A0B;&#x5E8F;, &#x4E0D;&#x904E;&#x6C92;&#x6709;&#x63D0;&#x524D;&#x9000;&#x9F63;&#x662F;&#x56E0;&#x7232;&#x9084;&#x6C92;&#x6709;&#x9047;&#x5230;BUG&#x5831;&#x544A;. &#x4E00;&#x500B;&#x6CD5;&#x570B;&#x540D;&#x7232; Noelle Eve Elleon &#x7684;&#x7528;&#x6236;&#x62B1;&#x6028; IsPalindrome &#x51FD;&#x6578;&#x4E0D;&#x80FD;&#x8B58;&#x522B; &#x2018;&#x2018;&#xE9;t&#xE9;.&#x2019;&#x2019;. &#x53E6;&#x5916;&#x4E00;&#x500B;&#x4F86;&#x81EA;&#x7F8E;&#x570B;&#x4E2D;&#x90E8;&#x7528;&#x6236;&#x7684;&#x62B1;&#x6028;&#x662F;&#x4E0D;&#x80FD;&#x8B58;&#x522B; &#x2018;&#x2018;A man, a plan, a canal: Panama.&#x2019;&#x2019;. &#x57F7;&#x884C;&#x7279;&#x6B8A;&#x548C;&#x5C0F;&#x7684;BUG&#x5831;&#x544A;&#x7232;&#x6211;&#x5011;&#x63D0;&#x4F9B;&#x4E86;&#x65B0;&#x7684;&#x66F4;&#x81EA;&#x7136;&#x7684;&#x6E2C;&#x8A66;&#x7528;&#x4F8B;.</p>
</code></pre><p>&#x9084;&#x6BD4;&#x8F03;&#x6EFF;&#x610F;, &#x6211;&#x5011;&#x904B;&#x884C;&#x4E86;&#x9019;&#x500B;&#x7A0B;&#x5E8F;, &#x4E0D;&#x904E;&#x6C92;&#x6709;&#x63D0;&#x524D;&#x9000;&#x51FA;&#x662F;&#x56E0;&#x7232;&#x9084;&#x6C92;&#x6709;&#x9047;&#x5230;BUG&#x5831;&#x544A;. &#x4E00;&#x500B;&#x6CD5;&#x56FD;&#x540D;&#x7232; Noelle Eve Elleon &#x7684;&#x7528;&#x6236;&#x62B1;&#x6028; IsPalindrome &#x51FD;&#x6578;&#x4E0D;&#x80FD;&#x8B58;&#x522B; &#x2018;&#x2018;&#xE9;t&#xE9;.&#x2019;&#x2019;. &#x53E6;&#x5916;&#x4E00;&#x500B;&#x4F86;&#x81EA;&#x7F8E;&#x56FD;&#x4E2D;&#x90E8;&#x7528;&#x6236;&#x7684;&#x62B1;&#x6028;&#x662F;&#x4E0D;&#x80FD;&#x8B58;&#x522B; &#x2018;&#x2018;A man, a plan, a canal: Panama.&#x2019;&#x2019;. &#x57F7;&#x884C;&#x7279;&#x6B8A;&#x548C;&#x5C0F;&#x7684;BUG&#x5831;&#x544A;&#x7232;&#x6211;&#x5011;&#x63D0;&#x4F9B;&#x4E86;&#x65B0;&#x7684;&#x66F4;&#x81EA;&#x7136;&#x7684;&#x6E2C;&#x8A66;&#x7528;&#x4F8B;.</p>
<pre><code class="lang-Go"><span class="hljs-keyword">func</span> TestFrenchPalindrome(t *testing.T) {
<span class="hljs-keyword">if</span> !IsPalindrome(<span class="hljs-string">&quot;&#xE9;t&#xE9;&quot;</span>) {
t.Error(<span class="hljs-string">`IsPalindrome(&quot;&#xE9;t&#xE9;&quot;) = false`</span>)
@@ -2093,7 +2097,7 @@ ok gopl.io/ch11/word1 0.008s
word_test.go:35: IsPalindrome(&quot;A man, a plan, a canal: Panama&quot;) = false
FAIL
FAIL gopl.io/ch11/word1 0.014s
</code></pre><p>&#x5148;&#x7DE8;&#x5BEB;&#x6E2C;&#x8A66;&#x7528;&#x4F8B;&#x4F75;&#x89C0;&#x5BDF;&#x5230;&#x6E2C;&#x8A66;&#x7528;&#x4F8B;&#x89F8;&#x767C;&#x4E86;&#x548C;&#x7528;&#x6236;&#x5831;&#x544A;&#x7684;&#x932F;&#x8AA4;&#x76F8;&#x540C;&#x7684;&#x63CF;&#x8FF0;&#x662F;&#x4E00;&#x500B;&#x597D;&#x7684;&#x6E2C;&#x8A66;&#x7FD2;&#x6163;. &#x96BB;&#x6709;&#x9019;&#x6A23;, &#x6211;&#x5011;&#x7E94;&#x80FD;&#x5B9A;&#x4F4D;&#x6211;&#x5011;&#x8981;&#x771E;&#x6B63;&#x89E3;&#x6C7A;&#x7684;&#x554F;&#x984C;.</p>
</code></pre><p>&#x5148;&#x7DE8;&#x5BEB;&#x6E2C;&#x8A66;&#x7528;&#x4F8B;&#x4F75;&#x89C0;&#x5BDF;&#x5230;&#x6E2C;&#x8A66;&#x7528;&#x4F8B;&#x89F8;&#x767C;&#x4E86;&#x548C;&#x7528;&#x6236;&#x5831;&#x544A;&#x7684;&#x932F;&#x8AA4;&#x76F8;&#x540C;&#x7684;&#x63CF;&#x8FF0;&#x662F;&#x4E00;&#x500B;&#x597D;&#x7684;&#x6E2C;&#x8A66;&#x7FD2;&#x6163;. &#x96BB;&#x6709;&#x9019;&#x6A23;, &#x6211;&#x5011;&#x624D;&#x80FD;&#x5B9A;&#x4F4D;&#x6211;&#x5011;&#x8981;&#x771E;&#x6B63;&#x89E3;&#x6C7A;&#x7684;&#x554F;&#x984C;.</p>
<p>&#x5148;&#x5BEB;&#x6E2C;&#x8A66;&#x7528;&#x4F8B;&#x7684;&#x53E6;&#x597D;&#x8655;&#x662F;, &#x904B;&#x884C;&#x6E2C;&#x8A66;&#x901A;&#x5E38;&#x6703;&#x6BD4;&#x624B;&#x5DE5;&#x63CF;&#x8FF0;&#x5831;&#x544A;&#x7684;&#x8655;&#x7406;&#x66F4;&#x5FEB;, &#x9019;&#x8B93;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x9032;&#x884C;&#x5FEB;&#x901F;&#x5730;&#x8FED;&#x4EE3;. &#x5982;&#x679C;&#x6E2C;&#x8A66;&#x96C6;&#x6709;&#x5F88;&#x591A;&#x904B;&#x884C;&#x7DE9;&#x6162;&#x7684;&#x6E2C;&#x8A66;, &#x6211;&#x5011;&#x53EF;&#x4EE5;&#x901A;&#x904E;&#x96BB;&#x9078;&#x64C7;&#x904B;&#x884C;&#x67D0;&#x4E9B;&#x7279;&#x5B9A;&#x7684;&#x6E2C;&#x8A66;&#x4F86;&#x52A0;&#x5FEB;&#x6E2C;&#x8A66;&#x901F;&#x5EA6;.</p>
<p>&#x53C3;&#x6578; <code>-v</code> &#x7528;&#x65BC;&#x6253;&#x5370;&#x6BCF;&#x500B;&#x6E2C;&#x8A66;&#x51FD;&#x6578;&#x7684;&#x540D;&#x5B57;&#x548C;&#x904B;&#x884C;&#x6642;&#x9593;:</p>
<pre><code>$ go test -v
@@ -2110,7 +2114,7 @@ FAIL gopl.io/ch11/word1 0.014s
FAIL
exit status 1
FAIL gopl.io/ch11/word1 0.017s
</code></pre><p>&#x53C3;&#x6578; <code>-run</code> &#x662F;&#x4E00;&#x500B;&#x6B63;&#x5247;&#x8868;&#x9054;&#x5F0F;, &#x96BB;&#x6709;&#x6E2C;&#x8A66;&#x51FD;&#x6578;&#x540D;&#x88AB;&#x5B83;&#x6B63;&#x78BA;&#x5339;&#x914D;&#x7684;&#x6E2C;&#x8A66;&#x51FD;&#x6578;&#x7E94;&#x6703;&#x88AB; <code>go test</code> &#x904B;&#x884C;:</p>
</code></pre><p>&#x53C3;&#x6578; <code>-run</code> &#x662F;&#x4E00;&#x500B;&#x6B63;&#x5247;&#x8868;&#x9054;&#x5F0F;, &#x96BB;&#x6709;&#x6E2C;&#x8A66;&#x51FD;&#x6578;&#x540D;&#x88AB;&#x5B83;&#x6B63;&#x78BA;&#x5339;&#x914D;&#x7684;&#x6E2C;&#x8A66;&#x51FD;&#x6578;&#x624D;&#x6703;&#x88AB; <code>go test</code> &#x904B;&#x884C;:</p>
<pre><code>$ go test -v -run=&quot;French|Canal&quot;
=== RUN TestFrenchPalindrome
--- FAIL: TestFrenchPalindrome (0.00s)
@@ -2178,14 +2182,14 @@ FAIL gopl.io/ch11/word1 0.014s
<pre><code>$ go test gopl.io/ch11/word2
ok gopl.io/ch11/word2 0.015s
</code></pre><p>&#x9019;&#x7A2E;&#x8868;&#x683C;&#x9A45;&#x52D5;&#x7684;&#x6E2C;&#x8A66;&#x5728;Go&#x4E2D;&#x5F88;&#x5E38;&#x898B;&#x7684;. &#x6211;&#x5011;&#x5F88;&#x5BB9;&#x6613;&#x60F3;&#x8868;&#x683C;&#x6DFB;&#x52A0;&#x65B0;&#x7684;&#x6E2C;&#x8A66;&#x6578;&#x64DA;, &#x4F75;&#x4E14;&#x5F8C;&#x9762;&#x7684;&#x6E2C;&#x8A66;&#x908F;&#x8F2F;&#x4E5F;&#x6C92;&#x6709;&#x5197;&#x9918;, &#x9019;&#x6A23;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x66F4;&#x597D;&#x5730;&#x5B8C;&#x5584;&#x932F;&#x8AA4;&#x4FE1;&#x606F;.</p>
<p>&#x5931;&#x6557;&#x7684;&#x6E2C;&#x8A66;&#x7684;&#x8F38;&#x9F63;&#x4F75;&#x4E0D;&#x5305;&#x62EC;&#x8ABF;&#x7528; t.Errorf &#x6642;&#x523B;&#x7684;&#x5806;&#x68E7;&#x8ABF;&#x7528;&#x4FE1;&#x606F;. &#x4E0D;&#x50CF;&#x5176;&#x4ED6;&#x8A9E;&#x8A00;&#x6216;&#x6E2C;&#x8A66;&#x6846;&#x67B6;&#x7684; assert &#x65B7;&#x8A00;, t.Errorf &#x8ABF;&#x7528;&#x4E5F;&#x6C92;&#x6709;&#x5F15;&#x8D77; panic &#x6216;&#x505C;&#x6B62;&#x6E2C;&#x8A66;&#x7684;&#x57F7;&#x884C;. &#x537D;&#x4F7F;&#x8868;&#x683C;&#x4E2D;&#x524D;&#x9762;&#x7684;&#x6578;&#x64DA;&#x5C0E;&#x81F4;&#x4E86;&#x6E2C;&#x8A66;&#x7684;&#x5931;&#x6557;, &#x8868;&#x683C;&#x5F8C;&#x9762;&#x7684;&#x6E2C;&#x8A66;&#x6578;&#x64DA;&#x4F9D;&#x7136;&#x6703;&#x904B;&#x884C;&#x6E2C;&#x8A66;, &#x56E0;&#x6B64;&#x5728;&#x4E00;&#x500B;&#x6E2C;&#x8A66;&#x4E2D;&#x6211;&#x5011;&#x53EF;&#x80FD;&#x4E86;&#x89E3;&#x591A;&#x500B;&#x5931;&#x6557;&#x7684;&#x4FE1;&#x606F;.</p>
<p>&#x5931;&#x6557;&#x7684;&#x6E2C;&#x8A66;&#x7684;&#x8F38;&#x51FA;&#x4F75;&#x4E0D;&#x5305;&#x62EC;&#x8ABF;&#x7528; t.Errorf &#x6642;&#x523B;&#x7684;&#x5806;&#x68E7;&#x8ABF;&#x7528;&#x4FE1;&#x606F;. &#x4E0D;&#x50CF;&#x5176;&#x4ED6;&#x8A9E;&#x8A00;&#x6216;&#x6E2C;&#x8A66;&#x6846;&#x67B6;&#x7684; assert &#x65B7;&#x8A00;, t.Errorf &#x8ABF;&#x7528;&#x4E5F;&#x6C92;&#x6709;&#x5F15;&#x8D77; panic &#x6216;&#x505C;&#x6B62;&#x6E2C;&#x8A66;&#x7684;&#x57F7;&#x884C;. &#x537D;&#x4F7F;&#x8868;&#x683C;&#x4E2D;&#x524D;&#x9762;&#x7684;&#x6578;&#x64DA;&#x5C0E;&#x81F4;&#x4E86;&#x6E2C;&#x8A66;&#x7684;&#x5931;&#x6557;, &#x8868;&#x683C;&#x5F8C;&#x9762;&#x7684;&#x6E2C;&#x8A66;&#x6578;&#x64DA;&#x4F9D;&#x7136;&#x6703;&#x904B;&#x884C;&#x6E2C;&#x8A66;, &#x56E0;&#x6B64;&#x5728;&#x4E00;&#x500B;&#x6E2C;&#x8A66;&#x4E2D;&#x6211;&#x5011;&#x53EF;&#x80FD;&#x4E86;&#x89E3;&#x591A;&#x500B;&#x5931;&#x6557;&#x7684;&#x4FE1;&#x606F;.</p>
<p>&#x5982;&#x679C;&#x6211;&#x5011;&#x771E;&#x7684;&#x9700;&#x8981;&#x505C;&#x6B62;&#x6E2C;&#x8A66;, &#x6216;&#x8A31;&#x662F;&#x56E0;&#x7232;&#x521D;&#x59CB;&#x5316;&#x5931;&#x6557;&#x6216;&#x53EF;&#x80FD;&#x662F;&#x65E9;&#x5148;&#x7684;&#x932F;&#x8AA4;&#x5C0E;&#x81F4;&#x4E86;&#x5F8C;&#x7E8C;&#x932F;&#x8AA4;&#x7B49;&#x539F;&#x56E0;, &#x6211;&#x5011;&#x53EF;&#x4EE5;&#x4F7F;&#x7528; t.Fatal &#x6216; t.Fatalf &#x505C;&#x6B62;&#x6E2C;&#x8A66;. &#x5B83;&#x5011;&#x5FC5;&#x9B1A;&#x5728;&#x548C;&#x6E2C;&#x8A66;&#x51FD;&#x6578;&#x540C;&#x4E00;&#x500B; goroutine &#x5167;&#x8ABF;&#x7528;.</p>
<p>&#x6E2C;&#x8A66;&#x5931;&#x6557;&#x7684;&#x4FE1;&#x606F;&#x4E00;&#x822C;&#x7684;&#x5F62;&#x5F0F;&#x662F; &quot;f(x) = y, want z&quot;, f(x) &#x89E3;&#x91CB;&#x4E86;&#x5931;&#x6557;&#x7684;&#x64CD;&#x4F5C;&#x548C;&#x5C0D;&#x61C9;&#x7684;&#x8F38;&#x9F63;, y &#x662F;&#x5BE6;&#x969B;&#x7684;&#x904B;&#x884C;&#x7D50;&#x679C;, z &#x662F;&#x671F;&#x671B;&#x7684;&#x6B63;&#x78BA;&#x7684;&#x7D50;&#x679C;. &#x5C31;&#x50CF;&#x524D;&#x9762;&#x6AA2;&#x67FB;&#x8FF4;&#x6587;&#x5B57;&#x7B26;&#x4E32;&#x7684;&#x4F8B;&#x5B50;, &#x5BE6;&#x969B;&#x7684;&#x51FD;&#x6578;&#x7528;&#x65BC; f(x) &#x90E8;&#x5206;. &#x5982;&#x679C;&#x986F;&#x793A; x &#x662F;&#x8868;&#x683C;&#x9A45;&#x52D5;&#x578B;&#x6E2C;&#x8A66;&#x4E2D;&#x6BD4;&#x8F03;&#x91CD;&#x8981;&#x7684;&#x90E8;&#x5206;, &#x56E0;&#x7232;&#x540C;&#x4E00;&#x500B;&#x65B7;&#x8A00;&#x53EF;&#x80FD;&#x5C0D;&#x61C9;&#x4E0D;&#x540C;&#x7684;&#x8868;&#x683C;&#x9805;&#x57F7;&#x884C;&#x591A;&#x6B21;. &#x8981;&#x907F;&#x514D;&#x7121;&#x7528;&#x548C;&#x5197;&#x9918;&#x7684;&#x4FE1;&#x606F;. &#x5728;&#x6E2C;&#x8A66;&#x985E;&#x4F3C; IsPalindrome &#x8FD4;&#x8FF4;&#x5E03;&#x723E;&#x985E;&#x578B;&#x7684;&#x51FD;&#x6578;&#x6642;, &#x53EF;&#x4EE5;&#x5FFD;&#x7565;&#x4F75;&#x6C92;&#x6709;&#x984D;&#x5916;&#x4FE1;&#x606F;&#x7684; z &#x90E8;&#x5206;. &#x5982;&#x679C; x, y &#x6216; z &#x662F; y &#x7684;&#x9577;&#x5EA6;, &#x8F38;&#x9F63;&#x4E00;&#x500B;&#x76F8;&#x95DC;&#x90E8;&#x5206;&#x7684;&#x7C21;&#x660E;&#x7E3D;&#x7D50;&#x537D;&#x53EF;. &#x6E2C;&#x8A66;&#x7684;&#x4F5C;&#x8005;&#x61C9;&#x8A72;&#x8981;&#x52AA;&#x529B;&#x5E6B;&#x52A9;&#x7A0B;&#x5E8F;&#x54E1;&#x8A3A;&#x65B7;&#x5931;&#x6557;&#x7684;&#x6E2C;&#x8A66;.</p>
<p>&#x6E2C;&#x8A66;&#x5931;&#x6557;&#x7684;&#x4FE1;&#x606F;&#x4E00;&#x822C;&#x7684;&#x5F62;&#x5F0F;&#x662F; &quot;f(x) = y, want z&quot;, f(x) &#x89E3;&#x91CB;&#x4E86;&#x5931;&#x6557;&#x7684;&#x64CD;&#x4F5C;&#x548C;&#x5C0D;&#x61C9;&#x7684;&#x8F38;&#x51FA;, y &#x662F;&#x5BE6;&#x969B;&#x7684;&#x904B;&#x884C;&#x7D50;&#x679C;, z &#x662F;&#x671F;&#x671B;&#x7684;&#x6B63;&#x78BA;&#x7684;&#x7D50;&#x679C;. &#x5C31;&#x50CF;&#x524D;&#x9762;&#x6AA2;&#x67FB;&#x8FF4;&#x6587;&#x5B57;&#x7B26;&#x4E32;&#x7684;&#x4F8B;&#x5B50;, &#x5BE6;&#x969B;&#x7684;&#x51FD;&#x6578;&#x7528;&#x65BC; f(x) &#x90E8;&#x5206;. &#x5982;&#x679C;&#x986F;&#x793A; x &#x662F;&#x8868;&#x683C;&#x9A45;&#x52D5;&#x578B;&#x6E2C;&#x8A66;&#x4E2D;&#x6BD4;&#x8F03;&#x91CD;&#x8981;&#x7684;&#x90E8;&#x5206;, &#x56E0;&#x7232;&#x540C;&#x4E00;&#x500B;&#x65B7;&#x8A00;&#x53EF;&#x80FD;&#x5C0D;&#x61C9;&#x4E0D;&#x540C;&#x7684;&#x8868;&#x683C;&#x9805;&#x57F7;&#x884C;&#x591A;&#x6B21;. &#x8981;&#x907F;&#x514D;&#x7121;&#x7528;&#x548C;&#x5197;&#x9918;&#x7684;&#x4FE1;&#x606F;. &#x5728;&#x6E2C;&#x8A66;&#x985E;&#x4F3C; IsPalindrome &#x8FD4;&#x8FF4;&#x5E03;&#x723E;&#x985E;&#x578B;&#x7684;&#x51FD;&#x6578;&#x6642;, &#x53EF;&#x4EE5;&#x5FFD;&#x7565;&#x4F75;&#x6C92;&#x6709;&#x984D;&#x5916;&#x4FE1;&#x606F;&#x7684; z &#x90E8;&#x5206;. &#x5982;&#x679C; x, y &#x6216; z &#x662F; y &#x7684;&#x9577;&#x5EA6;, &#x8F38;&#x51FA;&#x4E00;&#x500B;&#x76F8;&#x95DC;&#x90E8;&#x5206;&#x7684;&#x7C21;&#x660E;&#x7E3D;&#x7D50;&#x537D;&#x53EF;. &#x6E2C;&#x8A66;&#x7684;&#x4F5C;&#x8005;&#x61C9;&#x8A72;&#x8981;&#x52AA;&#x529B;&#x5E6B;&#x52A9;&#x7A0B;&#x5E8F;&#x54E1;&#x8A3A;&#x65B7;&#x5931;&#x6557;&#x7684;&#x6E2C;&#x8A66;.</p>
<p><strong>&#x7DF4;&#x7FD2; 11.1:</strong> &#x7232; 4.3&#x7BC0; &#x4E2D;&#x7684; charcount &#x7A0B;&#x5E8F;&#x7DE8;&#x5BEB;&#x6E2C;&#x8A66;.</p>
<p><strong>&#x7DF4;&#x7FD2; 11.2:</strong> &#x7232; (&#xA7;6.5)&#x7684; IntSet &#x7DE8;&#x5BEB;&#x4E00;&#x7D44;&#x6E2C;&#x8A66;, &#x7528;&#x65BC;&#x6AA2;&#x67FB;&#x6BCF;&#x500B;&#x64CD;&#x4F5C;&#x5F8C;&#x7684;&#x884C;&#x7232;&#x548C;&#x57FA;&#x65BC;&#x5167;&#x7F6E; map &#x7684;&#x96C6;&#x5408;&#x7B49;&#x50F9; , &#x5F8C;&#x9762; &#x7DF4;&#x7FD2;11.7 &#x5C07;&#x6703;&#x7528;&#x5230;.</p>
<h3 id="1121-&#x96A8;&#x6A5F;&#x6E2C;&#x8A66;">11.2.1. &#x96A8;&#x6A5F;&#x6E2C;&#x8A66;</h3>
<p>&#x8868;&#x683C;&#x9A45;&#x52D5;&#x7684;&#x6E2C;&#x8A66;&#x4FBF;&#x65BC;&#x69CB;&#x9020;&#x57FA;&#x65BC;&#x7CBE;&#x5FC3;&#x6311;&#x9078;&#x7684;&#x6E2C;&#x8A66;&#x6578;&#x64DA;&#x7684;&#x6E2C;&#x8A66;&#x7528;&#x4F8B;. &#x53E6;&#x4E00;&#x7A2E;&#x6E2C;&#x8A66;&#x601D;&#x8DEF;&#x662F;&#x96A8;&#x6A5F;&#x6E2C;&#x8A66;, &#x4E5F;&#x5C31;&#x662F;&#x901A;&#x904E;&#x69CB;&#x9020;&#x66F4;&#x5EE3;&#x6CDB;&#x7684;&#x96A8;&#x6A5F;&#x8F38;&#x5165;&#x4F86;&#x6E2C;&#x8A66;&#x63A2;&#x7D22;&#x51FD;&#x6578;&#x7684;&#x884C;&#x7232;.</p>
<p>&#x90A3;&#x9EBD;&#x5C0D;&#x65BC;&#x4E00;&#x500B;&#x96A8;&#x6A5F;&#x7684;&#x8F38;&#x5165;, &#x6211;&#x5011;&#x5982;&#x4F55;&#x80FD;&#x77E5;&#x9053;&#x5E0C;&#x671B;&#x7684;&#x8F38;&#x9F63;&#x7D50;&#x679C;&#x5462;? &#x9019;&#x91CC;&#x6709;&#x5169;&#x7A2E;&#x7B56;&#x7565;. &#x7B2C;&#x4E00;&#x500B;&#x662F;&#x7DE8;&#x5BEB;&#x53E6;&#x4E00;&#x500B;&#x51FD;&#x6578;, &#x4F7F;&#x7528;&#x7C21;&#x55AE;&#x548C;&#x6E05;&#x6670;&#x7684;&#x7B97;&#x6CD5;, &#x96D6;&#x7136;&#x6548;&#x7387;&#x8F03;&#x4F4E;&#x4F46;&#x662F;&#x884C;&#x7232;&#x548C;&#x8981;&#x6E2C;&#x8A66;&#x7684;&#x51FD;&#x6578;&#x4E00;&#x81F4;, &#x7136;&#x5F8C;&#x91DD;&#x5C0D;&#x76F8;&#x540C;&#x7684;&#x96A8;&#x6A5F;&#x8F38;&#x5165;&#x6AA2;&#x67FB;&#x5169;&#x8005;&#x7684;&#x8F38;&#x9F63;&#x7D50;&#x679C;. &#x7B2C;&#x4E8C;&#x7A2E;&#x662F;&#x751F;&#x6210;&#x7684;&#x96A8;&#x6A5F;&#x8F38;&#x5165;&#x7684;&#x6578;&#x64DA;&#x9075;&#x5FAA;&#x7279;&#x5B9A;&#x7684;&#x6A21;&#x5F0F;, &#x9019;&#x6A23;&#x6211;&#x5011;&#x5C31;&#x53EF;&#x4EE5;&#x77E5;&#x9053;&#x671F;&#x671B;&#x7684;&#x8F38;&#x9F63;&#x7684;&#x6A21;&#x5F0F;.</p>
<p>&#x90A3;&#x9EBD;&#x5C0D;&#x65BC;&#x4E00;&#x500B;&#x96A8;&#x6A5F;&#x7684;&#x8F38;&#x5165;, &#x6211;&#x5011;&#x5982;&#x4F55;&#x80FD;&#x77E5;&#x9053;&#x5E0C;&#x671B;&#x7684;&#x8F38;&#x51FA;&#x7D50;&#x679C;&#x5462;? &#x9019;&#x91CC;&#x6709;&#x5169;&#x7A2E;&#x7B56;&#x7565;. &#x7B2C;&#x4E00;&#x500B;&#x662F;&#x7DE8;&#x5BEB;&#x53E6;&#x4E00;&#x500B;&#x51FD;&#x6578;, &#x4F7F;&#x7528;&#x7C21;&#x55AE;&#x548C;&#x6E05;&#x6670;&#x7684;&#x7B97;&#x6CD5;, &#x96D6;&#x7136;&#x6548;&#x7387;&#x8F03;&#x4F4E;&#x4F46;&#x662F;&#x884C;&#x7232;&#x548C;&#x8981;&#x6E2C;&#x8A66;&#x7684;&#x51FD;&#x6578;&#x4E00;&#x81F4;, &#x7136;&#x5F8C;&#x91DD;&#x5C0D;&#x76F8;&#x540C;&#x7684;&#x96A8;&#x6A5F;&#x8F38;&#x5165;&#x6AA2;&#x67FB;&#x5169;&#x8005;&#x7684;&#x8F38;&#x51FA;&#x7D50;&#x679C;. &#x7B2C;&#x4E8C;&#x7A2E;&#x662F;&#x751F;&#x6210;&#x7684;&#x96A8;&#x6A5F;&#x8F38;&#x5165;&#x7684;&#x6578;&#x64DA;&#x9075;&#x5FAA;&#x7279;&#x5B9A;&#x7684;&#x6A21;&#x5F0F;, &#x9019;&#x6A23;&#x6211;&#x5011;&#x5C31;&#x53EF;&#x4EE5;&#x77E5;&#x9053;&#x671F;&#x671B;&#x7684;&#x8F38;&#x51FA;&#x7684;&#x6A21;&#x5F0F;.</p>
<p>&#x4E0B;&#x9762;&#x7684;&#x4F8B;&#x5B50;&#x4F7F;&#x7528;&#x7684;&#x662F;&#x7B2C;&#x4E8C;&#x7A2E;&#x65B9;&#x6CD5;: randomPalindrome &#x51FD;&#x6578;&#x7528;&#x65BC;&#x96A8;&#x6A5F;&#x751F;&#x6210;&#x8FF4;&#x6587;&#x5B57;&#x7B26;&#x4E32;.</p>
<pre><code class="lang-Go"><span class="hljs-keyword">import</span> <span class="hljs-string">&quot;math/rand&quot;</span>
@@ -2217,7 +2221,7 @@ ok gopl.io/ch11/word2 0.015s
}
}
</code></pre>
<p>&#x96D6;&#x7136;&#x96A8;&#x6A5F;&#x6E2C;&#x8A66;&#x6709;&#x4E0D;&#x78BA;&#x5B9A;&#x56E0;&#x7D20;, &#x4F46;&#x662F;&#x5B83;&#x4E5F;&#x662F;&#x81F3;&#x95DC;&#x91CD;&#x8981;&#x7684;, &#x6211;&#x5011;&#x53EF;&#x4EE5;&#x5F9E;&#x5931;&#x6557;&#x6E2C;&#x8A66;&#x7684;&#x65E5;&#x8A8C;&#x7A6B;&#x53D6;&#x8DB3;&#x5920;&#x7684;&#x4FE1;&#x606F;. &#x5728;&#x6211;&#x5011;&#x7684;&#x4F8B;&#x5B50;&#x4E2D;, &#x8F38;&#x5165; IsPalindrome &#x7684; p &#x53C3;&#x6578;&#x5C07;&#x544A;&#x8A34;&#x6211;&#x5011;&#x771E;&#x5BE6;&#x7684;&#x6578;&#x64DA;, &#x4F46;&#x662F;&#x5C0D;&#x65BC;&#x51FD;&#x6578;&#x5C07;&#x63A5;&#x53D7;&#x66F4;&#x8907;&#x96DC;&#x7684;&#x8F38;&#x5165;, &#x4E0D;&#x9700;&#x8981;&#x4FDD;&#x5B58;&#x6240;&#x6709;&#x7684;&#x8F38;&#x5165;, &#x96BB;&#x8981;&#x65E5;&#x8A8C;&#x4E2D;&#x7C21;&#x55AE;&#x5730;&#x8A18;&#x9332;&#x96A8;&#x6A5F;&#x6578;&#x7A2E;&#x5B50;&#x537D;&#x53EF;(&#x50CF;&#x4E0A;&#x9762;&#x7684;&#x65B9;&#x5F0F;). &#x6709;&#x4E86;&#x9019;&#x4E9B;&#x96A8;&#x6A5F;&#x6578;&#x521D;&#x59CB;&#x5316;&#x7A2E;&#x5B50;, &#x6211;&#x5011;&#x53EF;&#x4EE5;&#x5F88;&#x5BB9;&#x6613;&#x8129;&#x6539;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;&#x4EE5;&#x91CD;&#x73FE;&#x5931;&#x6557;&#x7684;&#x96A8;&#x6A5F;&#x6E2C;&#x8A66;.</p>
<p>&#x96D6;&#x7136;&#x96A8;&#x6A5F;&#x6E2C;&#x8A66;&#x6709;&#x4E0D;&#x78BA;&#x5B9A;&#x56E0;&#x7D20;, &#x4F46;&#x662F;&#x5B83;&#x4E5F;&#x662F;&#x81F3;&#x95DC;&#x91CD;&#x8981;&#x7684;, &#x6211;&#x5011;&#x53EF;&#x4EE5;&#x5F9E;&#x5931;&#x6557;&#x6E2C;&#x8A66;&#x7684;&#x65E5;&#x8A8C;&#x7372;&#x53D6;&#x8DB3;&#x5920;&#x7684;&#x4FE1;&#x606F;. &#x5728;&#x6211;&#x5011;&#x7684;&#x4F8B;&#x5B50;&#x4E2D;, &#x8F38;&#x5165; IsPalindrome &#x7684; p &#x53C3;&#x6578;&#x5C07;&#x544A;&#x8A34;&#x6211;&#x5011;&#x771E;&#x5BE6;&#x7684;&#x6578;&#x64DA;, &#x4F46;&#x662F;&#x5C0D;&#x65BC;&#x51FD;&#x6578;&#x5C07;&#x63A5;&#x53D7;&#x66F4;&#x8907;&#x96DC;&#x7684;&#x8F38;&#x5165;, &#x4E0D;&#x9700;&#x8981;&#x4FDD;&#x5B58;&#x6240;&#x6709;&#x7684;&#x8F38;&#x5165;, &#x96BB;&#x8981;&#x65E5;&#x8A8C;&#x4E2D;&#x7C21;&#x55AE;&#x5730;&#x8A18;&#x9332;&#x96A8;&#x6A5F;&#x6578;&#x7A2E;&#x5B50;&#x537D;&#x53EF;(&#x50CF;&#x4E0A;&#x9762;&#x7684;&#x65B9;&#x5F0F;). &#x6709;&#x4E86;&#x9019;&#x4E9B;&#x96A8;&#x6A5F;&#x6578;&#x521D;&#x59CB;&#x5316;&#x7A2E;&#x5B50;, &#x6211;&#x5011;&#x53EF;&#x4EE5;&#x5F88;&#x5BB9;&#x6613;&#x8129;&#x6539;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;&#x4EE5;&#x91CD;&#x73FE;&#x5931;&#x6557;&#x7684;&#x96A8;&#x6A5F;&#x6E2C;&#x8A66;.</p>
<p>&#x901A;&#x904E;&#x4F7F;&#x7528;&#x7576;&#x524D;&#x6642;&#x9593;&#x4F5C;&#x7232;&#x96A8;&#x6A5F;&#x7A2E;&#x5B50;, &#x5728;&#x6574;&#x500B;&#x904E;&#x7A0B;&#x4E2D;&#x7684;&#x6BCF;&#x6B21;&#x904B;&#x884C;&#x6E2C;&#x8A66;&#x547D;&#x4EE4;&#x6642;&#x90FD;&#x5C07;&#x63A2;&#x7D22;&#x65B0;&#x7684;&#x96A8;&#x6A5F;&#x6578;&#x64DA;. &#x5982;&#x679C;&#x4F60;&#x4F7F;&#x7528;&#x7684;&#x662F;&#x5B9A;&#x671F;&#x904B;&#x884C;&#x7684;&#x81EA;&#x52D5;&#x5316;&#x6E2C;&#x8A66;&#x96C6;&#x6210;&#x7E6B;&#x7D71;, &#x96A8;&#x6A5F;&#x6E2C;&#x8A66;&#x5C07;&#x7279;&#x522B;&#x6709;&#x50F9;&#x503C;.</p>
<p><strong>&#x7DF4;&#x7FD2; 11.3:</strong> TestRandomPalindromes &#x96BB;&#x6E2C;&#x8A66;&#x4E86;&#x8FF4;&#x6587;&#x5B57;&#x7B26;&#x4E32;. &#x7DE8;&#x5BEB;&#x65B0;&#x7684;&#x96A8;&#x6A5F;&#x6E2C;&#x8A66;&#x751F;&#x6210;&#x5668;, &#x7528;&#x65BC;&#x6E2C;&#x8A66;&#x96A8;&#x6A5F;&#x751F;&#x6210;&#x7684;&#x975E;&#x8FF4;&#x6587;&#x5B57;&#x7B26;&#x4E32;.</p>
<p><strong>&#x7DF4;&#x7FD2; 11.4:</strong> &#x8129;&#x6539; randomPalindrome &#x51FD;&#x6578;, &#x4EE5;&#x63A2;&#x7D22; IsPalindrome &#x5C0D;&#x6A19;&#x9EDE;&#x548C;&#x7A7A;&#x683C;&#x7684;&#x8655;&#x7406;.</p>
@@ -2259,7 +2263,7 @@ ok gopl.io/ch11/word2 0.015s
<span class="hljs-keyword">return</span> <span class="hljs-constant">nil</span>
}
</code></pre>
<p>&#x5728;&#x6E2C;&#x8A66;&#x4E2D;&#x55CE;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x7528;&#x5404;&#x7A2E;&#x53C3;&#x6578;&#x548C;&#x6A19;&#x6A19;&#x8A8C;&#x8ABF;&#x7528; echo &#x51FD;&#x6578;, &#x7136;&#x5F8C;&#x6AA2;&#x6E2C;&#x5B83;&#x7684;&#x8F38;&#x9F63;&#x662F;&#x5426;&#x6B63;&#x78BA;, &#x6211;&#x5011;&#x901A;&#x904E;&#x589E;&#x52A0;&#x53C3;&#x6578;&#x4F86;&#x6E1B;&#x5C11; echo &#x51FD;&#x6578;&#x5C0D;&#x5168;&#x5C40;&#x8B8A;&#x91CF;&#x7684;&#x4F9D;&#x8CF4;. &#x6211;&#x5011;&#x9084;&#x589E;&#x52A0;&#x4E86;&#x4E00;&#x500B;&#x5168;&#x5C40;&#x540D;&#x7232; out &#x7684;&#x8B8A;&#x91CF;&#x4F86;&#x66FF;&#x4EE3;&#x76F4;&#x63A5;&#x4F7F;&#x7528; os.Stdout, &#x9019;&#x6A23;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;&#x53EF;&#x4EE5;&#x6839;&#x64DA;&#x9700;&#x8981;&#x5C07; out &#x8129;&#x6539;&#x7232;&#x4E0D;&#x540C;&#x7684;&#x5C0D;&#x8C61;&#x4EE5;&#x4FBF;&#x65BC;&#x6AA2;&#x67FB;. &#x4E0B;&#x9762;&#x5C31;&#x662F; echo_test.go &#x6587;&#x4EF6;&#x4E2D;&#x7684;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;:</p>
<p>&#x5728;&#x6E2C;&#x8A66;&#x4E2D;&#x55CE;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x7528;&#x5404;&#x7A2E;&#x53C3;&#x6578;&#x548C;&#x6A19;&#x6A19;&#x8A8C;&#x8ABF;&#x7528; echo &#x51FD;&#x6578;, &#x7136;&#x5F8C;&#x6AA2;&#x6E2C;&#x5B83;&#x7684;&#x8F38;&#x51FA;&#x662F;&#x5426;&#x6B63;&#x78BA;, &#x6211;&#x5011;&#x901A;&#x904E;&#x589E;&#x52A0;&#x53C3;&#x6578;&#x4F86;&#x6E1B;&#x5C11; echo &#x51FD;&#x6578;&#x5C0D;&#x5168;&#x5C40;&#x8B8A;&#x91CF;&#x7684;&#x4F9D;&#x8CF4;. &#x6211;&#x5011;&#x9084;&#x589E;&#x52A0;&#x4E86;&#x4E00;&#x500B;&#x5168;&#x5C40;&#x540D;&#x7232; out &#x7684;&#x8B8A;&#x91CF;&#x4F86;&#x66FF;&#x4EE3;&#x76F4;&#x63A5;&#x4F7F;&#x7528; os.Stdout, &#x9019;&#x6A23;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;&#x53EF;&#x4EE5;&#x6839;&#x64DA;&#x9700;&#x8981;&#x5C07; out &#x8129;&#x6539;&#x7232;&#x4E0D;&#x540C;&#x7684;&#x5C0D;&#x8C61;&#x4EE5;&#x4FBF;&#x65BC;&#x6AA2;&#x67FB;. &#x4E0B;&#x9762;&#x5C31;&#x662F; echo_test.go &#x6587;&#x4EF6;&#x4E2D;&#x7684;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;:</p>
<pre><code class="lang-Go"><span class="hljs-keyword">package</span> main
<span class="hljs-keyword">import</span> (
@@ -2297,23 +2301,23 @@ ok gopl.io/ch11/word2 0.015s
}
}
</code></pre>
<p>&#x8981;&#x8A3B;&#x610F;&#x7684;&#x662F;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;&#x548C;&#x7523;&#x54C1;&#x4EE3;&#x78BC;&#x5728;&#x540C;&#x4E00;&#x500B;&#x5305;. &#x96D6;&#x7136;&#x662F;main&#x5305;, &#x4E5F;&#x6709;&#x5C0D;&#x61C9;&#x7684; main &#x5165;&#x53E3;&#x51FD;&#x6578;, &#x4F46;&#x662F;&#x5728;&#x6E2C;&#x8A66;&#x7684;&#x6642;&#x5019; main &#x5305;&#x96BB;&#x662F; TestEcho &#x6E2C;&#x8A66;&#x51FD;&#x6578;&#x5C0E;&#x5165;&#x7684;&#x4E00;&#x500B;&#x666E;&#x901A;&#x5305;, &#x91CC;&#x9762; main &#x51FD;&#x6578;&#x4F75;&#x6C92;&#x6709;&#x88AB;&#x5C0E;&#x9F63;&#x662F;&#x88AB;&#x5FFD;&#x7565;&#x7684;.</p>
<p>&#x8981;&#x8A3B;&#x610F;&#x7684;&#x662F;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;&#x548C;&#x7523;&#x54C1;&#x4EE3;&#x78BC;&#x5728;&#x540C;&#x4E00;&#x500B;&#x5305;. &#x96D6;&#x7136;&#x662F;main&#x5305;, &#x4E5F;&#x6709;&#x5C0D;&#x61C9;&#x7684; main &#x5165;&#x53E3;&#x51FD;&#x6578;, &#x4F46;&#x662F;&#x5728;&#x6E2C;&#x8A66;&#x7684;&#x6642;&#x5019; main &#x5305;&#x96BB;&#x662F; TestEcho &#x6E2C;&#x8A66;&#x51FD;&#x6578;&#x5C0E;&#x5165;&#x7684;&#x4E00;&#x500B;&#x666E;&#x901A;&#x5305;, &#x91CC;&#x9762; main &#x51FD;&#x6578;&#x4F75;&#x6C92;&#x6709;&#x88AB;&#x5C0E;&#x51FA;&#x662F;&#x88AB;&#x5FFD;&#x7565;&#x7684;.</p>
<p>&#x901A;&#x904E;&#x5C07;&#x6E2C;&#x8A66;&#x653E;&#x5230;&#x8868;&#x683C;&#x4E2D;, &#x6211;&#x5011;&#x5F88;&#x5BB9;&#x6613;&#x6DFB;&#x52A0;&#x65B0;&#x7684;&#x6E2C;&#x8A66;&#x7528;&#x4F8B;. &#x8B93;&#x6211;&#x901A;&#x904E;&#x589E;&#x52A0;&#x4E0B;&#x9762;&#x7684;&#x6E2C;&#x8A66;&#x7528;&#x4F8B;&#x4F86;&#x770B;&#x770B;&#x5931;&#x6557;&#x7684;&#x60C5;&#x6CC1;&#x662F;&#x600E;&#x9EBD;&#x6A23;&#x7684;:</p>
<pre><code class="lang-Go">{<span class="hljs-constant">true</span>, <span class="hljs-string">&quot;,&quot;</span>, []<span class="hljs-typename">string</span>{<span class="hljs-string">&quot;a&quot;</span>, <span class="hljs-string">&quot;b&quot;</span>, <span class="hljs-string">&quot;c&quot;</span>}, <span class="hljs-string">&quot;a b c\n&quot;</span>}, <span class="hljs-comment">// <span class="hljs-doctag">NOTE:</span> wrong expectation!</span>
</code></pre>
<p><code>go test</code> &#x8F38;&#x9F63;&#x5982;&#x4E0B;:</p>
<p><code>go test</code> &#x8F38;&#x51FA;&#x5982;&#x4E0B;:</p>
<pre><code>$ go test gopl.io/ch11/echo
--- FAIL: TestEcho (0.00s)
echo_test.go:31: echo(true, &quot;,&quot;, [&quot;a&quot; &quot;b&quot; &quot;c&quot;]) = &quot;a,b,c&quot;, want &quot;a b c\n&quot;
FAIL
FAIL gopl.io/ch11/echo 0.006s
</code></pre><p>&#x932F;&#x8AA4;&#x4FE1;&#x606F;&#x63CF;&#x8FF0;&#x4E86;&#x5690;&#x8A66;&#x7684;&#x64CD;&#x4F5C;(&#x4F7F;&#x7528;Go&#x985E;&#x4F3C;&#x8A9E;&#x6CD5;), &#x5BE6;&#x969B;&#x7684;&#x884C;&#x7232;, &#x548C;&#x671F;&#x671B;&#x7684;&#x884C;&#x7232;. &#x901A;&#x904E;&#x9019;&#x6A23;&#x7684;&#x932F;&#x8AA4;&#x4FE1;&#x606F;, &#x4F60;&#x53EF;&#x4EE5;&#x5728;&#x6AA2;&#x8996;&#x4EE3;&#x78BC;&#x4E4B;&#x524D;&#x5C31;&#x5F88;&#x5BB9;&#x6613;&#x5B9A;&#x4F4D;&#x932F;&#x8AA4;&#x7684;&#x539F;&#x56E0;.</p>
<p>&#x8981;&#x8A3B;&#x610F;&#x7684;&#x662F;&#x5728;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;&#x4E2D;&#x4F75;&#x6C92;&#x6709;&#x8ABF;&#x7528; log.Fatal &#x6216; os.Exit, &#x56E0;&#x7232;&#x8ABF;&#x7528;&#x9019;&#x985E;&#x51FD;&#x6578;&#x6703;&#x5C0E;&#x81F4;&#x7A0B;&#x5E8F;&#x63D0;&#x524D;&#x9000;&#x9F63;; &#x8ABF;&#x7528;&#x9019;&#x4E9B;&#x51FD;&#x6578;&#x7684;&#x7279;&#x6B0A;&#x61C9;&#x8A72;&#x653E;&#x5728; main &#x51FD;&#x6578;&#x4E2D;. &#x5982;&#x679C;&#x771E;&#x7684;&#x6709;&#x4EE5;&#x5916;&#x7684;&#x4E8B;&#x60C5;&#x5C0E;&#x81F4;&#x51FD;&#x6578;&#x767C;&#x9001; panic, &#x6E2C;&#x8A66;&#x9A45;&#x52D5;&#x61C9;&#x8A72;&#x5690;&#x8A66; recover, &#x7136;&#x5F8C;&#x5C07;&#x7576;&#x524D;&#x6E2C;&#x8A66;&#x7576;&#x4F5C;&#x5931;&#x6557;&#x8655;&#x7406;. &#x5982;&#x679C;&#x662F;&#x53EF;&#x9810;&#x671F;&#x7684;&#x932F;&#x8AA4;, &#x4F8B;&#x5982;&#x975E;&#x6CD5;&#x7684;&#x7528;&#x6236;&#x8F38;&#x5165;, &#x627E;&#x4E0D;&#x5230;&#x6587;&#x4EF6;, &#x6216;&#x914D;&#x7F6E;&#x6587;&#x4EF6;&#x4E0D;&#x7576;&#x7B49;&#x61C9;&#x8A72;&#x901A;&#x904E;&#x8FD4;&#x8FF4;&#x4E00;&#x500B;&#x975E;&#x7A7A;&#x7684; error &#x7684;&#x65B9;&#x5F0F;&#x8655;&#x7406;. &#x5E78;&#x904B;&#x7684;&#x662F;(&#x4E0A;&#x9762;&#x7684;&#x610F;&#x5916;&#x96BB;&#x662F;&#x4E00;&#x500B;&#x63D2;&#x9EB4;), &#x6211;&#x5011;&#x7684; echo &#x793A;&#x4F8B;&#x662F;&#x6BD4;&#x8F03;&#x7C21;&#x55AE;&#x7684;&#x4E5F;&#x6C92;&#x6709;&#x9700;&#x8981;&#x8FD4;&#x8FF4;&#x975E;&#x7A7A;error&#x7684;&#x60C5;&#x6CC1;.</p>
<p>&#x8981;&#x8A3B;&#x610F;&#x7684;&#x662F;&#x5728;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;&#x4E2D;&#x4F75;&#x6C92;&#x6709;&#x8ABF;&#x7528; log.Fatal &#x6216; os.Exit, &#x56E0;&#x7232;&#x8ABF;&#x7528;&#x9019;&#x985E;&#x51FD;&#x6578;&#x6703;&#x5C0E;&#x81F4;&#x7A0B;&#x5E8F;&#x63D0;&#x524D;&#x9000;&#x51FA;; &#x8ABF;&#x7528;&#x9019;&#x4E9B;&#x51FD;&#x6578;&#x7684;&#x7279;&#x6B0A;&#x61C9;&#x8A72;&#x653E;&#x5728; main &#x51FD;&#x6578;&#x4E2D;. &#x5982;&#x679C;&#x771E;&#x7684;&#x6709;&#x4EE5;&#x5916;&#x7684;&#x4E8B;&#x60C5;&#x5C0E;&#x81F4;&#x51FD;&#x6578;&#x767C;&#x9001; panic, &#x6E2C;&#x8A66;&#x9A45;&#x52D5;&#x61C9;&#x8A72;&#x5690;&#x8A66; recover, &#x7136;&#x5F8C;&#x5C07;&#x7576;&#x524D;&#x6E2C;&#x8A66;&#x7576;&#x4F5C;&#x5931;&#x6557;&#x8655;&#x7406;. &#x5982;&#x679C;&#x662F;&#x53EF;&#x9810;&#x671F;&#x7684;&#x932F;&#x8AA4;, &#x4F8B;&#x5982;&#x975E;&#x6CD5;&#x7684;&#x7528;&#x6236;&#x8F38;&#x5165;, &#x627E;&#x4E0D;&#x5230;&#x6587;&#x4EF6;, &#x6216;&#x914D;&#x7F6E;&#x6587;&#x4EF6;&#x4E0D;&#x7576;&#x7B49;&#x61C9;&#x8A72;&#x901A;&#x904E;&#x8FD4;&#x8FF4;&#x4E00;&#x500B;&#x975E;&#x7A7A;&#x7684; error &#x7684;&#x65B9;&#x5F0F;&#x8655;&#x7406;. &#x5E78;&#x904B;&#x7684;&#x662F;(&#x4E0A;&#x9762;&#x7684;&#x610F;&#x5916;&#x96BB;&#x662F;&#x4E00;&#x500B;&#x63D2;&#x9EB4;), &#x6211;&#x5011;&#x7684; echo &#x793A;&#x4F8B;&#x662F;&#x6BD4;&#x8F03;&#x7C21;&#x55AE;&#x7684;&#x4E5F;&#x6C92;&#x6709;&#x9700;&#x8981;&#x8FD4;&#x8FF4;&#x975E;&#x7A7A;error&#x7684;&#x60C5;&#x6CC1;.</p>
<h3 id="1123-&#x767D;&#x76D2;&#x6E2C;&#x8A66;">11.2.3. &#x767D;&#x76D2;&#x6E2C;&#x8A66;</h3>
<p>&#x4E00;&#x500B;&#x6E2C;&#x8A66;&#x5206;&#x985E;&#x7684;&#x65B9;&#x6CD5;&#x662F;&#x57FA;&#x65BC;&#x6E2C;&#x8A66;&#x8005;&#x662F;&#x5426;&#x9700;&#x8981;&#x4E86;&#x89E3;&#x88AB;&#x6E2C;&#x8A66;&#x5C0D;&#x8C61;&#x7684;&#x5167;&#x90E8;&#x5DE5;&#x4F5C;&#x539F;&#x7406;. &#x9ED1;&#x76D2;&#x6E2C;&#x8A66;&#x96BB;&#x9700;&#x8981;&#x6E2C;&#x8A66;&#x5305;&#x516C;&#x958B;&#x7684;&#x6587;&#x6A94;&#x548C;API&#x884C;&#x7232;, &#x5167;&#x90E8;&#x5BE6;&#x73FE;&#x5C0D;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;&#x662F;&#x900F;&#x660E;&#x7684;. &#x76F8;&#x53CD;, &#x767D;&#x76D2;&#x6E2C;&#x8A66;&#x6709;&#x8A2A;&#x554F;&#x5305;&#x5167;&#x90E8;&#x51FD;&#x6578;&#x548C;&#x6578;&#x64DA;&#x7D50;&#x69CB;&#x7684;&#x6B0A;&#x9650;, &#x56E0;&#x6B64;&#x53EF;&#x4EE5;&#x505A;&#x5230;&#x4E00;&#x4E0B;&#x666E;&#x901A;&#x5BA2;&#x6236;&#x7AEF;&#x7121;&#x6CD5;&#x5BE6;&#x73FE;&#x7684;&#x6E2C;&#x8A66;. &#x4F8B;&#x5982;, &#x4E00;&#x500B;&#x98FD;&#x548C;&#x6E2C;&#x8A66;&#x53EF;&#x4EE5;&#x5728;&#x6BCF;&#x500B;&#x64CD;&#x4F5C;&#x4E4B;&#x5F8C;&#x6AA2;&#x6E2C;&#x4E0D;&#x8B8A;&#x91CF;&#x7684;&#x6578;&#x64DA;&#x985E;&#x578B;. (&#x767D;&#x76D2;&#x6E2C;&#x8A66;&#x96BB;&#x662F;&#x4E00;&#x500B;&#x50B3;&#x7D71;&#x7684;&#x540D;&#x7A31;, &#x5176;&#x5BE6;&#x7A31;&#x7232; clear box &#x6703;&#x66F4;&#x6E96;&#x78BA;.)</p>
<p>&#x9ED1;&#x76D2;&#x548C;&#x767D;&#x76D2;&#x9019;&#x5169;&#x7A2E;&#x6E2C;&#x8A66;&#x65B9;&#x6CD5;&#x662F;&#x4E92;&#x88DC;&#x7684;. &#x9ED1;&#x76D2;&#x6E2C;&#x8A66;&#x4E00;&#x822C;&#x66F4;&#x5065;&#x58EF;, &#x96A8;&#x7740;&#x8EDF;&#x4EF6;&#x5BE6;&#x73FE;&#x7684;&#x5B8C;&#x5584;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;&#x5F88;&#x5C11;&#x9700;&#x8981;&#x66F4;&#x65B0;. &#x5B83;&#x5011;&#x53EF;&#x4EE5;&#x5E6B;&#x52A9;&#x6E2C;&#x8A66;&#x8005;&#x4E86;&#x89E3;&#x771E;&#x662F;&#x5BA2;&#x6236;&#x7684;&#x9700;&#x6C42;, &#x53EF;&#x4EE5;&#x5E6B;&#x52A9;&#x767C;&#x73FE;API&#x8A2D;&#x8A08;&#x7684;&#x4E00;&#x4E9B;&#x4E0D;&#x8DB3;&#x4E4B;&#x8655;. &#x76F8;&#x53CD;, &#x767D;&#x76D2;&#x6E2C;&#x8A66;&#x5247;&#x53EF;&#x4EE5;&#x5C0D;&#x5167;&#x90E8;&#x4E00;&#x4E9B;&#x68D8;&#x624B;&#x7684;&#x5BE6;&#x73FE;&#x63D0;&#x4F9B;&#x66F4;&#x591A;&#x7684;&#x6E2C;&#x8A66;&#x8986;&#x84CB;.</p>
<p>&#x6211;&#x5011;&#x5DF2;&#x7D93;&#x770B;&#x5230;&#x5169;&#x7A2E;&#x6E2C;&#x8A66;&#x7684;&#x4F8B;&#x5B50;. TestIsPalindrome &#x6E2C;&#x8A66;&#x50C5;&#x50C5;&#x4F7F;&#x7528;&#x5C0E;&#x9F63;&#x7684; IsPalindrome &#x51FD;&#x6578;, &#x56E0;&#x6B64;&#x5B83;&#x662F;&#x4E00;&#x500B;&#x9ED1;&#x76D2;&#x6E2C;&#x8A66;. TestEcho &#x6E2C;&#x8A66;&#x5247;&#x8ABF;&#x7528;&#x4E86;&#x5167;&#x90E8;&#x7684; echo &#x51FD;&#x6578;, &#x4F75;&#x4E14;&#x66F4;&#x65B0;&#x4E86;&#x5167;&#x90E8;&#x7684; out &#x5168;&#x5C40;&#x8B8A;&#x91CF;, &#x9019;&#x5169;&#x500B;&#x90FD;&#x662F;&#x672A;&#x5C0E;&#x9F63;&#x7684;, &#x56E0;&#x6B64;&#x5B83;&#x662F;&#x767D;&#x76D2;&#x6E2C;&#x8A66;.</p>
<p>&#x7576;&#x6211;&#x5011;&#x958B;&#x767C;TestEcho&#x6E2C;&#x8A66;&#x7684;&#x6642;&#x5019;, &#x6211;&#x5011;&#x8129;&#x6539;&#x4E86; echo &#x51FD;&#x6578;&#x4F7F;&#x7528;&#x5305;&#x7D1A;&#x7684; out &#x4F5C;&#x7232;&#x8F38;&#x9F63;&#x5C0D;&#x8C61;, &#x56E0;&#x6B64;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;&#x53EF;&#x4EE5;&#x7528;&#x53E6;&#x4E00;&#x500B;&#x5BE6;&#x73FE;&#x4EE3;&#x66FF;&#x6A19;&#x6E96;&#x8F38;&#x9F63;, &#x9019;&#x6A23;&#x53EF;&#x4EE5;&#x65B9;&#x4FBF;&#x5C0D;&#x6BD4; echo &#x7684;&#x8F38;&#x9F63;&#x6578;&#x64DA;. &#x4F7F;&#x7528;&#x985E;&#x4F3C;&#x7684;&#x6280;&#x8853;, &#x6211;&#x5011;&#x53EF;&#x4EE5;&#x5C07;&#x7523;&#x54C1;&#x4EE3;&#x78BC;&#x7684;&#x5176;&#x4ED6;&#x90E8;&#x5206;&#x4E5F;&#x66FF;&#x63DB;&#x7232;&#x4E00;&#x500B;&#x5BB9;&#x6613;&#x6E2C;&#x8A66;&#x7684;&#x50DE;&#x5C0D;&#x8C61;. &#x4F7F;&#x7528;&#x50DE;&#x5C0D;&#x8C61;&#x7684;&#x597D;&#x8655;&#x662F;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x65B9;&#x4FBF;&#x914D;&#x7F6E;, &#x5BB9;&#x6613;&#x9810;&#x6E2C;, &#x66F4;&#x53EF;&#x9760;, &#x4E5F;&#x66F4;&#x5BB9;&#x6613;&#x89C0;&#x5BDF;. &#x540C;&#x6642;&#x4E5F;&#x53EF;&#x4EE5;&#x907F;&#x514D;&#x4E00;&#x4E9B;&#x4E0D;&#x826F;&#x7684;&#x526F;&#x4F5C;&#x7528;, &#x4F8B;&#x5982;&#x66F4;&#x65B0;&#x751F;&#x7523;&#x6578;&#x64DA;&#x5EAB;&#x6216;&#x4FE1;&#x7528;&#x5361;&#x6D88;&#x8CBB;&#x884C;&#x7232;.</p>
<p>&#x6211;&#x5011;&#x5DF2;&#x7D93;&#x770B;&#x5230;&#x5169;&#x7A2E;&#x6E2C;&#x8A66;&#x7684;&#x4F8B;&#x5B50;. TestIsPalindrome &#x6E2C;&#x8A66;&#x50C5;&#x50C5;&#x4F7F;&#x7528;&#x5C0E;&#x51FA;&#x7684; IsPalindrome &#x51FD;&#x6578;, &#x56E0;&#x6B64;&#x5B83;&#x662F;&#x4E00;&#x500B;&#x9ED1;&#x76D2;&#x6E2C;&#x8A66;. TestEcho &#x6E2C;&#x8A66;&#x5247;&#x8ABF;&#x7528;&#x4E86;&#x5167;&#x90E8;&#x7684; echo &#x51FD;&#x6578;, &#x4F75;&#x4E14;&#x66F4;&#x65B0;&#x4E86;&#x5167;&#x90E8;&#x7684; out &#x5168;&#x5C40;&#x8B8A;&#x91CF;, &#x9019;&#x5169;&#x500B;&#x90FD;&#x662F;&#x672A;&#x5C0E;&#x51FA;&#x7684;, &#x56E0;&#x6B64;&#x5B83;&#x662F;&#x767D;&#x76D2;&#x6E2C;&#x8A66;.</p>
<p>&#x7576;&#x6211;&#x5011;&#x958B;&#x767C;TestEcho&#x6E2C;&#x8A66;&#x7684;&#x6642;&#x5019;, &#x6211;&#x5011;&#x8129;&#x6539;&#x4E86; echo &#x51FD;&#x6578;&#x4F7F;&#x7528;&#x5305;&#x7D1A;&#x7684; out &#x4F5C;&#x7232;&#x8F38;&#x51FA;&#x5C0D;&#x8C61;, &#x56E0;&#x6B64;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;&#x53EF;&#x4EE5;&#x7528;&#x53E6;&#x4E00;&#x500B;&#x5BE6;&#x73FE;&#x4EE3;&#x66FF;&#x6A19;&#x6E96;&#x8F38;&#x51FA;, &#x9019;&#x6A23;&#x53EF;&#x4EE5;&#x65B9;&#x4FBF;&#x5C0D;&#x6BD4; echo &#x7684;&#x8F38;&#x51FA;&#x6578;&#x64DA;. &#x4F7F;&#x7528;&#x985E;&#x4F3C;&#x7684;&#x6280;&#x8853;, &#x6211;&#x5011;&#x53EF;&#x4EE5;&#x5C07;&#x7523;&#x54C1;&#x4EE3;&#x78BC;&#x7684;&#x5176;&#x4ED6;&#x90E8;&#x5206;&#x4E5F;&#x66FF;&#x63DB;&#x7232;&#x4E00;&#x500B;&#x5BB9;&#x6613;&#x6E2C;&#x8A66;&#x7684;&#x50DE;&#x5C0D;&#x8C61;. &#x4F7F;&#x7528;&#x50DE;&#x5C0D;&#x8C61;&#x7684;&#x597D;&#x8655;&#x662F;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x65B9;&#x4FBF;&#x914D;&#x7F6E;, &#x5BB9;&#x6613;&#x9810;&#x6E2C;, &#x66F4;&#x53EF;&#x9760;, &#x4E5F;&#x66F4;&#x5BB9;&#x6613;&#x89C0;&#x5BDF;. &#x540C;&#x6642;&#x4E5F;&#x53EF;&#x4EE5;&#x907F;&#x514D;&#x4E00;&#x4E9B;&#x4E0D;&#x826F;&#x7684;&#x526F;&#x4F5C;&#x7528;, &#x4F8B;&#x5982;&#x66F4;&#x65B0;&#x751F;&#x7523;&#x6578;&#x64DA;&#x5EAB;&#x6216;&#x4FE1;&#x7528;&#x5361;&#x6D88;&#x8CBB;&#x884C;&#x7232;.</p>
<p>&#x4E0B;&#x9762;&#x7684;&#x4EE3;&#x78BC;&#x6F14;&#x793A;&#x4E86;&#x7232;&#x7528;&#x6236;&#x63D0;&#x4F9B;&#x7DB2;&#x7D61;&#x5B58;&#x5132;&#x7684;web&#x670D;&#x52D9;&#x4E2D;&#x7684;&#x914D;&#x984D;&#x6AA2;&#x6E2C;&#x908F;&#x8F2F;. &#x7576;&#x7528;&#x6236;&#x4F7F;&#x7528;&#x4E86;&#x8D85;&#x904E; 90% &#x7684;&#x5B58;&#x5132;&#x914D;&#x984D;&#x4E4B;&#x5F8C;&#x5C07;&#x767C;&#x9001;&#x63D0;&#x9192;&#x90F5;&#x4EF6;.</p>
<pre><code class="lang-Go">gopl.io/ch11/storage1
@@ -2440,17 +2444,17 @@ FAIL gopl.io/ch11/echo 0.006s
<p>XTestGoFiles &#x8868;&#x793A;&#x7684;&#x662F;&#x5C6C;&#x65BC;&#x6E2C;&#x8A66;&#x64F4;&#x5C55;&#x5305;&#x7684;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;, &#x4E5F;&#x5C31;&#x662F; fmt_test &#x5305;, &#x56E0;&#x6B64;&#x5B83;&#x5011;&#x5FC5;&#x9B1A;&#x5148;&#x5C0E;&#x5165; fmt &#x5305;. &#x540C;&#x6A23;, &#x9019;&#x4E9B;&#x6587;&#x4EF6;&#x4E5F;&#x96BB;&#x662F;&#x5728;&#x6E2C;&#x8A66;&#x6642;&#x88AB;&#x69CB;&#x5EFA;&#x904B;&#x884C;:</p>
<pre><code>$ go list -f={{.XTestGoFiles}} fmt
[fmt_test.go scan_test.go stringer_test.go]
</code></pre><p>&#x6709;&#x6642;&#x5019;&#x6E2C;&#x8A66;&#x64F4;&#x5C55;&#x5305;&#x9700;&#x8981;&#x8A2A;&#x554F;&#x88AB;&#x6E2C;&#x8A66;&#x5305;&#x5167;&#x90E8;&#x7684;&#x4EE3;&#x78BC;, &#x4F8B;&#x5982;&#x5728;&#x4E00;&#x500B;&#x7232;&#x4E86;&#x907F;&#x514D;&#x5FAA;&#x74B0;&#x5C0E;&#x5165;&#x800C;&#x88AB;&#x7368;&#x7ACB;&#x5230;&#x5916;&#x90E8;&#x6E2C;&#x8A66;&#x64F4;&#x5C55;&#x5305;&#x7684;&#x767D;&#x76D2;&#x6E2C;&#x8A66;. &#x5728;&#x9019;&#x7A2E;&#x60C5;&#x6CC1;&#x4E0B;, &#x6211;&#x5011;&#x53EF;&#x4EE5;&#x901A;&#x904E;&#x4E00;&#x4E9B;&#x6280;&#x5DE7;&#x89E3;&#x6C7A;: &#x6211;&#x5011;&#x5728;&#x5305;&#x5167;&#x7684;&#x4E00;&#x500B; _test.go &#x6587;&#x4EF6;&#x4E2D;&#x5C0E;&#x9F63;&#x4E00;&#x500B;&#x5167;&#x90E8;&#x7684;&#x5BE6;&#x73FE;&#x7D66;&#x6E2C;&#x8A66;&#x64F4;&#x5C55;&#x5305;. &#x56E0;&#x7232;&#x9019;&#x4E9B;&#x4EE3;&#x78BC;&#x96BB;&#x6709;&#x5728;&#x6E2C;&#x8A66;&#x6642;&#x7E94;&#x9700;&#x8981;, &#x56E0;&#x6B64;&#x4E00;&#x822C;&#x653E;&#x5728; export_test.go &#x6587;&#x4EF6;&#x4E2D;.</p>
</code></pre><p>&#x6709;&#x6642;&#x5019;&#x6E2C;&#x8A66;&#x64F4;&#x5C55;&#x5305;&#x9700;&#x8981;&#x8A2A;&#x554F;&#x88AB;&#x6E2C;&#x8A66;&#x5305;&#x5167;&#x90E8;&#x7684;&#x4EE3;&#x78BC;, &#x4F8B;&#x5982;&#x5728;&#x4E00;&#x500B;&#x7232;&#x4E86;&#x907F;&#x514D;&#x5FAA;&#x74B0;&#x5C0E;&#x5165;&#x800C;&#x88AB;&#x7368;&#x7ACB;&#x5230;&#x5916;&#x90E8;&#x6E2C;&#x8A66;&#x64F4;&#x5C55;&#x5305;&#x7684;&#x767D;&#x76D2;&#x6E2C;&#x8A66;. &#x5728;&#x9019;&#x7A2E;&#x60C5;&#x6CC1;&#x4E0B;, &#x6211;&#x5011;&#x53EF;&#x4EE5;&#x901A;&#x904E;&#x4E00;&#x4E9B;&#x6280;&#x5DE7;&#x89E3;&#x6C7A;: &#x6211;&#x5011;&#x5728;&#x5305;&#x5167;&#x7684;&#x4E00;&#x500B; _test.go &#x6587;&#x4EF6;&#x4E2D;&#x5C0E;&#x51FA;&#x4E00;&#x500B;&#x5167;&#x90E8;&#x7684;&#x5BE6;&#x73FE;&#x7D66;&#x6E2C;&#x8A66;&#x64F4;&#x5C55;&#x5305;. &#x56E0;&#x7232;&#x9019;&#x4E9B;&#x4EE3;&#x78BC;&#x96BB;&#x6709;&#x5728;&#x6E2C;&#x8A66;&#x6642;&#x624D;&#x9700;&#x8981;, &#x56E0;&#x6B64;&#x4E00;&#x822C;&#x653E;&#x5728; export_test.go &#x6587;&#x4EF6;&#x4E2D;.</p>
<p>&#x4F8B;&#x5982;, fmt &#x5305;&#x7684; fmt.Scanf &#x9700;&#x8981; unicode.IsSpace &#x51FD;&#x6578;&#x63D0;&#x4F9B;&#x7684;&#x529F;&#x80FD;. &#x4F46;&#x662F;&#x7232;&#x4E86;&#x907F;&#x514D;&#x592A;&#x591A;&#x7684;&#x4F9D;&#x8CF4;, fmt &#x5305;&#x4F75;&#x6C92;&#x6709;&#x5C0E;&#x5165;&#x5305;&#x542B;&#x9245;&#x5927;&#x8868;&#x683C;&#x6578;&#x64DA;&#x7684; unicode &#x5305;; &#x76F8;&#x53CD;fmt&#x5305;&#x6709;&#x4E00;&#x500B;&#x53EB; isSpace &#x5167;&#x90E8;&#x7684;&#x7C21;&#x6613;&#x5BE6;&#x73FE;.</p>
<p>&#x7232;&#x4E86;&#x78BA;&#x4FDD; fmt.isSpace &#x548C; unicode.IsSpace &#x51FD;&#x6578;&#x7684;&#x884C;&#x7232;&#x4E00;&#x81F4;, fmt &#x5305;&#x8B39;&#x614E;&#x5730;&#x5305;&#x542B;&#x4E86;&#x4E00;&#x500B;&#x6E2C;&#x8A66;. &#x662F;&#x4E00;&#x500B;&#x5728;&#x6E2C;&#x8A66;&#x64F4;&#x5C55;&#x5305;&#x5167;&#x7684;&#x6E2C;&#x8A66;, &#x56E0;&#x6B64;&#x662F;&#x7121;&#x6CD5;&#x76F4;&#x63A5;&#x8A2A;&#x554F;&#x5230; isSpace &#x5167;&#x90E8;&#x51FD;&#x6578;&#x7684;, &#x56E0;&#x6B64; fmt &#x901A;&#x904E;&#x4E00;&#x500B;&#x7955;&#x5BC6;&#x9F63;&#x53E3;&#x5C0E;&#x9F63;&#x4E86; isSpace &#x51FD;&#x6578;. export_test.go &#x6587;&#x4EF6;&#x5C31;&#x662F;&#x5C08;&#x9580;&#x7528;&#x65BC;&#x6E2C;&#x8A66;&#x64F4;&#x5C55;&#x5305;&#x7684;&#x7955;&#x5BC6;&#x9F63;&#x53E3;.</p>
<p>&#x7232;&#x4E86;&#x78BA;&#x4FDD; fmt.isSpace &#x548C; unicode.IsSpace &#x51FD;&#x6578;&#x7684;&#x884C;&#x7232;&#x4E00;&#x81F4;, fmt &#x5305;&#x8B39;&#x614E;&#x5730;&#x5305;&#x542B;&#x4E86;&#x4E00;&#x500B;&#x6E2C;&#x8A66;. &#x662F;&#x4E00;&#x500B;&#x5728;&#x6E2C;&#x8A66;&#x64F4;&#x5C55;&#x5305;&#x5167;&#x7684;&#x6E2C;&#x8A66;, &#x56E0;&#x6B64;&#x662F;&#x7121;&#x6CD5;&#x76F4;&#x63A5;&#x8A2A;&#x554F;&#x5230; isSpace &#x5167;&#x90E8;&#x51FD;&#x6578;&#x7684;, &#x56E0;&#x6B64; fmt &#x901A;&#x904E;&#x4E00;&#x500B;&#x7955;&#x5BC6;&#x51FA;&#x53E3;&#x5C0E;&#x51FA;&#x4E86; isSpace &#x51FD;&#x6578;. export_test.go &#x6587;&#x4EF6;&#x5C31;&#x662F;&#x5C08;&#x9580;&#x7528;&#x65BC;&#x6E2C;&#x8A66;&#x64F4;&#x5C55;&#x5305;&#x7684;&#x7955;&#x5BC6;&#x51FA;&#x53E3;.</p>
<pre><code class="lang-Go"><span class="hljs-keyword">package</span> fmt
<span class="hljs-keyword">var</span> IsSpace = isSpace
</code></pre>
<p>&#x9019;&#x500B;&#x6E2C;&#x8A66;&#x6587;&#x4EF6;&#x4F75;&#x6C92;&#x6709;&#x5B9A;&#x7FA9;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;; &#x5B83;&#x96BB;&#x662F;&#x901A;&#x904E; fmt.IsSpace &#x7C21;&#x55AE;&#x5C0E;&#x9F63;&#x4E86;&#x5167;&#x90E8;&#x7684; isSpace &#x51FD;&#x6578;, &#x63D0;&#x4F9B;&#x7D66;&#x6E2C;&#x8A66;&#x64F4;&#x5C55;&#x5305;&#x4F7F;&#x7528;. &#x9019;&#x500B;&#x6280;&#x5DE7;&#x53EF;&#x4EE5;&#x5EE3;&#x6CDB;&#x7528;&#x65BC;&#x4F4D;&#x65BC;&#x6E2C;&#x8A66;&#x64F4;&#x5C55;&#x5305;&#x7684;&#x767D;&#x76D2;&#x6E2C;&#x8A66;.</p>
<p>&#x9019;&#x500B;&#x6E2C;&#x8A66;&#x6587;&#x4EF6;&#x4F75;&#x6C92;&#x6709;&#x5B9A;&#x7FA9;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;; &#x5B83;&#x96BB;&#x662F;&#x901A;&#x904E; fmt.IsSpace &#x7C21;&#x55AE;&#x5C0E;&#x51FA;&#x4E86;&#x5167;&#x90E8;&#x7684; isSpace &#x51FD;&#x6578;, &#x63D0;&#x4F9B;&#x7D66;&#x6E2C;&#x8A66;&#x64F4;&#x5C55;&#x5305;&#x4F7F;&#x7528;. &#x9019;&#x500B;&#x6280;&#x5DE7;&#x53EF;&#x4EE5;&#x5EE3;&#x6CDB;&#x7528;&#x65BC;&#x4F4D;&#x65BC;&#x6E2C;&#x8A66;&#x64F4;&#x5C55;&#x5305;&#x7684;&#x767D;&#x76D2;&#x6E2C;&#x8A66;.</p>
<h3 id="1125-&#x7DE8;&#x5BEB;&#x6709;&#x6548;&#x7684;&#x6E2C;&#x8A66;">11.2.5. &#x7DE8;&#x5BEB;&#x6709;&#x6548;&#x7684;&#x6E2C;&#x8A66;</h3>
<p>&#x8A31;&#x591A;Go&#x65B0;&#x4EBA;&#x6703;&#x9A5A;&#x7570;&#x8207;&#x5B83;&#x7684;&#x6975;&#x7C21;&#x7684;&#x6E2C;&#x8A66;&#x6846;&#x67B6;. &#x5F88;&#x591A;&#x5176;&#x4ED6;&#x8A9E;&#x8A00;&#x7684;&#x6E2C;&#x8A66;&#x6846;&#x67B6;&#x90FD;&#x63D0;&#x4F9B;&#x4E86;&#x8B58;&#x522B;&#x6E2C;&#x8A66;&#x51FD;&#x6578;&#x7684;&#x6A5F;&#x88FD;(&#x901A;&#x5E38;&#x4F7F;&#x7528;&#x53CD;&#x5C04;&#x6216;&#x5143;&#x6578;&#x64DA;), &#x901A;&#x904E;&#x8A2D;&#x7F6E;&#x4E00;&#x4E9B; &#x2018;&#x2018;setup&#x2019;&#x2019; &#x548C; &#x2018;&#x2018;teardown&#x2019;&#x2019; &#x7684;&#x9264;&#x5B50;&#x51FD;&#x6578;&#x4F86;&#x57F7;&#x884C;&#x6E2C;&#x8A66;&#x7528;&#x4F8B;&#x904B;&#x884C;&#x7684;&#x521D;&#x59CB;&#x5316;&#x6216;&#x4E4B;&#x5F8C;&#x7684;&#x6E05;&#x7406;&#x64CD;&#x4F5C;, &#x540C;&#x6642;&#x6E2C;&#x8A66;&#x5DE5;&#x5177;&#x7BB1;&#x9084;&#x63D0;&#x4F9B;&#x4E86;&#x5F88;&#x591A;&#x985E;&#x4F3C;assert&#x65B7;&#x8A00;, &#x6BD4;&#x8F03;&#x503C;, &#x683C;&#x5F0F;&#x5316;&#x8F38;&#x9F63;&#x932F;&#x8AA4;&#x4FE1;&#x606F;&#x548C;&#x505C;&#x6B62;&#x4E00;&#x500B;&#x8B58;&#x522B;&#x7684;&#x6E2C;&#x8A66;&#x7B49;&#x8F14;&#x52A9;&#x51FD;&#x6578;(&#x901A;&#x5E38;&#x4F7F;&#x7528;&#x7570;&#x5E38;&#x6A5F;&#x88FD;). &#x96D6;&#x7136;&#x9019;&#x4E9B;&#x6A5F;&#x88FD;&#x53EF;&#x4EE5;&#x4F7F;&#x5F97;&#x6E2C;&#x8A66;&#x975E;&#x5E38;&#x7C21;&#x6F54;, &#x4F46;&#x662F;&#x6E2C;&#x8A66;&#x8F38;&#x9F63;&#x7684;&#x65E5;&#x8A8C;&#x537B;&#x50CF;&#x706B;&#x661F;&#x6587;&#x4E00;&#x822C;&#x96E3;&#x4EE5;&#x7406;&#x89E3;. &#x6B64;&#x5916;, &#x96D6;&#x7136;&#x6E2C;&#x8A66;&#x6700;&#x7D42;&#x4E5F;&#x6703;&#x8F38;&#x9F63; PASS &#x6216; FAIL &#x7684;&#x5831;&#x544A;, &#x4F46;&#x662F;&#x5B83;&#x5011;&#x63D0;&#x4F9B;&#x7684;&#x4FE1;&#x606F;&#x683C;&#x5F0F;&#x537B;&#x975E;&#x5E38;&#x4E0D;&#x5229;&#x65BC;&#x4EE3;&#x78BC;&#x7DAD;&#x8B77;&#x8005;&#x5FEB;&#x901F;&#x5B9A;&#x4F4D;&#x554F;&#x984C;, &#x56E0;&#x7232;&#x5931;&#x6557;&#x7684;&#x4FE1;&#x606F;&#x7684;&#x5177;&#x9AD4;&#x542B;&#x7FA9;&#x662F;&#x975E;&#x5E38;&#x96B1;&#x60A3;&#x7684;, &#x6BD4;&#x5982; &quot;assert: 0 == 1&quot; &#x6216; &#x6210;&#x9801;&#x7684;&#x6D77;&#x91CF;&#x8DDF;&#x8E64;&#x65E5;&#x8A8C;.</p>
<p>Go&#x8A9E;&#x8A00;&#x7684;&#x6E2C;&#x8A66;&#x98A8;&#x683C;&#x5247;&#x5F62;&#x6210;&#x9BAE;&#x660E;&#x5C0D;&#x6BD4;. &#x5B83;&#x671F;&#x671B;&#x6E2C;&#x8A66;&#x8005;&#x81EA;&#x5DF1;&#x5B8C;&#x6210;&#x5927;&#x90E8;&#x5206;&#x7684;&#x5DE5;&#x4F5C;, &#x5B9A;&#x7FA9;&#x51FD;&#x6578;&#x907F;&#x514D;&#x91CD;&#x8907;, &#x5C31;&#x50CF;&#x666E;&#x901A;&#x7DE8;&#x7A0B;&#x90A3;&#x6A23;. &#x7DE8;&#x5BEB;&#x6E2C;&#x8A66;&#x4F75;&#x4E0D;&#x662F;&#x4E00;&#x500B;&#x6A5F;&#x68B0;&#x7684;&#x586B;&#x5145;&#x904E;&#x7A0B;; &#x4E00;&#x500B;&#x6E2C;&#x8A66;&#x4E5F;&#x6709;&#x81EA;&#x5DF1;&#x7684;&#x63A5;&#x53E3;, &#x76E1;&#x7BA1;&#x5B83;&#x7684;&#x7DAD;&#x8B77;&#x8005;&#x4E5F;&#x662F;&#x6E2C;&#x8A66;&#x50C5;&#x6709;&#x7684;&#x4E00;&#x500B;&#x7528;&#x6236;. &#x4E00;&#x500B;&#x597D;&#x7684;&#x6E2C;&#x8A66;&#x4E0D;&#x61C9;&#x8A72;&#x5F15;&#x767C;&#x5176;&#x4ED6;&#x7121;&#x95DC;&#x7684;&#x932F;&#x8AA4;&#x4FE1;&#x606F;, &#x5B83;&#x96BB;&#x8981;&#x6E05;&#x6670;&#x7C21;&#x6F54;&#x5730;&#x63CF;&#x8FF0;&#x554F;&#x984C;&#x7684;&#x7665;&#x72C0;&#x537D;&#x53EF;, &#x6709;&#x6642;&#x5019;&#x53EF;&#x80FD;&#x9084;&#x9700;&#x8981;&#x4E00;&#x4E9B;&#x4E0A;&#x4E0B;&#x6587;&#x4FE1;&#x606F;. &#x5728;&#x7406;&#x60F3;&#x60C5;&#x6CC1;&#x4E0B;, &#x7DAD;&#x8B77;&#x8005;&#x53EF;&#x4EE5;&#x5728;&#x4E0D;&#x770B;&#x4EE3;&#x78BC;&#x7684;&#x60C5;&#x6CC1;&#x4E0B;&#x5C31;&#x80FD;&#x6839;&#x64DA;&#x932F;&#x8AA4;&#x4FE1;&#x606F;&#x5B9A;&#x4F4D;&#x932F;&#x8AA4;&#x7523;&#x751F;&#x7684;&#x539F;&#x56E0;. &#x4E00;&#x500B;&#x597D;&#x7684;&#x6E2C;&#x8A66;&#x4E0D;&#x61C9;&#x8A72;&#x5728;&#x9047;&#x5230;&#x4E00;&#x9EDE;&#x5C0F;&#x932F;&#x8AA4;&#x5C31;&#x7ACB;&#x523B;&#x9000;&#x9F63;&#x6E2C;&#x8A66;, &#x5B83;&#x61C9;&#x8A72;&#x5690;&#x8A66;&#x5831;&#x544A;&#x66F4;&#x591A;&#x7684;&#x6E2C;&#x8A66;, &#x56E0;&#x6B64;&#x6211;&#x5011;&#x53EF;&#x80FD;&#x5F9E;&#x591A;&#x500B;&#x5931;&#x6557;&#x6E2C;&#x8A66;&#x7684;&#x6A21;&#x5F0F;&#x4E2D;&#x767C;&#x73FE;&#x932F;&#x8AA4;&#x7523;&#x751F;&#x7684;&#x898F;&#x5F8B;.</p>
<p>&#x8A31;&#x591A;Go&#x65B0;&#x4EBA;&#x6703;&#x9A5A;&#x7570;&#x8207;&#x5B83;&#x7684;&#x6975;&#x7C21;&#x7684;&#x6E2C;&#x8A66;&#x6846;&#x67B6;. &#x5F88;&#x591A;&#x5176;&#x4ED6;&#x8A9E;&#x8A00;&#x7684;&#x6E2C;&#x8A66;&#x6846;&#x67B6;&#x90FD;&#x63D0;&#x4F9B;&#x4E86;&#x8B58;&#x522B;&#x6E2C;&#x8A66;&#x51FD;&#x6578;&#x7684;&#x6A5F;&#x88FD;(&#x901A;&#x5E38;&#x4F7F;&#x7528;&#x53CD;&#x5C04;&#x6216;&#x5143;&#x6578;&#x64DA;), &#x901A;&#x904E;&#x8A2D;&#x7F6E;&#x4E00;&#x4E9B; &#x2018;&#x2018;setup&#x2019;&#x2019; &#x548C; &#x2018;&#x2018;teardown&#x2019;&#x2019; &#x7684;&#x9264;&#x5B50;&#x51FD;&#x6578;&#x4F86;&#x57F7;&#x884C;&#x6E2C;&#x8A66;&#x7528;&#x4F8B;&#x904B;&#x884C;&#x7684;&#x521D;&#x59CB;&#x5316;&#x6216;&#x4E4B;&#x5F8C;&#x7684;&#x6E05;&#x7406;&#x64CD;&#x4F5C;, &#x540C;&#x6642;&#x6E2C;&#x8A66;&#x5DE5;&#x5177;&#x7BB1;&#x9084;&#x63D0;&#x4F9B;&#x4E86;&#x5F88;&#x591A;&#x985E;&#x4F3C;assert&#x65B7;&#x8A00;, &#x6BD4;&#x8F03;&#x503C;, &#x683C;&#x5F0F;&#x5316;&#x8F38;&#x51FA;&#x932F;&#x8AA4;&#x4FE1;&#x606F;&#x548C;&#x505C;&#x6B62;&#x4E00;&#x500B;&#x8B58;&#x522B;&#x7684;&#x6E2C;&#x8A66;&#x7B49;&#x8F14;&#x52A9;&#x51FD;&#x6578;(&#x901A;&#x5E38;&#x4F7F;&#x7528;&#x7570;&#x5E38;&#x6A5F;&#x88FD;). &#x96D6;&#x7136;&#x9019;&#x4E9B;&#x6A5F;&#x88FD;&#x53EF;&#x4EE5;&#x4F7F;&#x5F97;&#x6E2C;&#x8A66;&#x975E;&#x5E38;&#x7C21;&#x6F54;, &#x4F46;&#x662F;&#x6E2C;&#x8A66;&#x8F38;&#x51FA;&#x7684;&#x65E5;&#x8A8C;&#x537B;&#x50CF;&#x706B;&#x661F;&#x6587;&#x4E00;&#x822C;&#x96E3;&#x4EE5;&#x7406;&#x89E3;. &#x6B64;&#x5916;, &#x96D6;&#x7136;&#x6E2C;&#x8A66;&#x6700;&#x7D42;&#x4E5F;&#x6703;&#x8F38;&#x51FA; PASS &#x6216; FAIL &#x7684;&#x5831;&#x544A;, &#x4F46;&#x662F;&#x5B83;&#x5011;&#x63D0;&#x4F9B;&#x7684;&#x4FE1;&#x606F;&#x683C;&#x5F0F;&#x537B;&#x975E;&#x5E38;&#x4E0D;&#x5229;&#x65BC;&#x4EE3;&#x78BC;&#x7DAD;&#x8B77;&#x8005;&#x5FEB;&#x901F;&#x5B9A;&#x4F4D;&#x554F;&#x984C;, &#x56E0;&#x7232;&#x5931;&#x6557;&#x7684;&#x4FE1;&#x606F;&#x7684;&#x5177;&#x9AD4;&#x542B;&#x7FA9;&#x662F;&#x975E;&#x5E38;&#x96B1;&#x60A3;&#x7684;, &#x6BD4;&#x5982; &quot;assert: 0 == 1&quot; &#x6216; &#x6210;&#x9801;&#x7684;&#x6D77;&#x91CF;&#x8DDF;&#x8E64;&#x65E5;&#x8A8C;.</p>
<p>Go&#x8A9E;&#x8A00;&#x7684;&#x6E2C;&#x8A66;&#x98A8;&#x683C;&#x5247;&#x5F62;&#x6210;&#x9BAE;&#x660E;&#x5C0D;&#x6BD4;. &#x5B83;&#x671F;&#x671B;&#x6E2C;&#x8A66;&#x8005;&#x81EA;&#x5DF1;&#x5B8C;&#x6210;&#x5927;&#x90E8;&#x5206;&#x7684;&#x5DE5;&#x4F5C;, &#x5B9A;&#x7FA9;&#x51FD;&#x6578;&#x907F;&#x514D;&#x91CD;&#x8907;, &#x5C31;&#x50CF;&#x666E;&#x901A;&#x7DE8;&#x7A0B;&#x90A3;&#x6A23;. &#x7DE8;&#x5BEB;&#x6E2C;&#x8A66;&#x4F75;&#x4E0D;&#x662F;&#x4E00;&#x500B;&#x6A5F;&#x68B0;&#x7684;&#x586B;&#x5145;&#x904E;&#x7A0B;; &#x4E00;&#x500B;&#x6E2C;&#x8A66;&#x4E5F;&#x6709;&#x81EA;&#x5DF1;&#x7684;&#x63A5;&#x53E3;, &#x76E1;&#x7BA1;&#x5B83;&#x7684;&#x7DAD;&#x8B77;&#x8005;&#x4E5F;&#x662F;&#x6E2C;&#x8A66;&#x50C5;&#x6709;&#x7684;&#x4E00;&#x500B;&#x7528;&#x6236;. &#x4E00;&#x500B;&#x597D;&#x7684;&#x6E2C;&#x8A66;&#x4E0D;&#x61C9;&#x8A72;&#x5F15;&#x767C;&#x5176;&#x4ED6;&#x7121;&#x95DC;&#x7684;&#x932F;&#x8AA4;&#x4FE1;&#x606F;, &#x5B83;&#x96BB;&#x8981;&#x6E05;&#x6670;&#x7C21;&#x6F54;&#x5730;&#x63CF;&#x8FF0;&#x554F;&#x984C;&#x7684;&#x7665;&#x72C0;&#x537D;&#x53EF;, &#x6709;&#x6642;&#x5019;&#x53EF;&#x80FD;&#x9084;&#x9700;&#x8981;&#x4E00;&#x4E9B;&#x4E0A;&#x4E0B;&#x6587;&#x4FE1;&#x606F;. &#x5728;&#x7406;&#x60F3;&#x60C5;&#x6CC1;&#x4E0B;, &#x7DAD;&#x8B77;&#x8005;&#x53EF;&#x4EE5;&#x5728;&#x4E0D;&#x770B;&#x4EE3;&#x78BC;&#x7684;&#x60C5;&#x6CC1;&#x4E0B;&#x5C31;&#x80FD;&#x6839;&#x64DA;&#x932F;&#x8AA4;&#x4FE1;&#x606F;&#x5B9A;&#x4F4D;&#x932F;&#x8AA4;&#x7523;&#x751F;&#x7684;&#x539F;&#x56E0;. &#x4E00;&#x500B;&#x597D;&#x7684;&#x6E2C;&#x8A66;&#x4E0D;&#x61C9;&#x8A72;&#x5728;&#x9047;&#x5230;&#x4E00;&#x9EDE;&#x5C0F;&#x932F;&#x8AA4;&#x5C31;&#x7ACB;&#x523B;&#x9000;&#x51FA;&#x6E2C;&#x8A66;, &#x5B83;&#x61C9;&#x8A72;&#x5690;&#x8A66;&#x5831;&#x544A;&#x66F4;&#x591A;&#x7684;&#x6E2C;&#x8A66;, &#x56E0;&#x6B64;&#x6211;&#x5011;&#x53EF;&#x80FD;&#x5F9E;&#x591A;&#x500B;&#x5931;&#x6557;&#x6E2C;&#x8A66;&#x7684;&#x6A21;&#x5F0F;&#x4E2D;&#x767C;&#x73FE;&#x932F;&#x8AA4;&#x7523;&#x751F;&#x7684;&#x898F;&#x5F8B;.</p>
<p>&#x4E0B;&#x9762;&#x7684;&#x65B7;&#x8A00;&#x51FD;&#x6578;&#x6BD4;&#x8F03;&#x5169;&#x500B;&#x503C;, &#x7136;&#x5F8C;&#x751F;&#x6210;&#x4E00;&#x500B;&#x901A;&#x7528;&#x7684;&#x932F;&#x8AA4;&#x4FE1;&#x606F;, &#x4F75;&#x505C;&#x6B62;&#x7A0B;&#x5E8F;. &#x5B83;&#x5F88;&#x65B9;&#x4FBF;&#x4F7F;&#x7528;&#x4E5F;&#x78BA;&#x5BE6;&#x6709;&#x6548;&#x679C;, &#x4F46;&#x662F;&#x7576;&#x8B58;&#x522B;&#x7684;&#x6642;&#x5019;, &#x932F;&#x8AA4;&#x6642;&#x6253;&#x5370;&#x7684;&#x4FE1;&#x606F;&#x5E7E;&#x4E4E;&#x662F;&#x6C92;&#x6709;&#x50F9;&#x503C;&#x7684;. &#x5B83;&#x4F75;&#x6C92;&#x6709;&#x7232;&#x89E3;&#x6C7A;&#x554F;&#x984C;&#x63D0;&#x4F9B;&#x4E00;&#x500B;&#x5F88;&#x597D;&#x7684;&#x5165;&#x53E3;.</p>
<pre><code class="lang-Go"><span class="hljs-keyword">import</span> (
<span class="hljs-string">&quot;fmt&quot;</span>
@@ -2469,7 +2473,7 @@ FAIL gopl.io/ch11/echo 0.006s
<span class="hljs-comment">// ...</span>
}
</code></pre>
<p>&#x5F9E;&#x9019;&#x500B;&#x610F;&#x7FA9;&#x4E0A;&#x8AAC;, &#x65B7;&#x8A00;&#x51FD;&#x6578;&#x72AF;&#x4E86;&#x904E;&#x65E9;&#x62BD;&#x8C61;&#x7684;&#x932F;&#x8AA4;: &#x50C5;&#x50C5;&#x6E2C;&#x8A66;&#x5169;&#x500B;&#x6574;&#x6578;&#x662F;&#x5426;&#x76F8;&#x540C;, &#x800C;&#x653E;&#x68C4;&#x4E86;&#x6839;&#x64DA;&#x4E0A;&#x4E0B;&#x6587;&#x63D0;&#x4F9B;&#x66F4;&#x6709;&#x610F;&#x7FA9;&#x7684;&#x932F;&#x8AA4;&#x4FE1;&#x606F;&#x7684;&#x505A;&#x6CD5;. &#x6211;&#x5011;&#x53EF;&#x4EE5;&#x6839;&#x64DA;&#x5177;&#x9AD4;&#x7684;&#x932F;&#x8AA4;&#x6253;&#x5370;&#x4E00;&#x500B;&#x66F4;&#x6709;&#x50F9;&#x503C;&#x7684;&#x932F;&#x8AA4;&#x4FE1;&#x606F;, &#x5C31;&#x50CF;&#x4E0B;&#x9762;&#x4F8B;&#x5B50;&#x90A3;&#x6A23;. &#x6E2C;&#x8A66;&#x5728;&#x96BB;&#x6709;&#x4E00;&#x6B21;&#x91CD;&#x8907;&#x7684;&#x6A21;&#x5F0F;&#x9F63;&#x73FE;&#x6642;&#x5F15;&#x5165;&#x62BD;&#x8C61;.</p>
<p>&#x5F9E;&#x9019;&#x500B;&#x610F;&#x7FA9;&#x4E0A;&#x8AAC;, &#x65B7;&#x8A00;&#x51FD;&#x6578;&#x72AF;&#x4E86;&#x904E;&#x65E9;&#x62BD;&#x8C61;&#x7684;&#x932F;&#x8AA4;: &#x50C5;&#x50C5;&#x6E2C;&#x8A66;&#x5169;&#x500B;&#x6574;&#x6578;&#x662F;&#x5426;&#x76F8;&#x540C;, &#x800C;&#x653E;&#x68C4;&#x4E86;&#x6839;&#x64DA;&#x4E0A;&#x4E0B;&#x6587;&#x63D0;&#x4F9B;&#x66F4;&#x6709;&#x610F;&#x7FA9;&#x7684;&#x932F;&#x8AA4;&#x4FE1;&#x606F;&#x7684;&#x505A;&#x6CD5;. &#x6211;&#x5011;&#x53EF;&#x4EE5;&#x6839;&#x64DA;&#x5177;&#x9AD4;&#x7684;&#x932F;&#x8AA4;&#x6253;&#x5370;&#x4E00;&#x500B;&#x66F4;&#x6709;&#x50F9;&#x503C;&#x7684;&#x932F;&#x8AA4;&#x4FE1;&#x606F;, &#x5C31;&#x50CF;&#x4E0B;&#x9762;&#x4F8B;&#x5B50;&#x90A3;&#x6A23;. &#x6E2C;&#x8A66;&#x5728;&#x96BB;&#x6709;&#x4E00;&#x6B21;&#x91CD;&#x8907;&#x7684;&#x6A21;&#x5F0F;&#x51FA;&#x73FE;&#x6642;&#x5F15;&#x5165;&#x62BD;&#x8C61;.</p>
<pre><code class="lang-Go"><span class="hljs-keyword">func</span> TestSplit(t *testing.T) {
s, sep := <span class="hljs-string">&quot;a:b:c&quot;</span>, <span class="hljs-string">&quot;:&quot;</span>
words := strings.Split(s, sep)
@@ -2481,12 +2485,12 @@ FAIL gopl.io/ch11/echo 0.006s
}
</code></pre>
<p>&#x73FE;&#x5728;&#x7684;&#x6E2C;&#x8A66;&#x4E0D;&#x50C5;&#x5831;&#x544A;&#x4E86;&#x8ABF;&#x7528;&#x7684;&#x5177;&#x9AD4;&#x51FD;&#x6578;, &#x5B83;&#x7684;&#x8F38;&#x5165;, &#x548C;&#x7D50;&#x679C;&#x7684;&#x610F;&#x7FA9;; &#x4F75;&#x4E14;&#x6253;&#x5370;&#x7684;&#x771E;&#x5BE6;&#x8FD4;&#x8FF4;&#x7684;&#x503C;&#x548C;&#x671F;&#x671B;&#x8FD4;&#x8FF4;&#x7684;&#x503C;; &#x4F75;&#x4E14;&#x537D;&#x4F7F;&#x65B7;&#x8A00;&#x5931;&#x6557;&#x4F9D;&#x7136;&#x6703;&#x7E7C;&#x7E8C;&#x5690;&#x8A66;&#x904B;&#x884C;&#x66F4;&#x591A;&#x7684;&#x6E2C;&#x8A66;. &#x4E00;&#x65E6;&#x6211;&#x5011;&#x5BEB;&#x4E86;&#x9019;&#x6A23;&#x7D50;&#x69CB;&#x7684;&#x6E2C;&#x8A66;, &#x4E0B;&#x4E00;&#x6B65;&#x81EA;&#x7136;&#x4E0D;&#x662F;&#x7528;&#x66F4;&#x591A;&#x7684;if&#x8A9E;&#x53E5;&#x4F86;&#x64F4;&#x5C55;&#x6E2C;&#x8A66;&#x7528;&#x4F8B;, &#x6211;&#x5011;&#x53EF;&#x4EE5;&#x7528;&#x50CF; IsPalindrome &#x7684;&#x8868;&#x9A45;&#x52D5;&#x6E2C;&#x8A66;&#x90A3;&#x6A23;&#x4F86;&#x6E96;&#x5099;&#x66F4;&#x591A;&#x7684; s, sep &#x6E2C;&#x8A66;&#x7528;&#x4F8B;.</p>
<p>&#x524D;&#x9762;&#x7684;&#x4F8B;&#x5B50;&#x4F75;&#x4E0D;&#x9700;&#x8981;&#x984D;&#x5916;&#x7684;&#x8F14;&#x52A9;&#x51FD;&#x6578;, &#x5982;&#x679C;&#x5982;&#x679C;&#x6709;&#x53EF;&#x4EE5;&#x4F7F;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;&#x66F4;&#x7C21;&#x55AE;&#x7684;&#x65B9;&#x6CD5;&#x6211;&#x5011;&#x4E5F;&#x6A02;&#x610F;&#x63A5;&#x53D7;. (&#x6211;&#x5011;&#x5C07;&#x5728; 13.3&#x7BC0; &#x770B;&#x5230;&#x4E00;&#x500B; reflect.DeepEqual &#x8F14;&#x52A9;&#x51FD;&#x6578;.) &#x958B;&#x59CB;&#x4E00;&#x500B;&#x597D;&#x7684;&#x6E2C;&#x8A66;&#x7684;&#x95DC;&#x9375;&#x662F;&#x901A;&#x904E;&#x5BE6;&#x73FE;&#x4F60;&#x771E;&#x6B63;&#x60F3;&#x8981;&#x7684;&#x5177;&#x9AD4;&#x884C;&#x7232;, &#x7136;&#x5F8C;&#x7E94;&#x662F;&#x8003;&#x616E;&#x7136;&#x5F8C;&#x7C21;&#x5316;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;. &#x6700;&#x597D;&#x7684;&#x7D50;&#x679C;&#x662F;&#x76F4;&#x63A5;&#x5F9E;&#x5EAB;&#x7684;&#x62BD;&#x8C61;&#x63A5;&#x53E3;&#x958B;&#x59CB;, &#x91DD;&#x5C0D;&#x516C;&#x5171;&#x63A5;&#x53E3;&#x7DE8;&#x5BEB;&#x4E00;&#x4E9B;&#x6E2C;&#x8A66;&#x51FD;&#x6578;.</p>
<p><strong>&#x7DF4;&#x7FD2;11.5:</strong> &#x7528;&#x8868;&#x683C;&#x9A45;&#x52D5;&#x7684;&#x6280;&#x8853;&#x64F4;&#x5C55;TestSplit&#x6E2C;&#x8A66;, &#x4F75;&#x6253;&#x5370;&#x671F;&#x671B;&#x7684;&#x8F38;&#x9F63;&#x7D50;&#x679C;.</p>
<p>&#x524D;&#x9762;&#x7684;&#x4F8B;&#x5B50;&#x4F75;&#x4E0D;&#x9700;&#x8981;&#x984D;&#x5916;&#x7684;&#x8F14;&#x52A9;&#x51FD;&#x6578;, &#x5982;&#x679C;&#x5982;&#x679C;&#x6709;&#x53EF;&#x4EE5;&#x4F7F;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;&#x66F4;&#x7C21;&#x55AE;&#x7684;&#x65B9;&#x6CD5;&#x6211;&#x5011;&#x4E5F;&#x6A02;&#x610F;&#x63A5;&#x53D7;. (&#x6211;&#x5011;&#x5C07;&#x5728; 13.3&#x7BC0; &#x770B;&#x5230;&#x4E00;&#x500B; reflect.DeepEqual &#x8F14;&#x52A9;&#x51FD;&#x6578;.) &#x958B;&#x59CB;&#x4E00;&#x500B;&#x597D;&#x7684;&#x6E2C;&#x8A66;&#x7684;&#x95DC;&#x9375;&#x662F;&#x901A;&#x904E;&#x5BE6;&#x73FE;&#x4F60;&#x771E;&#x6B63;&#x60F3;&#x8981;&#x7684;&#x5177;&#x9AD4;&#x884C;&#x7232;, &#x7136;&#x5F8C;&#x624D;&#x662F;&#x8003;&#x616E;&#x7136;&#x5F8C;&#x7C21;&#x5316;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;. &#x6700;&#x597D;&#x7684;&#x7D50;&#x679C;&#x662F;&#x76F4;&#x63A5;&#x5F9E;&#x5EAB;&#x7684;&#x62BD;&#x8C61;&#x63A5;&#x53E3;&#x958B;&#x59CB;, &#x91DD;&#x5C0D;&#x516C;&#x5171;&#x63A5;&#x53E3;&#x7DE8;&#x5BEB;&#x4E00;&#x4E9B;&#x6E2C;&#x8A66;&#x51FD;&#x6578;.</p>
<p><strong>&#x7DF4;&#x7FD2;11.5:</strong> &#x7528;&#x8868;&#x683C;&#x9A45;&#x52D5;&#x7684;&#x6280;&#x8853;&#x64F4;&#x5C55;TestSplit&#x6E2C;&#x8A66;, &#x4F75;&#x6253;&#x5370;&#x671F;&#x671B;&#x7684;&#x8F38;&#x51FA;&#x7D50;&#x679C;.</p>
<h3 id="1126-&#x907F;&#x514D;&#x7684;&#x4E0D;&#x7A69;&#x5B9A;&#x7684;&#x6E2C;&#x8A66;">11.2.6. &#x907F;&#x514D;&#x7684;&#x4E0D;&#x7A69;&#x5B9A;&#x7684;&#x6E2C;&#x8A66;</h3>
<p>&#x5982;&#x679C;&#x4E00;&#x500B;&#x61C9;&#x7528;&#x7A0B;&#x5E8F;&#x5C0D;&#x65BC;&#x65B0;&#x9F63;&#x73FE;&#x7684;&#x4F46;&#x6709;&#x6548;&#x7684;&#x8F38;&#x5165;&#x7D93;&#x5E38;&#x5931;&#x6557;&#x8AAC;&#x660E;&#x7A0B;&#x5E8F;&#x4E0D;&#x5920;&#x7A69;&#x5065;; &#x540C;&#x6A23;&#x5982;&#x679C;&#x4E00;&#x500B;&#x6E2C;&#x8A66;&#x50C5;&#x50C5;&#x56E0;&#x7232;&#x8072;&#x97F3;&#x8B8A;&#x5316;&#x5C31;&#x6703;&#x5C0E;&#x81F4;&#x5931;&#x6557;&#x4E5F;&#x662F;&#x4E0D;&#x5408;&#x908F;&#x8F2F;&#x7684;. &#x5C31;&#x50CF;&#x4E00;&#x500B;&#x4E0D;&#x5920;&#x7A69;&#x5065;&#x7684;&#x7A0B;&#x5E8F;&#x6703;&#x632B;&#x6557;&#x5B83;&#x7684;&#x7528;&#x6236;&#x4E00;&#x6A23;, &#x4E00;&#x500B;&#x8106;&#x5F31;&#x6027;&#x6E2C;&#x8A66;&#x540C;&#x6A23;&#x6703;&#x6FC0;&#x6012;&#x5B83;&#x7684;&#x7DAD;&#x8B77;&#x8005;. &#x6700;&#x8106;&#x5F31;&#x7684;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;&#x6703;&#x5728;&#x7A0B;&#x5E8F;&#x6C92;&#x6709;&#x4EFB;&#x4F55;&#x8B8A;&#x5316;&#x7684;&#x6642;&#x5019;&#x7523;&#x751F;&#x4E0D;&#x540C;&#x7684;&#x7D50;&#x679C;, &#x6642;&#x597D;&#x6642;&#x58DE;, &#x8655;&#x7406;&#x5B83;&#x5011;&#x6703;&#x8017;&#x8CBB;&#x5927;&#x91CF;&#x7684;&#x6642;&#x9593;&#x4F46;&#x662F;&#x4F75;&#x4E0D;&#x6703;&#x5F97;&#x5230;&#x4EFB;&#x4F55;&#x597D;&#x8655;.</p>
<p>&#x7576;&#x4E00;&#x500B;&#x6E2C;&#x8A66;&#x51FD;&#x6578;&#x7523;&#x751F;&#x4E00;&#x500B;&#x8907;&#x96DC;&#x7684;&#x8F38;&#x9F63;&#x5982;&#x4E00;&#x500B;&#x5F88;&#x9577;&#x7684;&#x5B57;&#x7B26;&#x4E32;, &#x6216;&#x4E00;&#x500B;&#x7CBE;&#x5FC3;&#x8A2D;&#x8A08;&#x7684;&#x6578;&#x64DA;&#x7D50;&#x69CB;, &#x6216;&#x4E00;&#x500B;&#x6587;&#x4EF6;, &#x5B83;&#x53EF;&#x4EE5;&#x7528;&#x65BC;&#x548C;&#x9810;&#x8A2D;&#x7684;&#x2018;&#x2018;golden&#x2019;&#x2019;&#x7D50;&#x679C;&#x6578;&#x64DA;&#x5C0D;&#x6BD4;, &#x7528;&#x9019;&#x7A2E;&#x7C21;&#x55AE;&#x65B9;&#x5F0F;&#x5BEB;&#x6E2C;&#x8A66;&#x662F;&#x8A98;&#x4EBA;&#x7684;. &#x4F46;&#x662F;&#x96A8;&#x7740;&#x9805;&#x76EE;&#x7684;&#x767C;&#x5C55;, &#x8F38;&#x9F63;&#x7684;&#x67D0;&#x4E9B;&#x90E8;&#x5206;&#x5F88;&#x53EF;&#x80FD;&#x6703;&#x767C;&#x751F;&#x8B8A;&#x5316;, &#x76E1;&#x7BA1;&#x5F88;&#x53EF;&#x80FD;&#x662F;&#x4E00;&#x500B;&#x6539;&#x9032;&#x7684;&#x5BE6;&#x73FE;&#x5C0E;&#x81F4;&#x7684;. &#x800C;&#x4E14;&#x4E0D;&#x50C5;&#x50C5;&#x662F;&#x8F38;&#x9F63;&#x90E8;&#x5206;, &#x51FD;&#x6578;&#x8907;&#x96DC;&#x8907;&#x88FD;&#x7684;&#x8F38;&#x5165;&#x90E8;&#x5206;&#x53EF;&#x80FD;&#x4E5F;&#x8DDF;&#x7740;&#x8B8A;&#x5316;&#x4E86;, &#x56E0;&#x6B64;&#x6E2C;&#x8A66;&#x4F7F;&#x7528;&#x7684;&#x8F38;&#x5165;&#x4E5F;&#x5C31;&#x4E0D;&#x5728;&#x6709;&#x6548;&#x4E86;.</p>
<p>&#x907F;&#x514D;&#x8106;&#x5F31;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;&#x7684;&#x65B9;&#x6CD5;&#x662F;&#x96BB;&#x6AA2;&#x6E2C;&#x4F60;&#x771E;&#x6B63;&#x95DC;&#x5FC3;&#x7684;&#x5C6C;&#x6027;. &#x4FDD;&#x5B58;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;&#x7684;&#x7C21;&#x6F54;&#x548C;&#x5167;&#x90E8;&#x7D50;&#x69CB;&#x7684;&#x7A69;&#x5B9A;. &#x7279;&#x522B;&#x662F;&#x5C0D;&#x65B7;&#x8A00;&#x90E8;&#x5206;&#x8981;&#x6709;&#x6240;&#x9078;&#x64C7;. &#x4E0D;&#x8981;&#x6AA2;&#x67FB;&#x5B57;&#x7B26;&#x4E32;&#x7684;&#x5168;&#x5339;&#x914D;, &#x4F46;&#x662F;&#x5C0B;&#x627E;&#x76F8;&#x95DC;&#x7684;&#x5B50;&#x5B57;&#x7B26;&#x4E32;, &#x56E0;&#x7232;&#x67D0;&#x4E9B;&#x5B50;&#x5B57;&#x7B26;&#x4E32;&#x5728;&#x9805;&#x76EE;&#x7684;&#x767C;&#x5C55;&#x4E2D;&#x662F;&#x6BD4;&#x8F03;&#x7A69;&#x5B9A;&#x4E0D;&#x8B8A;&#x7684;. &#x901A;&#x5E38;&#x7DE8;&#x5BEB;&#x4E00;&#x500B;&#x91CD;&#x8907;&#x96DC;&#x7684;&#x8F38;&#x9F63;&#x4E2D;&#x63D0;&#x53D6;&#x5FC5;&#x8981;&#x7CBE;&#x83EF;&#x4FE1;&#x606F;&#x4EE5;&#x7528;&#x65BC;&#x65B7;&#x8A00;&#x662F;&#x503C;&#x5F97;&#x7684;, &#x96D6;&#x7136;&#x9019;&#x53EF;&#x80FD;&#x6703;&#x5E36;&#x4F86;&#x5F88;&#x591A;&#x524D;&#x671F;&#x7684;&#x5DE5;&#x4F5C;, &#x4F46;&#x662F;&#x5B83;&#x53EF;&#x4EE5;&#x5E6B;&#x52A9;&#x8FC5;&#x901F;&#x53CA;&#x6642;&#x8129;&#x8907;&#x56E0;&#x7232;&#x9805;&#x76EE;&#x6F14;&#x5316;&#x800C;&#x5C0E;&#x81F4;&#x7684;&#x4E0D;&#x5408;&#x908F;&#x8F2F;&#x7684;&#x5931;&#x6557;&#x6E2C;&#x8A66;.</p>
<p>&#x5982;&#x679C;&#x4E00;&#x500B;&#x61C9;&#x7528;&#x7A0B;&#x5E8F;&#x5C0D;&#x65BC;&#x65B0;&#x51FA;&#x73FE;&#x7684;&#x4F46;&#x6709;&#x6548;&#x7684;&#x8F38;&#x5165;&#x7D93;&#x5E38;&#x5931;&#x6557;&#x8AAC;&#x660E;&#x7A0B;&#x5E8F;&#x4E0D;&#x5920;&#x7A69;&#x5065;; &#x540C;&#x6A23;&#x5982;&#x679C;&#x4E00;&#x500B;&#x6E2C;&#x8A66;&#x50C5;&#x50C5;&#x56E0;&#x7232;&#x8072;&#x97F3;&#x8B8A;&#x5316;&#x5C31;&#x6703;&#x5C0E;&#x81F4;&#x5931;&#x6557;&#x4E5F;&#x662F;&#x4E0D;&#x5408;&#x908F;&#x8F2F;&#x7684;. &#x5C31;&#x50CF;&#x4E00;&#x500B;&#x4E0D;&#x5920;&#x7A69;&#x5065;&#x7684;&#x7A0B;&#x5E8F;&#x6703;&#x632B;&#x6557;&#x5B83;&#x7684;&#x7528;&#x6236;&#x4E00;&#x6A23;, &#x4E00;&#x500B;&#x8106;&#x5F31;&#x6027;&#x6E2C;&#x8A66;&#x540C;&#x6A23;&#x6703;&#x6FC0;&#x6012;&#x5B83;&#x7684;&#x7DAD;&#x8B77;&#x8005;. &#x6700;&#x8106;&#x5F31;&#x7684;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;&#x6703;&#x5728;&#x7A0B;&#x5E8F;&#x6C92;&#x6709;&#x4EFB;&#x4F55;&#x8B8A;&#x5316;&#x7684;&#x6642;&#x5019;&#x7523;&#x751F;&#x4E0D;&#x540C;&#x7684;&#x7D50;&#x679C;, &#x6642;&#x597D;&#x6642;&#x58DE;, &#x8655;&#x7406;&#x5B83;&#x5011;&#x6703;&#x8017;&#x8CBB;&#x5927;&#x91CF;&#x7684;&#x6642;&#x9593;&#x4F46;&#x662F;&#x4F75;&#x4E0D;&#x6703;&#x5F97;&#x5230;&#x4EFB;&#x4F55;&#x597D;&#x8655;.</p>
<p>&#x7576;&#x4E00;&#x500B;&#x6E2C;&#x8A66;&#x51FD;&#x6578;&#x7523;&#x751F;&#x4E00;&#x500B;&#x8907;&#x96DC;&#x7684;&#x8F38;&#x51FA;&#x5982;&#x4E00;&#x500B;&#x5F88;&#x9577;&#x7684;&#x5B57;&#x7B26;&#x4E32;, &#x6216;&#x4E00;&#x500B;&#x7CBE;&#x5FC3;&#x8A2D;&#x8A08;&#x7684;&#x6578;&#x64DA;&#x7D50;&#x69CB;, &#x6216;&#x4E00;&#x500B;&#x6587;&#x4EF6;, &#x5B83;&#x53EF;&#x4EE5;&#x7528;&#x65BC;&#x548C;&#x9810;&#x8A2D;&#x7684;&#x2018;&#x2018;golden&#x2019;&#x2019;&#x7D50;&#x679C;&#x6578;&#x64DA;&#x5C0D;&#x6BD4;, &#x7528;&#x9019;&#x7A2E;&#x7C21;&#x55AE;&#x65B9;&#x5F0F;&#x5BEB;&#x6E2C;&#x8A66;&#x662F;&#x8A98;&#x4EBA;&#x7684;. &#x4F46;&#x662F;&#x96A8;&#x7740;&#x9805;&#x76EE;&#x7684;&#x767C;&#x5C55;, &#x8F38;&#x51FA;&#x7684;&#x67D0;&#x4E9B;&#x90E8;&#x5206;&#x5F88;&#x53EF;&#x80FD;&#x6703;&#x767C;&#x751F;&#x8B8A;&#x5316;, &#x76E1;&#x7BA1;&#x5F88;&#x53EF;&#x80FD;&#x662F;&#x4E00;&#x500B;&#x6539;&#x9032;&#x7684;&#x5BE6;&#x73FE;&#x5C0E;&#x81F4;&#x7684;. &#x800C;&#x4E14;&#x4E0D;&#x50C5;&#x50C5;&#x662F;&#x8F38;&#x51FA;&#x90E8;&#x5206;, &#x51FD;&#x6578;&#x8907;&#x96DC;&#x8907;&#x88FD;&#x7684;&#x8F38;&#x5165;&#x90E8;&#x5206;&#x53EF;&#x80FD;&#x4E5F;&#x8DDF;&#x7740;&#x8B8A;&#x5316;&#x4E86;, &#x56E0;&#x6B64;&#x6E2C;&#x8A66;&#x4F7F;&#x7528;&#x7684;&#x8F38;&#x5165;&#x4E5F;&#x5C31;&#x4E0D;&#x5728;&#x6709;&#x6548;&#x4E86;.</p>
<p>&#x907F;&#x514D;&#x8106;&#x5F31;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;&#x7684;&#x65B9;&#x6CD5;&#x662F;&#x96BB;&#x6AA2;&#x6E2C;&#x4F60;&#x771E;&#x6B63;&#x95DC;&#x5FC3;&#x7684;&#x5C6C;&#x6027;. &#x4FDD;&#x5B58;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;&#x7684;&#x7C21;&#x6F54;&#x548C;&#x5167;&#x90E8;&#x7D50;&#x69CB;&#x7684;&#x7A69;&#x5B9A;. &#x7279;&#x522B;&#x662F;&#x5C0D;&#x65B7;&#x8A00;&#x90E8;&#x5206;&#x8981;&#x6709;&#x6240;&#x9078;&#x64C7;. &#x4E0D;&#x8981;&#x6AA2;&#x67FB;&#x5B57;&#x7B26;&#x4E32;&#x7684;&#x5168;&#x5339;&#x914D;, &#x4F46;&#x662F;&#x5C0B;&#x627E;&#x76F8;&#x95DC;&#x7684;&#x5B50;&#x5B57;&#x7B26;&#x4E32;, &#x56E0;&#x7232;&#x67D0;&#x4E9B;&#x5B50;&#x5B57;&#x7B26;&#x4E32;&#x5728;&#x9805;&#x76EE;&#x7684;&#x767C;&#x5C55;&#x4E2D;&#x662F;&#x6BD4;&#x8F03;&#x7A69;&#x5B9A;&#x4E0D;&#x8B8A;&#x7684;. &#x901A;&#x5E38;&#x7DE8;&#x5BEB;&#x4E00;&#x500B;&#x91CD;&#x8907;&#x96DC;&#x7684;&#x8F38;&#x51FA;&#x4E2D;&#x63D0;&#x53D6;&#x5FC5;&#x8981;&#x7CBE;&#x83EF;&#x4FE1;&#x606F;&#x4EE5;&#x7528;&#x65BC;&#x65B7;&#x8A00;&#x662F;&#x503C;&#x5F97;&#x7684;, &#x96D6;&#x7136;&#x9019;&#x53EF;&#x80FD;&#x6703;&#x5E36;&#x4F86;&#x5F88;&#x591A;&#x524D;&#x671F;&#x7684;&#x5DE5;&#x4F5C;, &#x4F46;&#x662F;&#x5B83;&#x53EF;&#x4EE5;&#x5E6B;&#x52A9;&#x8FC5;&#x901F;&#x53CA;&#x6642;&#x8129;&#x8907;&#x56E0;&#x7232;&#x9805;&#x76EE;&#x6F14;&#x5316;&#x800C;&#x5C0E;&#x81F4;&#x7684;&#x4E0D;&#x5408;&#x908F;&#x8F2F;&#x7684;&#x5931;&#x6557;&#x6E2C;&#x8A66;.</p>
</section>
@@ -2518,7 +2522,7 @@ FAIL gopl.io/ch11/echo 0.006s
<script>
require(["gitbook"], function(gitbook) {
var config = {"highlight":{},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2}};
var config = {"katex":{},"highlight":{},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2}};
gitbook.start(config);
});
</script>

View File

@@ -21,6 +21,10 @@
<link rel="stylesheet" href="../gitbook/style.css">
<link rel="stylesheet" href="../gitbook/plugins/gitbook-plugin-katex/katex.min.css">
<link rel="stylesheet" href="../gitbook/plugins/gitbook-plugin-highlight/website.css">
@@ -44,7 +48,7 @@
<body>
<div class="book" data-level="11.3" data-chapter-title="測試覆蓋率" data-filepath="ch11/ch11-03.md" data-basepath=".." data-revision="Fri Dec 25 2015 12:32:44 GMT+0800 (中国标准时间)">
<div class="book" data-level="11.3" data-chapter-title="測試覆蓋率" data-filepath="ch11/ch11-03.md" data-basepath=".." data-revision="Mon Dec 28 2015 16:03:52 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -238,7 +242,7 @@
<b>1.5.</b>
取URL
取URL
</a>
@@ -253,7 +257,7 @@
<b>1.6.</b>
併發取多個URL
併發取多個URL
</a>
@@ -802,7 +806,7 @@
<b>5.10.</b>
Recover捕異常
Recover捕異常
</a>
@@ -1315,7 +1319,7 @@
<b>8.9.</b>
併發的退
併發的退
</a>
@@ -1834,7 +1838,7 @@
<b>12.7.</b>
取結構體字段標識
取結構體字段標識
</a>
@@ -2080,7 +2084,7 @@ Open a web browser displaying annotated source code:
<p>&#x73FE;&#x5728;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x7528; <code>-coverprofile</code> &#x6A19;&#x8A8C;&#x53C3;&#x6578;&#x91CD;&#x65B0;&#x904B;&#x884C;:</p>
<pre><code>$ go test -run=Coverage -coverprofile=c.out gopl.io/ch7/eval
ok gopl.io/ch7/eval 0.032s coverage: 68.5% of statements
</code></pre><p>&#x9019;&#x500B;&#x6A19;&#x8A8C;&#x53C3;&#x6578;&#x901A;&#x904E;&#x63D2;&#x5165;&#x751F;&#x6210;&#x9264;&#x5B50;&#x4EE3;&#x78BC;&#x4F86;&#x7D71;&#x8A08;&#x8986;&#x84CB;&#x7387;&#x6578;&#x64DA;. &#x4E5F;&#x5C31;&#x662F;&#x8AAC;, &#x5728;&#x904B;&#x884C;&#x6BCF;&#x500B;&#x6E2C;&#x8A66;&#x524D;, &#x5B83;&#x6703;&#x8129;&#x6539;&#x8981;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;&#x7684;&#x526F;&#x672C;, &#x5728;&#x6BCF;&#x500B;&#x584A;&#x90FD;&#x6703;&#x8A2D;&#x7F6E;&#x4E00;&#x500B;&#x5E03;&#x723E;&#x6A19;&#x8A8C;&#x8B8A;&#x91CF;. &#x7576;&#x88AB;&#x8129;&#x6539;&#x5F8C;&#x7684;&#x88AB;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;&#x904B;&#x884C;&#x9000;&#x9F63;&#x6642;, &#x5C07;&#x7D71;&#x8A08;&#x65E5;&#x8A8C;&#x6578;&#x64DA;&#x5BEB;&#x5165; c.out &#x6587;&#x4EF6;, &#x4F75;&#x6253;&#x5370;&#x4E00;&#x90E8;&#x5206;&#x57F7;&#x884C;&#x7684;&#x8A9E;&#x53E5;&#x7684;&#x4E00;&#x500B;&#x7E3D;&#x7D50;. (&#x5982;&#x679C;&#x4F60;&#x9700;&#x8981;&#x7684;&#x662F;&#x6458;&#x8981;,&#x4F7F;&#x7528; <code>go test -cover</code>.)</p>
</code></pre><p>&#x9019;&#x500B;&#x6A19;&#x8A8C;&#x53C3;&#x6578;&#x901A;&#x904E;&#x63D2;&#x5165;&#x751F;&#x6210;&#x9264;&#x5B50;&#x4EE3;&#x78BC;&#x4F86;&#x7D71;&#x8A08;&#x8986;&#x84CB;&#x7387;&#x6578;&#x64DA;. &#x4E5F;&#x5C31;&#x662F;&#x8AAC;, &#x5728;&#x904B;&#x884C;&#x6BCF;&#x500B;&#x6E2C;&#x8A66;&#x524D;, &#x5B83;&#x6703;&#x8129;&#x6539;&#x8981;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;&#x7684;&#x526F;&#x672C;, &#x5728;&#x6BCF;&#x500B;&#x584A;&#x90FD;&#x6703;&#x8A2D;&#x7F6E;&#x4E00;&#x500B;&#x5E03;&#x723E;&#x6A19;&#x8A8C;&#x8B8A;&#x91CF;. &#x7576;&#x88AB;&#x8129;&#x6539;&#x5F8C;&#x7684;&#x88AB;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;&#x904B;&#x884C;&#x9000;&#x51FA;&#x6642;, &#x5C07;&#x7D71;&#x8A08;&#x65E5;&#x8A8C;&#x6578;&#x64DA;&#x5BEB;&#x5165; c.out &#x6587;&#x4EF6;, &#x4F75;&#x6253;&#x5370;&#x4E00;&#x90E8;&#x5206;&#x57F7;&#x884C;&#x7684;&#x8A9E;&#x53E5;&#x7684;&#x4E00;&#x500B;&#x7E3D;&#x7D50;. (&#x5982;&#x679C;&#x4F60;&#x9700;&#x8981;&#x7684;&#x662F;&#x6458;&#x8981;,&#x4F7F;&#x7528; <code>go test -cover</code>.)</p>
<p>&#x5982;&#x679C;&#x4F7F;&#x7528;&#x4E86; <code>-covermode=count</code> &#x6A19;&#x8A8C;&#x53C3;&#x6578;, &#x90A3;&#x9EBD;&#x5C07;&#x5728;&#x6BCF;&#x500B;&#x4EE3;&#x78BC;&#x584A;&#x63D2;&#x5165;&#x4E00;&#x500B;&#x8A08;&#x6578;&#x5668;&#x800C;&#x4E0D;&#x662F;&#x5E03;&#x723E;&#x6A19;&#x8A8C;&#x91CF;. &#x5728;&#x7D71;&#x8A08;&#x7D50;&#x679C;&#x4E2D;&#x8A18;&#x9332;&#x4E86;&#x6BCF;&#x500B;&#x584A;&#x7684;&#x57F7;&#x884C;&#x6B21;&#x6578;, &#x9019;&#x53EF;&#x4EE5;&#x7528;&#x65BC;&#x8861;&#x91CF;&#x54EA;&#x4E9B;&#x662F;&#x88AB;&#x983B;&#x7E41;&#x57F7;&#x884C;&#x7684;&#x71B1;&#x9EDE;&#x4EE3;&#x78BC;.</p>
<p>&#x7232;&#x4E86;&#x6536;&#x96C6;&#x6578;&#x64DA;, &#x6211;&#x5011;&#x904B;&#x884C;&#x4E86;&#x6E2C;&#x8A66;&#x8986;&#x84CB;&#x7387;&#x5DE5;&#x5177;, &#x6253;&#x5370;&#x4E86;&#x6E2C;&#x8A66;&#x65E5;&#x8A8C;, &#x751F;&#x6210;&#x4E00;&#x500B;HTML&#x5831;&#x544A;, &#x7136;&#x5F8C;&#x5728;&#x700F;&#x89BD;&#x5668;&#x4E2D;&#x6253;&#x958B;(&#x5716;11.3).</p>
<pre><code>$ go tool cover -html=c.out
@@ -2120,7 +2124,7 @@ ok gopl.io/ch7/eval 0.032s coverage: 68.5% of statements
<script>
require(["gitbook"], function(gitbook) {
var config = {"highlight":{},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2}};
var config = {"katex":{},"highlight":{},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2}};
gitbook.start(config);
});
</script>

View File

@@ -21,6 +21,10 @@
<link rel="stylesheet" href="../gitbook/style.css">
<link rel="stylesheet" href="../gitbook/plugins/gitbook-plugin-katex/katex.min.css">
<link rel="stylesheet" href="../gitbook/plugins/gitbook-plugin-highlight/website.css">
@@ -44,7 +48,7 @@
<body>
<div class="book" data-level="11.4" data-chapter-title="基準測試" data-filepath="ch11/ch11-04.md" data-basepath=".." data-revision="Fri Dec 25 2015 12:32:44 GMT+0800 (中国标准时间)">
<div class="book" data-level="11.4" data-chapter-title="基準測試" data-filepath="ch11/ch11-04.md" data-basepath=".." data-revision="Mon Dec 28 2015 16:03:52 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -238,7 +242,7 @@
<b>1.5.</b>
取URL
取URL
</a>
@@ -253,7 +257,7 @@
<b>1.6.</b>
併發取多個URL
併發取多個URL
</a>
@@ -802,7 +806,7 @@
<b>5.10.</b>
Recover捕異常
Recover捕異常
</a>
@@ -1315,7 +1319,7 @@
<b>8.9.</b>
併發的退
併發的退
</a>
@@ -1834,7 +1838,7 @@
<b>12.7.</b>
取結構體字段標識
取結構體字段標識
</a>
@@ -2085,7 +2089,7 @@ BenchmarkIsPalindrome 2000000 807 ns/op 128 B/op 1 allocs/op
<p>&#x901A;&#x904E;&#x51FD;&#x6578;&#x53C3;&#x6578;&#x4F86;&#x6307;&#x5B9A;&#x8F38;&#x5165;&#x7684;&#x5927;&#x5C0F;, &#x4F46;&#x662F;&#x53C3;&#x6578;&#x8B8A;&#x91CF;&#x5C0D;&#x65BC;&#x6BCF;&#x500B;&#x5177;&#x9AD4;&#x7684;&#x57FA;&#x6E96;&#x6E2C;&#x8A66;&#x90FD;&#x662F;&#x56FA;&#x5B9A;&#x7684;. &#x8981;&#x907F;&#x514D;&#x76F4;&#x63A5;&#x8129;&#x6539; b.N &#x4F86;&#x63A7;&#x88FD;&#x8F38;&#x5165;&#x7684;&#x5927;&#x5C0F;. &#x9664;&#x975E;&#x4F60;&#x5C07;&#x5B83;&#x4F5C;&#x7232;&#x4E00;&#x500B;&#x56FA;&#x5B9A;&#x5927;&#x5C0F;&#x7684;&#x8FED;&#x4EE3;&#x8A08;&#x7B97;&#x8F38;&#x5165;, &#x5426;&#x5247;&#x57FA;&#x6E96;&#x6E2C;&#x8A66;&#x7684;&#x7D50;&#x679C;&#x5C07;&#x6BEB;&#x7121;&#x610F;&#x7FA9;.</p>
<p>&#x57FA;&#x6E96;&#x6E2C;&#x8A66;&#x5C0D;&#x65BC;&#x7DE8;&#x5BEB;&#x4EE3;&#x78BC;&#x662F;&#x5F88;&#x6709;&#x5E6B;&#x52A9;&#x7684;, &#x4F46;&#x662F;&#x537D;&#x4F7F;&#x5DE5;&#x4F5C;&#x5B8C;&#x6210;&#x4E86;&#x61C9;&#x61C9;&#x7576;&#x4FDD;&#x5B58;&#x57FA;&#x6E96;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;. &#x56E0;&#x7232;&#x96A8;&#x7740;&#x9805;&#x76EE;&#x7684;&#x767C;&#x5C55;, &#x6216;&#x8005;&#x662F;&#x8F38;&#x5165;&#x7684;&#x589E;&#x52A0;, &#x6216;&#x8005;&#x662F;&#x90E8;&#x7F72;&#x5230;&#x65B0;&#x7684;&#x64CD;&#x4F5C;&#x7E6B;&#x7D71;&#x6216;&#x4E0D;&#x540C;&#x7684;&#x8655;&#x7406;&#x5668;, &#x6211;&#x5011;&#x53EF;&#x4EE5;&#x518D;&#x6B21;&#x7528;&#x57FA;&#x6E96;&#x6E2C;&#x8A66;&#x4F86;&#x5E6B;&#x52A9;&#x6211;&#x5011;&#x6539;&#x9032;&#x8A2D;&#x8A08;.</p>
<p><strong>&#x7DF4;&#x7FD2; 11.6:</strong> &#x7232; 2.6.2&#x7BC0; &#x7684; &#x7DF4;&#x7FD2; 2.4 &#x548C; &#x7DF4;&#x7FD2; 2.5 &#x7684; PopCount &#x51FD;&#x6578;&#x7DE8;&#x5BEB;&#x57FA;&#x6E96;&#x6E2C;&#x8A66;. &#x770B;&#x770B;&#x57FA;&#x65BC;&#x8868;&#x683C;&#x7B97;&#x6CD5;&#x5728;&#x4E0D;&#x540C;&#x60C5;&#x6CC1;&#x4E0B;&#x7684;&#x6027;&#x80FD;.</p>
<p><strong>&#x7DF4;&#x7FD2; 11.7:</strong> &#x7232; *IntSet (&#xA7;6.5) &#x7684; Add, UnionWith &#x548C; &#x5176;&#x4ED6;&#x65B9;&#x6CD5;&#x7DE8;&#x5BEB;&#x57FA;&#x6E96;&#x6E2C;&#x8A66;, &#x4F7F;&#x7528;&#x5927;&#x91CF;&#x96A8;&#x6A5F;&#x9F63;&#x5165;. &#x4F60;&#x53EF;&#x4EE5;&#x8B93;&#x9019;&#x4E9B;&#x65B9;&#x6CD5;&#x8DD1;&#x591A;&#x5FEB;? &#x9078;&#x64C7;&#x5B57;&#x7684;&#x5927;&#x5C0F;&#x5C0D;&#x65BC;&#x6027;&#x80FD;&#x7684;&#x5F71;&#x97FF;&#x5982;&#x4F55;? IntSet &#x548C;&#x57FA;&#x65BC;&#x5167;&#x5EFA; map &#x7684;&#x5BE6;&#x73FE;&#x76F8;&#x6BD4;&#x6709;&#x591A;&#x5FEB;?</p>
<p><strong>&#x7DF4;&#x7FD2; 11.7:</strong> &#x7232; *IntSet (&#xA7;6.5) &#x7684; Add, UnionWith &#x548C; &#x5176;&#x4ED6;&#x65B9;&#x6CD5;&#x7DE8;&#x5BEB;&#x57FA;&#x6E96;&#x6E2C;&#x8A66;, &#x4F7F;&#x7528;&#x5927;&#x91CF;&#x96A8;&#x6A5F;&#x51FA;&#x5165;. &#x4F60;&#x53EF;&#x4EE5;&#x8B93;&#x9019;&#x4E9B;&#x65B9;&#x6CD5;&#x8DD1;&#x591A;&#x5FEB;? &#x9078;&#x64C7;&#x5B57;&#x7684;&#x5927;&#x5C0F;&#x5C0D;&#x65BC;&#x6027;&#x80FD;&#x7684;&#x5F71;&#x97FF;&#x5982;&#x4F55;? IntSet &#x548C;&#x57FA;&#x65BC;&#x5167;&#x5EFA; map &#x7684;&#x5BE6;&#x73FE;&#x76F8;&#x6BD4;&#x6709;&#x591A;&#x5FEB;?</p>
</section>
@@ -2117,7 +2121,7 @@ BenchmarkIsPalindrome 2000000 807 ns/op 128 B/op 1 allocs/op
<script>
require(["gitbook"], function(gitbook) {
var config = {"highlight":{},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2}};
var config = {"katex":{},"highlight":{},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2}};
gitbook.start(config);
});
</script>

View File

@@ -21,6 +21,10 @@
<link rel="stylesheet" href="../gitbook/style.css">
<link rel="stylesheet" href="../gitbook/plugins/gitbook-plugin-katex/katex.min.css">
<link rel="stylesheet" href="../gitbook/plugins/gitbook-plugin-highlight/website.css">
@@ -44,7 +48,7 @@
<body>
<div class="book" data-level="11.5" data-chapter-title="剖析" data-filepath="ch11/ch11-05.md" data-basepath=".." data-revision="Fri Dec 25 2015 12:32:44 GMT+0800 (中国标准时间)">
<div class="book" data-level="11.5" data-chapter-title="剖析" data-filepath="ch11/ch11-05.md" data-basepath=".." data-revision="Mon Dec 28 2015 16:03:52 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -238,7 +242,7 @@
<b>1.5.</b>
取URL
取URL
</a>
@@ -253,7 +257,7 @@
<b>1.6.</b>
併發取多個URL
併發取多個URL
</a>
@@ -802,7 +806,7 @@
<b>5.10.</b>
Recover捕異常
Recover捕異常
</a>
@@ -1315,7 +1319,7 @@
<b>8.9.</b>
併發的退
併發的退
</a>
@@ -1834,7 +1838,7 @@
<b>12.7.</b>
取結構體字段標識
取結構體字段標識
</a>
@@ -2023,13 +2027,13 @@
<p>&#x6E2C;&#x91CF;&#x57FA;&#x6E96;&#x5C0D;&#x65BC;&#x8861;&#x91CF;&#x7279;&#x5B9A;&#x64CD;&#x4F5C;&#x7684;&#x6027;&#x80FD;&#x662F;&#x6709;&#x5E6B;&#x52A9;&#x7684;, &#x4F46;&#x662F;, &#x7576;&#x6211;&#x5011;&#x8996;&#x5716;&#x8B93;&#x7A0B;&#x5E8F;&#x8DD1;&#x7684;&#x66F4;&#x5FEB;&#x7684;&#x6642;&#x5019;, &#x6211;&#x5011;&#x901A;&#x5E38;&#x4F75;&#x4E0D;&#x77E5;&#x9053;&#x5F9E;&#x54EA;&#x91CC;&#x958B;&#x59CB;&#x512A;&#x5316;. &#x6BCF;&#x500B;&#x78BC;&#x8FB2;&#x90FD;&#x61C9;&#x8A72;&#x77E5;&#x9053; Donald Knuth &#x5728;1974&#x5E74;&#x7684; &#x2018;&#x2018;Structured Programming with go to Statements&#x2019;&#x2019; &#x4E0A;&#x6240;&#x8AAC;&#x7684;&#x683C;&#x8A00;. &#x96D6;&#x7136;&#x7D93;&#x5E38;&#x88AB;&#x89E3;&#x8B80;&#x7232;&#x4E0D;&#x91CD;&#x8996;&#x6027;&#x80FD;&#x7684;&#x610F;&#x601D;, &#x4F46;&#x662F;&#x5F9E;&#x539F;&#x6587;&#x6211;&#x5011;&#x53EF;&#x4EE5;&#x770B;&#x5230;&#x4E0D;&#x540C;&#x7684;&#x542B;&#x7FA9;:</p>
<blockquote>
<p>&#x6BEB;&#x7121;&#x7591;&#x554F;, &#x6548;&#x7387;&#x6703;&#x5C0E;&#x81F4;&#x5404;&#x7A2E;&#x6FEB;&#x7528;. &#x7A0B;&#x5E8F;&#x54E1;&#x9700;&#x8981;&#x6D6A;&#x8CBB;&#x5927;&#x91CF;&#x7684;&#x6642;&#x9593;&#x601D;&#x8003;, &#x6216;&#x8005;&#x64D4;&#x5FC3;, &#x88AB;&#x90E8;&#x5206;&#x7A0B;&#x5E8F;&#x7684;&#x901F;&#x5EA6;&#x6240;&#x69A6;&#x64FE;, &#x5BE6;&#x969B;&#x4E0A;&#x9019;&#x4E9B;&#x5690;&#x8A66;&#x63D0;&#x965E;&#x6548;&#x7387;&#x7684;&#x884C;&#x7232;&#x53EF;&#x80FD;&#x7523;&#x751F;&#x5F37;&#x70C8;&#x7684;&#x8CA0;&#x9762;&#x5F71;&#x97FF;, &#x7279;&#x522B;&#x662F;&#x7576;&#x8ABF;&#x8A66;&#x548C;&#x7DAD;&#x8B77;&#x7684;&#x6642;&#x5019;. &#x6211;&#x5011;&#x4E0D;&#x61C9;&#x8A72;&#x904E;&#x5EA6;&#x7CFE;&#x7D50;&#x65BC;&#x7D30;&#x7BC0;&#x7684;&#x512A;&#x5316;, &#x61C9;&#x8A72;&#x8AAC;&#x7D04;97%&#x7684;&#x5834;&#x666F;: &#x904E;&#x65E9;&#x7684;&#x512A;&#x5316;&#x662F;&#x842C;&#x60E1;&#x4E4B;&#x6E90;.</p>
<p>&#x6211;&#x5011;&#x7576;&#x7136;&#x4E0D;&#x61C9;&#x8A72;&#x653E;&#x68C4;&#x90A3;&#x95DC;&#x9375;&#x7684;3%&#x7684;&#x6A5F;&#x6703;. &#x4E00;&#x500B;&#x597D;&#x7684;&#x7A0B;&#x5E8F;&#x54E1;&#x4E0D;&#x6703;&#x56E0;&#x7232;&#x9019;&#x500B;&#x7406;&#x7531;&#x800C;&#x6EFF;&#x8DB3;, &#x4ED6;&#x5011;&#x6703;&#x660E;&#x667A;&#x5730;&#x89C0;&#x5BDF;&#x548C;&#x8B58;&#x522B;&#x54EA;&#x4E9B;&#x662F;&#x95DC;&#x9375;&#x7684;&#x4EE3;&#x78BC;; &#x4F46;&#x662F;&#x96BB;&#x6709;&#x5728;&#x95DC;&#x9375;&#x4EE3;&#x78BC;&#x5DF2;&#x7D93;&#x88AB;&#x78BA;&#x8A8D;&#x7684;&#x524D;&#x63D0;&#x4E0B;&#x7E94;&#x6703;&#x9032;&#x884C;&#x512A;&#x5316;. &#x5C0D;&#x65BC;&#x5224;&#x65B7;&#x54EA;&#x4E9B;&#x90E8;&#x5206;&#x662F;&#x95DC;&#x9375;&#x4EE3;&#x78BC;&#x662F;&#x7D93;&#x5E38;&#x5BB9;&#x6613;&#x72AF;&#x7D93;&#x9A57;&#x6027;&#x932F;&#x8AA4;&#x7684;&#x5730;&#x65B9;, &#x56E0;&#x6B64;&#x7A0B;&#x5E8F;&#x54E1;&#x666E;&#x901A;&#x4F7F;&#x7528;&#x7684;&#x6E2C;&#x91CF;&#x5DE5;&#x5177;, &#x4F7F;&#x5F97;&#x4ED6;&#x5011;&#x7684;&#x76F4;&#x89BA;&#x5F88;&#x4E0D;&#x9760;&#x8B5C;.</p>
<p>&#x6211;&#x5011;&#x7576;&#x7136;&#x4E0D;&#x61C9;&#x8A72;&#x653E;&#x68C4;&#x90A3;&#x95DC;&#x9375;&#x7684;3%&#x7684;&#x6A5F;&#x6703;. &#x4E00;&#x500B;&#x597D;&#x7684;&#x7A0B;&#x5E8F;&#x54E1;&#x4E0D;&#x6703;&#x56E0;&#x7232;&#x9019;&#x500B;&#x7406;&#x7531;&#x800C;&#x6EFF;&#x8DB3;, &#x4ED6;&#x5011;&#x6703;&#x660E;&#x667A;&#x5730;&#x89C0;&#x5BDF;&#x548C;&#x8B58;&#x522B;&#x54EA;&#x4E9B;&#x662F;&#x95DC;&#x9375;&#x7684;&#x4EE3;&#x78BC;; &#x4F46;&#x662F;&#x96BB;&#x6709;&#x5728;&#x95DC;&#x9375;&#x4EE3;&#x78BC;&#x5DF2;&#x7D93;&#x88AB;&#x78BA;&#x8A8D;&#x7684;&#x524D;&#x63D0;&#x4E0B;&#x624D;&#x6703;&#x9032;&#x884C;&#x512A;&#x5316;. &#x5C0D;&#x65BC;&#x5224;&#x65B7;&#x54EA;&#x4E9B;&#x90E8;&#x5206;&#x662F;&#x95DC;&#x9375;&#x4EE3;&#x78BC;&#x662F;&#x7D93;&#x5E38;&#x5BB9;&#x6613;&#x72AF;&#x7D93;&#x9A57;&#x6027;&#x932F;&#x8AA4;&#x7684;&#x5730;&#x65B9;, &#x56E0;&#x6B64;&#x7A0B;&#x5E8F;&#x54E1;&#x666E;&#x901A;&#x4F7F;&#x7528;&#x7684;&#x6E2C;&#x91CF;&#x5DE5;&#x5177;, &#x4F7F;&#x5F97;&#x4ED6;&#x5011;&#x7684;&#x76F4;&#x89BA;&#x5F88;&#x4E0D;&#x9760;&#x8B5C;.</p>
</blockquote>
<p>&#x7576;&#x6211;&#x5011;&#x60F3;&#x4ED4;&#x7D30;&#x89C0;&#x5BDF;&#x6211;&#x5011;&#x7A0B;&#x5E8F;&#x7684;&#x904B;&#x884C;&#x901F;&#x5EA6;&#x7684;&#x6642;&#x5019;, &#x6700;&#x597D;&#x7684;&#x6280;&#x8853;&#x662F;&#x5982;&#x4F55;&#x8B58;&#x522B;&#x95DC;&#x9375;&#x4EE3;&#x78BC;. &#x81EA;&#x52D5;&#x5316;&#x7684;&#x5256;&#x6790;&#x6280;&#x8853;&#x662F;&#x57FA;&#x65BC;&#x7A0B;&#x5E8F;&#x57F7;&#x884C;&#x671F;&#x9593;&#x4E00;&#x4E9B;&#x62BD;&#x6A23;&#x6578;&#x64DA;, &#x7136;&#x5F8C;&#x63A8;&#x65B7;&#x5F8C;&#x9762;&#x7684;&#x57F7;&#x884C;&#x72C0;&#x614B;; &#x6700;&#x7D42;&#x7523;&#x751F;&#x4E00;&#x500B;&#x904B;&#x884C;&#x6642;&#x9593;&#x7684;&#x7D71;&#x8A08;&#x6578;&#x64DA;&#x6587;&#x4EF6;.</p>
<p>Go&#x8A9E;&#x8A00;&#x652F;&#x6301;&#x591A;&#x7A2E;&#x985E;&#x578B;&#x7684;&#x5256;&#x6790;&#x6027;&#x80FD;&#x5206;&#x6790;, &#x6BCF;&#x4E00;&#x7A2E;&#x95DC;&#x8A3B;&#x4E0D;&#x540C;&#x7684;&#x65B9;&#x9762;, &#x4F46;&#x5B83;&#x5011;&#x90FD;&#x6D89;&#x53CA;&#x5230;&#x6BCF;&#x500B;&#x91C7;&#x6A23;&#x8A18;&#x9332;&#x7684;&#x611F;&#x8208;&#x8DA3;&#x7684;&#x4E00;&#x7E6B;&#x5217;&#x4E8B;&#x4EF6;&#x6D88;&#x606F;, &#x6BCF;&#x500B;&#x4E8B;&#x4EF6;&#x90FD;&#x5305;&#x542B;&#x51FD;&#x6578;&#x8ABF;&#x7528;&#x6642;&#x51FD;&#x6578;&#x8ABF;&#x7528;&#x5806;&#x68E7;&#x7684;&#x4FE1;&#x606F;. &#x5167;&#x5EFA;&#x7684; <code>go test</code> &#x5DE5;&#x5177;&#x5C0D;&#x5E7E;&#x7A2E;&#x5206;&#x6790;&#x65B9;&#x5F0F;&#x90FD;&#x63D0;&#x4F9B;&#x4E86;&#x652F;&#x6301;.</p>
<p>CPU&#x5206;&#x6790;&#x6587;&#x4EF6;&#x6A19;&#x8B58;&#x4E86;&#x51FD;&#x6578;&#x57F7;&#x884C;&#x6642;&#x6240;&#x9700;&#x8981;&#x7684;CPU&#x6642;&#x9593;. &#x7576;&#x524D;&#x904B;&#x884C;&#x7684;&#x7E6B;&#x7D71;&#x7DDA;&#x7A0B;&#x5728;&#x6BCF;&#x9694;&#x5E7E;&#x6BEB;&#x79D2;&#x90FD;&#x6703;&#x9047;&#x5230;&#x64CD;&#x4F5C;&#x7E6B;&#x7D71;&#x7684;&#x4E2D;&#x65B7;&#x4E8B;&#x4EF6;, &#x6BCF;&#x6B21;&#x4E2D;&#x65B7;&#x6642;&#x90FD;&#x6703;&#x8A18;&#x9332;&#x4E00;&#x500B;&#x5206;&#x6790;&#x6587;&#x4EF6;&#x7136;&#x5F8C;&#x6062;&#x8907;&#x6B63;&#x5E38;&#x7684;&#x904B;&#x884C;.</p>
<p>&#x5806;&#x5206;&#x6790;&#x5247;&#x8A18;&#x9332;&#x4E86;&#x7A0B;&#x5E8F;&#x7684;&#x5167;&#x5B58;&#x4F7F;&#x7528;&#x60C5;&#x6CC1;. &#x6BCF;&#x500B;&#x5167;&#x5B58;&#x5206;&#x914D;&#x64CD;&#x4F5C;&#x90FD;&#x6703;&#x89F8;&#x767C;&#x5167;&#x90E8;&#x5E73;&#x5747;&#x5167;&#x5B58;&#x5206;&#x914D;&#x4F8B;&#x7A0B;, &#x6BCF;&#x500B; 512KB &#x7684;&#x5167;&#x5B58;&#x7533;&#x8ACB;&#x90FD;&#x6703;&#x89F8;&#x767C;&#x4E00;&#x500B;&#x4E8B;&#x4EF6;.</p>
<p>&#x963B;&#x585E;&#x5206;&#x6790;&#x5247;&#x8A18;&#x9332;&#x4E86;goroutine&#x6700;&#x5927;&#x7684;&#x963B;&#x585E;&#x64CD;&#x4F5C;, &#x4F8B;&#x5982;&#x7E6B;&#x7D71;&#x8ABF;&#x7528;, &#x7BA1;&#x9053;&#x767C;&#x9001;&#x548C;&#x63A5;&#x6536;, &#x9084;&#x6709;&#x7A6B;&#x53D6;&#x9396;&#x7B49;. &#x5206;&#x6790;&#x5EAB;&#x6703;&#x8A18;&#x9332;&#x6BCF;&#x500B;goroutine&#x88AB;&#x963B;&#x585E;&#x6642;&#x7684;&#x76F8;&#x95DC;&#x64CD;&#x4F5C;.</p>
<p>&#x963B;&#x585E;&#x5206;&#x6790;&#x5247;&#x8A18;&#x9332;&#x4E86;goroutine&#x6700;&#x5927;&#x7684;&#x963B;&#x585E;&#x64CD;&#x4F5C;, &#x4F8B;&#x5982;&#x7E6B;&#x7D71;&#x8ABF;&#x7528;, &#x7BA1;&#x9053;&#x767C;&#x9001;&#x548C;&#x63A5;&#x6536;, &#x9084;&#x6709;&#x7372;&#x53D6;&#x9396;&#x7B49;. &#x5206;&#x6790;&#x5EAB;&#x6703;&#x8A18;&#x9332;&#x6BCF;&#x500B;goroutine&#x88AB;&#x963B;&#x585E;&#x6642;&#x7684;&#x76F8;&#x95DC;&#x64CD;&#x4F5C;.</p>
<p>&#x5728;&#x6E2C;&#x8A66;&#x74B0;&#x5883;&#x4E0B;&#x96BB;&#x9700;&#x8981;&#x4E00;&#x500B;&#x6A19;&#x8A8C;&#x53C3;&#x6578;&#x5C31;&#x53EF;&#x4EE5;&#x751F;&#x6210;&#x5404;&#x7A2E;&#x5206;&#x6790;&#x6587;&#x4EF6;. &#x7576;&#x4E00;&#x6B21;&#x4F7F;&#x7528;&#x591A;&#x500B;&#x6A19;&#x8A8C;&#x53C3;&#x6578;&#x6642;&#x9700;&#x8981;&#x7576;&#x5FC3;, &#x56E0;&#x7232;&#x5206;&#x6790;&#x64CD;&#x4F5C;&#x672C;&#x8EAB;&#x4E5F;&#x53EF;&#x80FD;&#x6703;&#x5F71;&#x50CF;&#x7A0B;&#x5E8F;&#x7684;&#x904B;&#x884C;.</p>
<pre><code>$ go test -cpuprofile=cpu.out
$ go test -blockprofile=block.out
@@ -2060,7 +2064,7 @@ Showing top 10 nodes out of 166 (cum &gt;= 60ms)
60ms 1.67% 68.80% 190ms 5.29% math/big.nat.montgomery
50ms 1.39% 70.19% 50ms 1.39% crypto/elliptic.p256ReduceCarry
50ms 1.39% 71.59% 60ms 1.67% crypto/elliptic.p256Sum
</code></pre><p>&#x53C3;&#x6578; <code>-text</code> &#x6A19;&#x8A8C;&#x53C3;&#x6578;&#x7528;&#x65BC;&#x6307;&#x5B9A;&#x8F38;&#x9F63;&#x683C;&#x5F0F;, &#x5728;&#x9019;&#x91CC;&#x6BCF;&#x884C;&#x662F;&#x4E00;&#x500B;&#x51FD;&#x6578;, &#x6839;&#x64DA;&#x4F7F;&#x7528;CPU&#x7684;&#x6642;&#x9593;&#x4F86;&#x6392;&#x5E8F;. &#x5176;&#x4E2D; <code>-nodecount=10</code> &#x6A19;&#x8A8C;&#x53C3;&#x6578;&#x9650;&#x88FD;&#x4E86;&#x96BB;&#x8F38;&#x9F63;&#x524D;10&#x884C;&#x7684;&#x7D50;&#x679C;. &#x5C0D;&#x65BC;&#x56B4;&#x91CD;&#x7684;&#x6027;&#x80FD;&#x554F;&#x984C;, &#x9019;&#x500B;&#x6587;&#x672C;&#x683C;&#x5F0F;&#x57FA;&#x672C;&#x53EF;&#x4EE5;&#x5E6B;&#x52A9;&#x67FB;&#x660E;&#x539F;&#x56E0;&#x4E86;.</p>
</code></pre><p>&#x53C3;&#x6578; <code>-text</code> &#x6A19;&#x8A8C;&#x53C3;&#x6578;&#x7528;&#x65BC;&#x6307;&#x5B9A;&#x8F38;&#x51FA;&#x683C;&#x5F0F;, &#x5728;&#x9019;&#x91CC;&#x6BCF;&#x884C;&#x662F;&#x4E00;&#x500B;&#x51FD;&#x6578;, &#x6839;&#x64DA;&#x4F7F;&#x7528;CPU&#x7684;&#x6642;&#x9593;&#x4F86;&#x6392;&#x5E8F;. &#x5176;&#x4E2D; <code>-nodecount=10</code> &#x6A19;&#x8A8C;&#x53C3;&#x6578;&#x9650;&#x88FD;&#x4E86;&#x96BB;&#x8F38;&#x51FA;&#x524D;10&#x884C;&#x7684;&#x7D50;&#x679C;. &#x5C0D;&#x65BC;&#x56B4;&#x91CD;&#x7684;&#x6027;&#x80FD;&#x554F;&#x984C;, &#x9019;&#x500B;&#x6587;&#x672C;&#x683C;&#x5F0F;&#x57FA;&#x672C;&#x53EF;&#x4EE5;&#x5E6B;&#x52A9;&#x67FB;&#x660E;&#x539F;&#x56E0;&#x4E86;.</p>
<p>&#x9019;&#x500B;&#x6982;&#x8981;&#x6587;&#x4EF6;&#x544A;&#x8A34;&#x6211;&#x5011;, HTTPS&#x57FA;&#x6E96;&#x6E2C;&#x8A66;&#x4E2D; <code>crypto/elliptic.p256ReduceDegree</code> &#x51FD;&#x6578;&#x5360;&#x7528;&#x4E86;&#x5C07;&#x8FD1;&#x4E00;&#x822C;&#x7684;CPU&#x8CC7;&#x6E90;. &#x76F8;&#x6BD4;&#x4E4B;&#x4E0B;, &#x5982;&#x679C;&#x4E00;&#x500B;&#x6982;&#x8981;&#x6587;&#x4EF6;&#x4E2D;&#x4E3B;&#x8981;&#x662F;runtime&#x5305;&#x7684;&#x5167;&#x5B58;&#x5206;&#x914D;&#x7684;&#x51FD;&#x6578;, &#x90A3;&#x9EBD;&#x6E1B;&#x5C11;&#x5167;&#x5B58;&#x6D88;&#x8017;&#x53EF;&#x80FD;&#x662F;&#x4E00;&#x500B;&#x503C;&#x5F97;&#x5690;&#x8A66;&#x7684;&#x512A;&#x5316;&#x7B56;&#x7565;.</p>
<p>&#x5C0D;&#x65BC;&#x4E00;&#x4E9B;&#x66F4;&#x5FAE;&#x5999;&#x7684;&#x554F;&#x984C;, &#x4F60;&#x53EF;&#x80FD;&#x9700;&#x8981;&#x4F7F;&#x7528; pprof &#x7684;&#x5716;&#x5F62;&#x986F;&#x793A;&#x529F;&#x80FD;. &#x9019;&#x500B;&#x9700;&#x8981;&#x5B89;&#x88DD; GraphViz &#x5DE5;&#x5177;, &#x53EF;&#x4EE5;&#x5F9E; www.graphviz.org &#x4E0B;&#x8F09;. &#x53C3;&#x6578; <code>-web</code> &#x7528;&#x65BC;&#x751F;&#x6210;&#x4E00;&#x500B;&#x6709;&#x5411;&#x5716;&#x6587;&#x4EF6;, &#x5305;&#x542B;CPU&#x7684;&#x4F7F;&#x7528;&#x548C;&#x6700;&#x7279;&#x9EDE;&#x7684;&#x51FD;&#x6578;&#x7B49;&#x4FE1;&#x606F;.</p>
<p>&#x9019;&#x4E00;&#x7BC0;&#x6211;&#x5011;&#x96BB;&#x662F;&#x7C21;&#x55AE;&#x770B;&#x4E86;&#x4E0B;Go&#x8A9E;&#x8A00;&#x7684;&#x5206;&#x6790;&#x64DA;&#x5DE5;&#x5177;. &#x5982;&#x679C;&#x60F3;&#x4E86;&#x89E3;&#x66F4;&#x591A;, &#x53EF;&#x4EE5;&#x95B2;&#x8B80; Go&#x5B98;&#x65B9;&#x535A;&#x5BA2;&#x7684; &#x2018;&#x2018;Pro&#xFB01;ling Go Programs&#x2019;&#x2019; &#x4E00;&#x6587;.</p>
@@ -2095,7 +2099,7 @@ Showing top 10 nodes out of 166 (cum &gt;= 60ms)
<script>
require(["gitbook"], function(gitbook) {
var config = {"highlight":{},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2}};
var config = {"katex":{},"highlight":{},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2}};
gitbook.start(config);
});
</script>

View File

@@ -21,6 +21,10 @@
<link rel="stylesheet" href="../gitbook/style.css">
<link rel="stylesheet" href="../gitbook/plugins/gitbook-plugin-katex/katex.min.css">
<link rel="stylesheet" href="../gitbook/plugins/gitbook-plugin-highlight/website.css">
@@ -44,7 +48,7 @@
<body>
<div class="book" data-level="11.6" data-chapter-title="示例函數" data-filepath="ch11/ch11-06.md" data-basepath=".." data-revision="Fri Dec 25 2015 12:32:44 GMT+0800 (中国标准时间)">
<div class="book" data-level="11.6" data-chapter-title="示例函數" data-filepath="ch11/ch11-06.md" data-basepath=".." data-revision="Mon Dec 28 2015 16:03:52 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -238,7 +242,7 @@
<b>1.5.</b>
取URL
取URL
</a>
@@ -253,7 +257,7 @@
<b>1.6.</b>
併發取多個URL
併發取多個URL
</a>
@@ -802,7 +806,7 @@
<b>5.10.</b>
Recover捕異常
Recover捕異常
</a>
@@ -1315,7 +1319,7 @@
<b>8.9.</b>
併發的退
併發的退
</a>
@@ -1834,7 +1838,7 @@
<b>12.7.</b>
取結構體字段標識
取結構體字段標識
</a>
@@ -2031,7 +2035,7 @@
</code></pre>
<p>&#x793A;&#x4F8B;&#x51FD;&#x6578;&#x6709;&#x4E09;&#x500B;&#x7528;&#x8655;. &#x6700;&#x4E3B;&#x8981;&#x7684;&#x4E00;&#x500B;&#x662F;&#x7528;&#x65BC;&#x6587;&#x6A94;: &#x4E00;&#x500B;&#x5305;&#x7684;&#x4F8B;&#x5B50;&#x53EF;&#x4EE5;&#x66F4;&#x7C21;&#x6F54;&#x76F4;&#x89C0;&#x7684;&#x65B9;&#x5F0F;&#x4F86;&#x6F14;&#x793A;&#x51FD;&#x6578;&#x7684;&#x7528;&#x6CD5;, &#x6703;&#x6587;&#x5B57;&#x63CF;&#x8FF0;&#x6703;&#x66F4;&#x76F4;&#x63A5;&#x6613;&#x61C2;, &#x7279;&#x522B;&#x662F;&#x4F5C;&#x7232;&#x4E00;&#x500B;&#x63D0;&#x9192;&#x6216;&#x5FEB;&#x901F;&#x53C3;&#x8003;&#x6642;. &#x4E00;&#x500B;&#x4F8B;&#x5B50;&#x51FD;&#x6578;&#x4E5F;&#x53EF;&#x4EE5;&#x65B9;&#x4FBF;&#x5C55;&#x793A;&#x5C6C;&#x65BC;&#x540C;&#x4E00;&#x500B;&#x63A5;&#x53E3;&#x7684;&#x5E7E;&#x7A2E;&#x985E;&#x578B;&#x6216;&#x51FD;&#x6578;&#x76F4;&#x63A5;&#x7684;&#x95DC;&#x7E6B;, &#x6240;&#x6709;&#x7684;&#x6587;&#x6A94;&#x90FD;&#x5FC5;&#x9B1A;&#x95DC;&#x806F;&#x5230;&#x4E00;&#x500B;&#x5730;&#x65B9;, &#x5C31;&#x50CF;&#x4E00;&#x500B;&#x985E;&#x578B;&#x6216;&#x51FD;&#x6578;&#x8072;&#x660E;&#x90FD;&#x7D71;&#x4E00;&#x5230;&#x5305;&#x4E00;&#x6A23;. &#x540C;&#x6642;, &#x793A;&#x4F8B;&#x51FD;&#x6578;&#x548C;&#x8A3B;&#x91CB;&#x4F75;&#x4E0D;&#x4E00;&#x6A23;, &#x793A;&#x4F8B;&#x51FD;&#x6578;&#x662F;&#x5B8C;&#x6574;&#x771E;&#x662F;&#x7684;Go&#x4EE3;&#x78BC;, &#x9700;&#x8981;&#x4ECB;&#x7D39;&#x7DE8;&#x8B6F;&#x5668;&#x7684;&#x7DE8;&#x8B6F;&#x6642;&#x6AA2;&#x67FB;, &#x9019;&#x6A23;&#x53EF;&#x4EE5;&#x4FDD;&#x8B49;&#x793A;&#x4F8B;&#x4EE3;&#x78BC;&#x4E0D;&#x6703;&#x8150;&#x721B;&#x6210;&#x4E0D;&#x80FD;&#x4F7F;&#x7528;&#x7684;&#x820A;&#x4EE3;&#x78BC;.</p>
<p>&#x6839;&#x64DA;&#x793A;&#x4F8B;&#x51FD;&#x6578;&#x7684;&#x5F8C;&#x7DB4;&#x540D;&#x90E8;&#x5206;, godoc &#x7684;web&#x6587;&#x6A94;&#x6703;&#x5C07;&#x4E00;&#x500B;&#x793A;&#x4F8B;&#x51FD;&#x6578;&#x95DC;&#x806F;&#x5230;&#x67D0;&#x500B;&#x5177;&#x9AD4;&#x51FD;&#x6578;&#x6216;&#x5305;&#x672C;&#x8EAB;, &#x56E0;&#x6B64; ExampleIsPalindrome &#x793A;&#x4F8B;&#x51FD;&#x6578;&#x5C07;&#x662F; IsPalindrome &#x51FD;&#x6578;&#x6587;&#x6A94;&#x7684;&#x4E00;&#x90E8;&#x5206;, Example &#x793A;&#x4F8B;&#x51FD;&#x6578;&#x5C07;&#x662F;&#x5305;&#x6587;&#x6A94;&#x7684;&#x4E00;&#x90E8;&#x5206;.</p>
<p>&#x793A;&#x4F8B;&#x6587;&#x6A94;&#x7684;&#x7B2C;&#x4E8C;&#x500B;&#x7528;&#x8655;&#x662F;&#x5728; <code>go test</code> &#x57F7;&#x884C;&#x6E2C;&#x8A66;&#x7684;&#x6642;&#x5019;&#x4E5F;&#x904B;&#x884C;&#x793A;&#x4F8B;&#x51FD;&#x6578;&#x6E2C;&#x8A66;. &#x5982;&#x679C;&#x793A;&#x4F8B;&#x51FD;&#x6578;&#x5167;&#x542B;&#x6709;&#x985E;&#x4F3C;&#x4E0A;&#x9762;&#x4F8B;&#x5B50;&#x4E2D;&#x7684; <code>/ Output:</code> &#x9019;&#x6A23;&#x7684;&#x8A3B;&#x91CB;, &#x90A3;&#x9EBD;&#x6E2C;&#x8A66;&#x5DE5;&#x5177;&#x6703;&#x57F7;&#x884C;&#x9019;&#x500B;&#x793A;&#x4F8B;&#x51FD;&#x6578;, &#x7136;&#x5F8C;&#x6AA2;&#x6E2C;&#x9019;&#x500B;&#x793A;&#x4F8B;&#x51FD;&#x6578;&#x7684;&#x6A19;&#x6E96;&#x8F38;&#x9F63;&#x548C;&#x8A3B;&#x91CB;&#x662F;&#x5426;&#x5339;&#x914D;.</p>
<p>&#x793A;&#x4F8B;&#x6587;&#x6A94;&#x7684;&#x7B2C;&#x4E8C;&#x500B;&#x7528;&#x8655;&#x662F;&#x5728; <code>go test</code> &#x57F7;&#x884C;&#x6E2C;&#x8A66;&#x7684;&#x6642;&#x5019;&#x4E5F;&#x904B;&#x884C;&#x793A;&#x4F8B;&#x51FD;&#x6578;&#x6E2C;&#x8A66;. &#x5982;&#x679C;&#x793A;&#x4F8B;&#x51FD;&#x6578;&#x5167;&#x542B;&#x6709;&#x985E;&#x4F3C;&#x4E0A;&#x9762;&#x4F8B;&#x5B50;&#x4E2D;&#x7684; <code>/ Output:</code> &#x9019;&#x6A23;&#x7684;&#x8A3B;&#x91CB;, &#x90A3;&#x9EBD;&#x6E2C;&#x8A66;&#x5DE5;&#x5177;&#x6703;&#x57F7;&#x884C;&#x9019;&#x500B;&#x793A;&#x4F8B;&#x51FD;&#x6578;, &#x7136;&#x5F8C;&#x6AA2;&#x6E2C;&#x9019;&#x500B;&#x793A;&#x4F8B;&#x51FD;&#x6578;&#x7684;&#x6A19;&#x6E96;&#x8F38;&#x51FA;&#x548C;&#x8A3B;&#x91CB;&#x662F;&#x5426;&#x5339;&#x914D;.</p>
<p>&#x793A;&#x4F8B;&#x51FD;&#x6578;&#x7684;&#x7B2C;&#x4E09;&#x500B;&#x76EE;&#x7684;&#x63D0;&#x4F9B;&#x4E00;&#x500B;&#x771E;&#x5BE6;&#x7684;&#x6F14;&#x7DF4;&#x5834;. golang.org &#x662F;&#x7531; dogoc &#x63D0;&#x4F9B;&#x7684;&#x670D;&#x52D9;, &#x5B83;&#x4F7F;&#x7528;&#x4E86; Go Playground &#x6280;&#x8853;&#x8B93;&#x7528;&#x6236;&#x53EF;&#x4EE5;&#x5728;&#x700F;&#x89BD;&#x5668;&#x4E2D;&#x5728;&#x7DDA;&#x7DE8;&#x8F2F;&#x548C;&#x904B;&#x884C;&#x6BCF;&#x500B;&#x793A;&#x4F8B;&#x51FD;&#x6578;, &#x5C31;&#x50CF; &#x5716; 11.4 &#x6240;&#x793A;&#x7684;&#x90A3;&#x6A23;. &#x9019;&#x901A;&#x5E38;&#x662F;&#x5B78;&#x7FD2;&#x51FD;&#x6578;&#x4F7F;&#x7528;&#x6216;Go&#x8A9E;&#x8A00;&#x7279;&#x6027;&#x7684;&#x6700;&#x5FEB;&#x65B9;&#x5F0F;.</p>
<p><img src="../images/ch11-04.png" alt=""></p>
<p>&#x672C;&#x66F8;&#x6700;&#x5F8C;&#x7684;&#x5169;&#x638C;&#x662F;&#x8A0E;&#x8AD6; reflect &#x548C; unsafe &#x5305;, &#x4E00;&#x822C;&#x7684;Go&#x7528;&#x65BC;&#x5F88;&#x5C11;&#x9700;&#x8981;&#x4F7F;&#x7528;&#x5B83;&#x5011;. &#x56E0;&#x6B64;, &#x5982;&#x679C;&#x4F60;&#x9084;&#x6C92;&#x6709;&#x5BEB;&#x904E;&#x4EFB;&#x4F55;&#x771E;&#x662F;&#x7684;Go&#x7A0B;&#x5E8F;&#x7684;&#x8A71;, &#x73FE;&#x5728;&#x53EF;&#x4EE5;&#x5FFD;&#x7565;&#x5269;&#x9918;&#x90E8;&#x5206;&#x800C;&#x76F4;&#x63A5;&#x7DE8;&#x78BC;&#x4E86;.</p>
@@ -2066,7 +2070,7 @@
<script>
require(["gitbook"], function(gitbook) {
var config = {"highlight":{},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2}};
var config = {"katex":{},"highlight":{},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2}};
gitbook.start(config);
});
</script>

View File

@@ -21,6 +21,10 @@
<link rel="stylesheet" href="../gitbook/style.css">
<link rel="stylesheet" href="../gitbook/plugins/gitbook-plugin-katex/katex.min.css">
<link rel="stylesheet" href="../gitbook/plugins/gitbook-plugin-highlight/website.css">
@@ -44,7 +48,7 @@
<body>
<div class="book" data-level="11" data-chapter-title="測試" data-filepath="ch11/ch11.md" data-basepath=".." data-revision="Fri Dec 25 2015 12:32:44 GMT+0800 (中国标准时间)">
<div class="book" data-level="11" data-chapter-title="測試" data-filepath="ch11/ch11.md" data-basepath=".." data-revision="Mon Dec 28 2015 16:03:52 GMT+0800 (中国标准时间)">
<div class="book-summary">
@@ -238,7 +242,7 @@
<b>1.5.</b>
取URL
取URL
</a>
@@ -253,7 +257,7 @@
<b>1.6.</b>
併發取多個URL
併發取多個URL
</a>
@@ -802,7 +806,7 @@
<b>5.10.</b>
Recover捕異常
Recover捕異常
</a>
@@ -1315,7 +1319,7 @@
<b>8.9.</b>
併發的退
併發的退
</a>
@@ -1834,7 +1838,7 @@
<b>12.7.</b>
取結構體字段標識
取結構體字段標識
</a>
@@ -2025,7 +2029,7 @@
<p>&#x6211;&#x5011;&#x8AAC;&#x6E2C;&#x8A66;&#x7684;&#x6642;&#x5019;&#x4E00;&#x822C;&#x662F;&#x6307;&#x81EA;&#x52D5;&#x5316;&#x6E2C;&#x8A66;, &#x4E5F;&#x5C31;&#x662F;&#x5BEB;&#x4E00;&#x4E9B;&#x5C0F;&#x7684;&#x7A0B;&#x5E8F;&#x7528;&#x4F86;&#x6AA2;&#x6E2C;&#x88AB;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;(&#x7523;&#x54C1;&#x4EE3;&#x78BC;)&#x7684;&#x884C;&#x7232;&#x548C;&#x9810;&#x671F;&#x7684;&#x4E00;&#x6A23;, &#x9019;&#x4E9B;&#x901A;&#x5E38;&#x90FD;&#x662F;&#x7CBE;&#x5FC3;&#x6311;&#x9078;&#x7684;&#x57F7;&#x884C;&#x67D0;&#x4E9B;&#x7279;&#x5B9A;&#x7684;&#x529F;&#x80FD;&#x6216;&#x8005;&#x662F;&#x901A;&#x904E;&#x96A8;&#x6A5F;&#x6027;&#x7684;&#x8F38;&#x5165;&#x8981;&#x9A57;&#x8B49;&#x908A;&#x754C;&#x7684;&#x8655;&#x7406;.</p>
<p>&#x8EDF;&#x4EF6;&#x6E2C;&#x8A66;&#x662F;&#x4E00;&#x500B;&#x9245;&#x5927;&#x7684;&#x9818;&#x57DF;. &#x6E2C;&#x8A66;&#x7684;&#x4EFB;&#x52D9;&#x4E00;&#x822C;&#x5360;&#x64DA;&#x4E86;&#x4E00;&#x4E9B;&#x7A0B;&#x5E8F;&#x54E1;&#x7684;&#x90E8;&#x5206;&#x6642;&#x9593;&#x548C;&#x53E6;&#x4E00;&#x4E9B;&#x7A0B;&#x5E8F;&#x54E1;&#x7684;&#x5168;&#x90E8;&#x6642;&#x9593;. &#x548C;&#x8EDF;&#x4EF6;&#x6E2C;&#x8A66;&#x6280;&#x8853;&#x76F8;&#x95DC;&#x7684;&#x5716;&#x66F8;&#x6216;&#x535A;&#x5BA2;&#x6587;&#x7AE0;&#x6709;&#x6210;&#x97C6;&#x4E0A;&#x842C;&#x4E4B;&#x591A;. &#x6BCF;&#x4E00;&#x7A2E;&#x4E3B;&#x6D41;&#x7684;&#x7DE8;&#x7A0B;&#x8A9E;&#x8A00;, &#x90FD;&#x6709;&#x4E00;&#x6253;&#x7684;&#x7528;&#x65BC;&#x6E2C;&#x8A66;&#x7684;&#x8EDF;&#x4EF6;&#x5305;, &#x4E5F;&#x6709;&#x5927;&#x91CF;&#x7684;&#x6E2C;&#x8A66;&#x76F8;&#x95DC;&#x7684;&#x7406;&#x8AD6;, &#x6BCF;&#x7A2E;&#x90FD;&#x5438;&#x5F15;&#x4E86;&#x5927;&#x91CF;&#x6280;&#x8853;&#x5148;&#x9A45;&#x548C;&#x8FFD;&#x96A8;&#x8005;. &#x9019;&#x4E9B;&#x90FD;&#x8DB3;&#x4EE5;&#x8AAC;&#x670D;&#x90A3;&#x4E9B;&#x60F3;&#x8981;&#x7DE8;&#x5BEB;&#x6709;&#x6548;&#x6E2C;&#x8A66;&#x7684;&#x7A0B;&#x5E8F;&#x54E1;&#x91CD;&#x65B0;&#x5B78;&#x7FD2;&#x4E00;&#x5957;&#x5168;&#x65B0;&#x7684;&#x6280;&#x80FD;.</p>
<p>Go&#x8A9E;&#x8A00;&#x7684;&#x6E2C;&#x8A66;&#x6280;&#x8853;&#x662F;&#x76F8;&#x5C0D;&#x4F4E;&#x7D1A;&#x7684;. &#x5B83;&#x4F9D;&#x8CF4;&#x4E00;&#x500B; &apos;go test&apos; &#x6E2C;&#x8A66;&#x547D;&#x4EE4;, &#x548C;&#x4E00;&#x7D44;&#x6309;&#x7167;&#x7D04;&#x5B9A;&#x65B9;&#x5F0F;&#x7DE8;&#x5BEB;&#x7684;&#x6E2C;&#x8A66;&#x51FD;&#x6578;, &#x6E2C;&#x8A66;&#x547D;&#x4EE4;&#x53EF;&#x4EE5;&#x904B;&#x884C;&#x6E2C;&#x8A66;&#x51FD;&#x6578;. &#x7DE8;&#x5BEB;&#x76F8;&#x5C0D;&#x8F15;&#x91CF;&#x7D1A;&#x7684;&#x7D14;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;&#x662F;&#x6709;&#x6548;&#x7684;, &#x800C;&#x4E14;&#x5B83;&#x5F88;&#x5BB9;&#x6613;&#x5EF6;&#x4F38;&#x5230;&#x57FA;&#x6E96;&#x6E2C;&#x8A66;&#x548C;&#x793A;&#x4F8B;&#x6587;&#x6A94;.</p>
<p>&#x5728;&#x5BE6;&#x8E10;&#x4E2D;, &#x7DE8;&#x5BEB;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;&#x548C;&#x7DE8;&#x5BEB;&#x7A0B;&#x5E8F;&#x672C;&#x8EAB;&#x4F75;&#x6C92;&#x6709;&#x591A;&#x5927;&#x5340;&#x522B;. &#x6211;&#x5011;&#x7DE8;&#x5BEB;&#x7684;&#x6BCF;&#x4E00;&#x500B;&#x51FD;&#x6578;&#x4E5F;&#x662F;&#x91DD;&#x5C0D;&#x6BCF;&#x500B;&#x5177;&#x9AD4;&#x7684;&#x4EFB;&#x52D9;. &#x6211;&#x5011;&#x5FC5;&#x9B1A;&#x5C0F;&#x5FC3;&#x8655;&#x7406;&#x908A;&#x754C;&#x689D;&#x4EF6;, &#x601D;&#x8003;&#x5408;&#x9069;&#x7684;&#x6578;&#x64DA;&#x7D50;&#x69CB;, &#x63A8;&#x65B7;&#x5408;&#x9069;&#x7684;&#x8F38;&#x5165;&#x61C9;&#x8A72;&#x7523;&#x751F;&#x4EC0;&#x9EBD;&#x6A23;&#x7684;&#x7D50;&#x679C;&#x8F38;&#x9F63;. &#x7DE8;&#x7A0B;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;&#x548C;&#x7DE8;&#x5BEB;&#x666E;&#x901A;&#x7684;Go&#x4EE3;&#x78BC;&#x904E;&#x7A0B;&#x662F;&#x985E;&#x4F3C;&#x7684;; &#x5B83;&#x4F75;&#x4E0D;&#x9700;&#x8981;&#x5B78;&#x7FD2;&#x65B0;&#x7684;&#x7B26;&#x865F;, &#x898F;&#x5247;&#x548C;&#x5DE5;&#x5177;.</p>
<p>&#x5728;&#x5BE6;&#x8E10;&#x4E2D;, &#x7DE8;&#x5BEB;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;&#x548C;&#x7DE8;&#x5BEB;&#x7A0B;&#x5E8F;&#x672C;&#x8EAB;&#x4F75;&#x6C92;&#x6709;&#x591A;&#x5927;&#x5340;&#x522B;. &#x6211;&#x5011;&#x7DE8;&#x5BEB;&#x7684;&#x6BCF;&#x4E00;&#x500B;&#x51FD;&#x6578;&#x4E5F;&#x662F;&#x91DD;&#x5C0D;&#x6BCF;&#x500B;&#x5177;&#x9AD4;&#x7684;&#x4EFB;&#x52D9;. &#x6211;&#x5011;&#x5FC5;&#x9B1A;&#x5C0F;&#x5FC3;&#x8655;&#x7406;&#x908A;&#x754C;&#x689D;&#x4EF6;, &#x601D;&#x8003;&#x5408;&#x9069;&#x7684;&#x6578;&#x64DA;&#x7D50;&#x69CB;, &#x63A8;&#x65B7;&#x5408;&#x9069;&#x7684;&#x8F38;&#x5165;&#x61C9;&#x8A72;&#x7523;&#x751F;&#x4EC0;&#x9EBD;&#x6A23;&#x7684;&#x7D50;&#x679C;&#x8F38;&#x51FA;. &#x7DE8;&#x7A0B;&#x6E2C;&#x8A66;&#x4EE3;&#x78BC;&#x548C;&#x7DE8;&#x5BEB;&#x666E;&#x901A;&#x7684;Go&#x4EE3;&#x78BC;&#x904E;&#x7A0B;&#x662F;&#x985E;&#x4F3C;&#x7684;; &#x5B83;&#x4F75;&#x4E0D;&#x9700;&#x8981;&#x5B78;&#x7FD2;&#x65B0;&#x7684;&#x7B26;&#x865F;, &#x898F;&#x5247;&#x548C;&#x5DE5;&#x5177;.</p>
</section>
@@ -2057,7 +2061,7 @@
<script>
require(["gitbook"], function(gitbook) {
var config = {"highlight":{},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2}};
var config = {"katex":{},"highlight":{},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2}};
gitbook.start(config);
});
</script>