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

@@ -5,7 +5,7 @@
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>取URL | Go编程语言</title>
<title>取URL | Go编程语言</title>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<meta name="description" content="">
<meta name="generator" content="GitBook 2.5.2">
@@ -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="1.5" data-chapter-title="取URL" data-filepath="ch1/ch1-05.md" data-basepath=".." data-revision="Fri Dec 25 2015 12:32:44 GMT+0800 (中国标准时间)">
<div class="book" data-level="1.5" data-chapter-title="取URL" data-filepath="ch1/ch1-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>
@@ -2019,9 +2023,9 @@
<section class="normal" id="section-">
<h2 id="15-&#x7A6B;&#x53D6;url">1.5. &#x7A6B;&#x53D6;URL</h2>
<h2 id="15-&#x7372;&#x53D6;url">1.5. &#x7372;&#x53D6;URL</h2>
<p>&#x5C0D;&#x65BC;&#x5F88;&#x591A;&#x73FE;&#x4EE3;&#x61C9;&#x7528;&#x4F86;&#x8AAC;&#xFF0C;&#x8A2A;&#x554F;&#x4E92;&#x806F;&#x7DB2;&#x4E0A;&#x7684;&#x4FE1;&#x606F;&#x548C;&#x8A2A;&#x554F;&#x672C;&#x5730;&#x6587;&#x4EF6;&#x7E6B;&#x7D71;&#x4E00;&#x6A23;&#x91CD;&#x8981;&#x3002;Go&#x8A9E;&#x8A00;&#x5728;net&#x9019;&#x500B;&#x5F37;&#x5927;package&#x7684;&#x5E6B;&#x52A9;&#x4E0B;&#x63D0;&#x4F9B;&#x4E86;&#x4E00;&#x7E6B;&#x5217;&#x7684;package&#x4F86;&#x505A;&#x9019;&#x4EF6;&#x4E8B;&#x60C5;&#xFF0C;&#x4F7F;&#x7528;&#x9019;&#x4E9B;&#x5305;&#x53EF;&#x4EE5;&#x66F4;&#x7C21;&#x55AE;&#x5730;&#x7528;&#x7DB2;&#x7D61;&#x6536;&#x767C;&#x4FE1;&#x606F;&#xFF0C;&#x9084;&#x53EF;&#x4EE5;&#x5EFA;&#x7ACB;&#x66F4;&#x5E95;&#x5C64;&#x7684;&#x7DB2;&#x7D61;&#x9023;&#x63A5;&#xFF0C;&#x7DE8;&#x5BEB;&#x670D;&#x52D9;&#x5668;&#x7A0B;&#x5E8F;&#x3002;&#x5728;&#x9019;&#x4E9B;&#x60C5;&#x666F;&#x4E0B;&#xFF0C;Go&#x8A9E;&#x8A00;&#x539F;&#x751F;&#x7684;&#x4F75;&#x767C;&#x7279;&#x6027;&#xFF08;&#x5728;&#x7B2C;&#x516B;&#x7AE0;&#x4E2D;&#x6703;&#x4ECB;&#x7D39;&#xFF09;&#x5C31;&#x986F;&#x5F97;&#x5C24;&#x5176;&#x597D;&#x7528;&#x4E86;&#x3002;</p>
<p>&#x7232;&#x4E86;&#x6700;&#x7C21;&#x55AE;&#x5730;&#x5C55;&#x793A;&#x57FA;&#x65BC;HTTP&#x7A6B;&#x53D6;&#x4FE1;&#x606F;&#x7684;&#x65B9;&#x5F0F;&#xFF0C;&#x4E0B;&#x9762;&#x7D66;&#x9F63;&#x4E00;&#x500B;&#x793A;&#x4F8B;&#x7A0B;&#x5E8F;fetch&#xFF0C;&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#x5C07;&#x7A6B;&#x53D6;&#x5C0D;&#x61C9;&#x7684;url&#xFF0C;&#x4F75;&#x5C07;&#x5176;&#x6E90;&#x6587;&#x672C;&#x6253;&#x5370;&#x9F63;&#x4F86;&#xFF1B;&#x9019;&#x500B;&#x4F8B;&#x5B50;&#x7684;&#x9748;&#x611F;&#x4F86;&#x6E90;&#x65BC;curl&#x5DE5;&#x5177;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;unix&#x4E0B;&#x7684;&#x4E00;&#x500B;&#x7DB2;&#x7D61;&#x76F8;&#x95DC;&#x7684;&#x5DE5;&#x5177;&#xFF09;&#x3002;&#x7576;&#x7136;&#x4E86;&#xFF0C;curl&#x63D0;&#x4F9B;&#x7684;&#x529F;&#x80FD;&#x66F4;&#x7232;&#x8907;&#x96DC;&#x8C50;&#x5BCC;&#xFF0C;&#x9019;&#x91CC;&#x6211;&#x5011;&#x96BB;&#x7DE8;&#x5BEB;&#x6700;&#x7C21;&#x55AE;&#x7684;&#x6A23;&#x4F8B;&#x3002;&#x4E4B;&#x5F8C;&#x6211;&#x5011;&#x9084;&#x6703;&#x5728;&#x672C;&#x66F8;&#x4E2D;&#x7D93;&#x5E38;&#x7528;&#x5230;&#x9019;&#x500B;&#x4F8B;&#x5B50;&#x3002;</p>
<p>&#x7232;&#x4E86;&#x6700;&#x7C21;&#x55AE;&#x5730;&#x5C55;&#x793A;&#x57FA;&#x65BC;HTTP&#x7372;&#x53D6;&#x4FE1;&#x606F;&#x7684;&#x65B9;&#x5F0F;&#xFF0C;&#x4E0B;&#x9762;&#x7D66;&#x51FA;&#x4E00;&#x500B;&#x793A;&#x4F8B;&#x7A0B;&#x5E8F;fetch&#xFF0C;&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#x5C07;&#x7372;&#x53D6;&#x5C0D;&#x61C9;&#x7684;url&#xFF0C;&#x4F75;&#x5C07;&#x5176;&#x6E90;&#x6587;&#x672C;&#x6253;&#x5370;&#x51FA;&#x4F86;&#xFF1B;&#x9019;&#x500B;&#x4F8B;&#x5B50;&#x7684;&#x9748;&#x611F;&#x4F86;&#x6E90;&#x65BC;curl&#x5DE5;&#x5177;&#xFF08;&#x8B6F;&#x8A3B;&#xFF1A;unix&#x4E0B;&#x7684;&#x4E00;&#x500B;&#x7DB2;&#x7D61;&#x76F8;&#x95DC;&#x7684;&#x5DE5;&#x5177;&#xFF09;&#x3002;&#x7576;&#x7136;&#x4E86;&#xFF0C;curl&#x63D0;&#x4F9B;&#x7684;&#x529F;&#x80FD;&#x66F4;&#x7232;&#x8907;&#x96DC;&#x8C50;&#x5BCC;&#xFF0C;&#x9019;&#x91CC;&#x6211;&#x5011;&#x96BB;&#x7DE8;&#x5BEB;&#x6700;&#x7C21;&#x55AE;&#x7684;&#x6A23;&#x4F8B;&#x3002;&#x4E4B;&#x5F8C;&#x6211;&#x5011;&#x9084;&#x6703;&#x5728;&#x672C;&#x66F8;&#x4E2D;&#x7D93;&#x5E38;&#x7528;&#x5230;&#x9019;&#x500B;&#x4F8B;&#x5B50;&#x3002;</p>
<pre><code class="lang-go">gopl.io/ch1/fetch
<span class="hljs-comment">// Fetch prints the content found at a URL.</span>
<span class="hljs-keyword">package</span> main
@@ -2050,7 +2054,7 @@
}
}
</code></pre>
<p>&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#x5F9E;&#x5169;&#x500B;package&#x4E2D;&#x5C0E;&#x5165;&#x4E86;&#x51FD;&#x6578;&#xFF0C;net/http&#x548C;io/ioutil&#x5305;&#xFF0C;http.Get&#x51FD;&#x6578;&#x662F;&#x5275;&#x5EFA;HTTP&#x8ACB;&#x6C42;&#x7684;&#x51FD;&#x6578;&#xFF0C;&#x5982;&#x679C;&#x7A6B;&#x53D6;&#x904E;&#x7A0B;&#x6C92;&#x6709;&#x9F63;&#x932F;&#xFF0C;&#x90A3;&#x9EBD;&#x6703;&#x5728;resp&#x9019;&#x500B;&#x7D50;&#x69CB;&#x9AD4;&#x4E2D;&#x5F97;&#x5230;&#x8A2A;&#x554F;&#x7684;&#x8ACB;&#x6C42;&#x7D50;&#x679C;&#x3002;resp&#x7684;Body&#x5B57;&#x6BB5;&#x5305;&#x62EC;&#x4E00;&#x500B;&#x53EF;&#x8B80;&#x7684;&#x670D;&#x52D9;&#x5668;&#x97FF;&#x61C9;&#x6D41;&#x3002;&#x9019;&#x4E4B;&#x5F8C;ioutil.ReadAll&#x51FD;&#x6578;&#x5F9E;response&#x4E2D;&#x8B80;&#x53D6;&#x5230;&#x5168;&#x90E8;&#x5167;&#x5BB9;&#xFF1B;&#x5176;&#x7D50;&#x679C;&#x4FDD;&#x5B58;&#x5728;&#x8B8A;&#x91CF;b&#x4E2D;&#x3002;resp.Body.Close&#x9019;&#x4E00;&#x53E5;&#x6703;&#x95DC;&#x9589;resp&#x7684;Body&#x6D41;&#xFF0C;&#x9632;&#x6B62;&#x8CC7;&#x6E90;&#x6D29;&#x9732;&#xFF0C;Printf&#x51FD;&#x6578;&#x6703;&#x5C07;&#x7D50;&#x679C;b&#x5BEB;&#x9F63;&#x5230;&#x6A19;&#x6E96;&#x8F38;&#x9F63;&#x6D41;&#x4E2D;&#x3002;</p>
<p>&#x9019;&#x500B;&#x7A0B;&#x5E8F;&#x5F9E;&#x5169;&#x500B;package&#x4E2D;&#x5C0E;&#x5165;&#x4E86;&#x51FD;&#x6578;&#xFF0C;net/http&#x548C;io/ioutil&#x5305;&#xFF0C;http.Get&#x51FD;&#x6578;&#x662F;&#x5275;&#x5EFA;HTTP&#x8ACB;&#x6C42;&#x7684;&#x51FD;&#x6578;&#xFF0C;&#x5982;&#x679C;&#x7372;&#x53D6;&#x904E;&#x7A0B;&#x6C92;&#x6709;&#x51FA;&#x932F;&#xFF0C;&#x90A3;&#x9EBD;&#x6703;&#x5728;resp&#x9019;&#x500B;&#x7D50;&#x69CB;&#x9AD4;&#x4E2D;&#x5F97;&#x5230;&#x8A2A;&#x554F;&#x7684;&#x8ACB;&#x6C42;&#x7D50;&#x679C;&#x3002;resp&#x7684;Body&#x5B57;&#x6BB5;&#x5305;&#x62EC;&#x4E00;&#x500B;&#x53EF;&#x8B80;&#x7684;&#x670D;&#x52D9;&#x5668;&#x97FF;&#x61C9;&#x6D41;&#x3002;&#x9019;&#x4E4B;&#x5F8C;ioutil.ReadAll&#x51FD;&#x6578;&#x5F9E;response&#x4E2D;&#x8B80;&#x53D6;&#x5230;&#x5168;&#x90E8;&#x5167;&#x5BB9;&#xFF1B;&#x5176;&#x7D50;&#x679C;&#x4FDD;&#x5B58;&#x5728;&#x8B8A;&#x91CF;b&#x4E2D;&#x3002;resp.Body.Close&#x9019;&#x4E00;&#x53E5;&#x6703;&#x95DC;&#x9589;resp&#x7684;Body&#x6D41;&#xFF0C;&#x9632;&#x6B62;&#x8CC7;&#x6E90;&#x6D29;&#x9732;&#xFF0C;Printf&#x51FD;&#x6578;&#x6703;&#x5C07;&#x7D50;&#x679C;b&#x5BEB;&#x51FA;&#x5230;&#x6A19;&#x6E96;&#x8F38;&#x51FA;&#x6D41;&#x4E2D;&#x3002;</p>
<pre><code>$ go build gopl.io/ch1/fetch
$ ./fetch http://gopl.io
&lt;html&gt;
@@ -2066,7 +2070,7 @@ fetch: Get http://gopl.io: dial tcp: lookup gopl.io: getaddrinfow: No such host
</code></pre><p>&#x7121;&#x8AD6;&#x54EA;&#x7A2E;&#x5931;&#x6557;&#x539F;&#x56E0;&#xFF0C;&#x6211;&#x5011;&#x7684;&#x7A0B;&#x5E8F;&#x90FD;&#x7528;&#x4E86;os.Exit&#x51FD;&#x6578;&#x4F86;&#x7D42;&#x6B62;&#x9032;&#x7A0B;&#xFF0C;&#x4F75;&#x4E14;&#x8FD4;&#x8FF4;&#x4E00;&#x500B;status&#x932F;&#x8AA4;&#x78BC;&#xFF0C;&#x5176;&#x503C;&#x7232;1&#x3002;</p>
<p><strong>&#x7DF4;&#x7FD2; 1.7&#xFF1A;</strong> &#x51FD;&#x6578;&#x8ABF;&#x7528;io.Copy(dst, src)&#x6703;&#x5F9E;src&#x4E2D;&#x8B80;&#x53D6;&#x5167;&#x5BB9;&#xFF0C;&#x4F75;&#x5C07;&#x8B80;&#x5230;&#x7684;&#x7D50;&#x679C;&#x5BEB;&#x5165;&#x5230;dst&#x4E2D;&#xFF0C;&#x4F7F;&#x7528;&#x9019;&#x500B;&#x51FD;&#x6578;&#x66FF;&#x4EE3;&#x6389;&#x4F8B;&#x5B50;&#x4E2D;&#x7684;ioutil.ReadAll&#x4F86;&#x62F7;&#x8C9D;&#x97FF;&#x61C9;&#x7D50;&#x69CB;&#x9AD4;&#x5230;os.Stdout&#xFF0C;&#x907F;&#x514D;&#x7533;&#x8ACB;&#x4E00;&#x500B;&#x7DE9;&#x885D;&#x5340;&#xFF08;&#x4F8B;&#x5B50;&#x4E2D;&#x7684;b&#xFF09;&#x4F86;&#x5B58;&#x5132;&#x3002;&#x8A18;&#x5F97;&#x8655;&#x7406;io.Copy&#x8FD4;&#x8FF4;&#x7D50;&#x679C;&#x4E2D;&#x7684;&#x932F;&#x8AA4;&#x3002;</p>
<p><strong>&#x7DF4;&#x7FD2; 1.8&#xFF1A;</strong> &#x8129;&#x6539;fetch&#x9019;&#x500B;&#x8303;&#x4F8B;&#xFF0C;&#x5982;&#x679C;&#x8F38;&#x5165;&#x7684;url&#x53C3;&#x6578;&#x6C92;&#x6709; <code>http://</code> &#x524D;&#x7DB4;&#x7684;&#x8A71;&#xFF0C;&#x7232;&#x9019;&#x500B;url&#x52A0;&#x4E0A;&#x8A72;&#x524D;&#x7DB4;&#x3002;&#x4F60;&#x53EF;&#x80FD;&#x6703;&#x7528;&#x5230;strings.HasPrefix&#x9019;&#x500B;&#x51FD;&#x6578;&#x3002;</p>
<p><strong>&#x7DF4;&#x7FD2; 1.9&#xFF1A;</strong> &#x8129;&#x6539;fetch&#x6253;&#x5370;&#x9F63;HTTP&#x5354;&#x8B70;&#x7684;&#x72C0;&#x614B;&#x78BC;&#xFF0C;&#x53EF;&#x4EE5;&#x5F9E;resp.Status&#x8B8A;&#x91CF;&#x5F97;&#x5230;&#x8A72;&#x72C0;&#x614B;&#x78BC;&#x3002;</p>
<p><strong>&#x7DF4;&#x7FD2; 1.9&#xFF1A;</strong> &#x8129;&#x6539;fetch&#x6253;&#x5370;&#x51FA;HTTP&#x5354;&#x8B70;&#x7684;&#x72C0;&#x614B;&#x78BC;&#xFF0C;&#x53EF;&#x4EE5;&#x5F9E;resp.Status&#x8B8A;&#x91CF;&#x5F97;&#x5230;&#x8A72;&#x72C0;&#x614B;&#x78BC;&#x3002;</p>
</section>
@@ -2080,7 +2084,7 @@ fetch: Get http://gopl.io: dial tcp: lookup gopl.io: getaddrinfow: No such host
<a href="../ch1/ch1-04.html" class="navigation navigation-prev " aria-label="Previous page: GIF動畵"><i class="fa fa-angle-left"></i></a>
<a href="../ch1/ch1-06.html" class="navigation navigation-next " aria-label="Next page: 併發取多個URL"><i class="fa fa-angle-right"></i></a>
<a href="../ch1/ch1-06.html" class="navigation navigation-next " aria-label="Next page: 併發取多個URL"><i class="fa fa-angle-right"></i></a>
</div>
</div>
@@ -2098,7 +2102,7 @@ fetch: Get http://gopl.io: dial tcp: lookup gopl.io: getaddrinfow: No such host
<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>