{"id":1948,"date":"2021-08-03T15:10:01","date_gmt":"2021-08-03T07:10:01","guid":{"rendered":"https:\/\/egonlin.com\/?p=1948"},"modified":"2022-02-07T16:38:02","modified_gmt":"2022-02-07T08:38:02","slug":"%e6%8e%a5%e5%8f%a3%e7%b1%bb%e5%9e%8b","status":"publish","type":"post","link":"https:\/\/egonlin.com\/?p=1948","title":{"rendered":"\u63a5\u53e3\u7c7b\u578b"},"content":{"rendered":"<p>[TOC]<\/p>\n<h1>\u63a5\u53e3<\/h1>\n<h2>\u4e00 Go\u8bed\u8a00\u4e2d\u7684\u63a5\u53e3\u4ecb\u7ecd<\/h2>\n<p>Go\u8bed\u8a00\u4e2d\u7684\u63a5\u53e3\u662f\u4ec0\u4e48\uff1f<\/p>\n<pre><code>* 1)\u662f\u4e00\u79cd\u7c7b\u578b\n* 2)\u662f\u4e00\u7ec4\u529f\u80fd\u7684\u96c6\u5408,\u800c\u4e0d\u662f\u4e00\u4e2a\u529f\u80fd\n* 3)\u63a5\u53e3\u5185\u53ea\u5b9a\u4e49\u51fd\u6570,\u4f46\u4e0d\u6d89\u53ca\u51fd\u6570\u5b9e\u73b0\n* 4)\u8fd9\u4e9b\u529f\u80fd\u662f\u76f8\u5173\u7684,\u90fd\u662f\u76f8\u5173\u7684\u529f\u80fd\uff0c\u6bd4\u5982\u52a8\u7269\u7684\u63a5\u53e3\u91cc\u5e94\u8be5\u653e\u52a8\u7269\u76f8\u5173\u7684\u529f\u80fd,\u4f46\u5149\u5408\u4f5c\u7528\u5c31\u4e0d\u9002\u5b9c\u653e\u5230IAnimal\u91cc\u9762\u4e86 *\/<\/code><\/pre>\n<p>\u4e3a\u4f55\u8981\u7528\u63a5\u53e3\uff1f<\/p>\n<pre><code class=\"language-go\">Go\u8bed\u8a00\u63d0\u5021\u9762\u5411\u63a5\u53e3\u7f16\u7a0b\n\n\u63a5\u53e3\u89c4\u5b9a\u4e86\u5fc5\u987b\u8981\u6709\u54ea\u4e9b\u51fd\u6570\u4ee5\u53ca\u51fd\u6570\u7684\u540d\u5b57\u662f\u4ec0\u4e48\uff0c\u7136\u540e\u8ba9\u201c\u5b50\u7c7b\u201c\u53bb\u5b9e\u73b0\u63a5\u53e3\u7684\u51fd\u6570\uff0c\u4ee5\u6b64\u6765\u628a\u591a\u4e2a\u5b50\u7c7b\u7edf\u4e00\/\u89c4\u8303\u8d77\u6765\n\n\u8fd9\u4e48\u505a\u7684\u610f\u4e49\u5728\u4e8e\u5f52\u4e00\u5316\uff0c\u4ec0\u4e48\u53eb\u5f52\u4e00\u5316\uff0c\u5c31\u662f\u53ea\u8981\u662f\u57fa\u4e8e\u540c\u4e00\u4e2a\u63a5\u53e3\u5b9e\u73b0\u7684\u7c7b\uff0c\u90a3\u4e48\u6240\u6709\u7684\u8fd9\u4e9b\u7c7b\u4ea7\u751f\u7684\u5bf9\u8c61\u5728\u4f7f\u7528\u65f6\uff0c\u4ece\u7528\u6cd5\u4e0a\u6765\u8bf4\u90fd\u4e00\u6837\u3002\n\n\/\/ \u5f52\u4e00\u5316\u7684\u597d\u5904\u5728\u4e8e\uff1a\n1. \u5f52\u4e00\u5316\u8ba9\u4f7f\u7528\u8005\u65e0\u9700\u5173\u5fc3\u5bf9\u8c61\u7684\u7c7b\u662f\u4ec0\u4e48\uff0c\u53ea\u9700\u8981\u7684\u77e5\u9053\u8fd9\u4e9b\u5bf9\u8c61\u90fd\u5177\u5907\u67d0\u4e9b\u529f\u80fd\u5c31\u53ef\u4ee5\u4e86\uff0c\u8fd9\u6781\u5927\u5730\u964d\u4f4e\u4e86\u4f7f\u7528\u8005\u7684\u4f7f\u7528\u96be\u5ea6\u3002\n\n2. \u5f52\u4e00\u5316\u4f7f\u5f97\u9ad8\u5c42\u7684\u5916\u90e8\u4f7f\u7528\u8005\u53ef\u4ee5\u4e0d\u52a0\u533a\u5206\u7684\u5904\u7406\u6240\u6709\u63a5\u53e3\u517c\u5bb9\u7684\u5bf9\u8c61\u96c6\u5408\n\n2.1\uff1a\u5c31\u597d\u8c61linux\u7684\u6cdb\u6587\u4ef6\u6982\u5ff5\u4e00\u6837\uff0c\u6240\u6709\u4e1c\u897f\u90fd\u53ef\u4ee5\u5f53\u6587\u4ef6\u5904\u7406\uff0c\u4e0d\u5fc5\u5173\u5fc3\u5b83\u662f\u5185\u5b58\u3001\u78c1\u76d8\u3001\u7f51\u7edc\u8fd8\u662f\u5c4f\u5e55\uff08\u5f53\u7136\uff0c\u5bf9\u5e95\u5c42\u8bbe\u8ba1\u8005\uff0c\u5f53\u7136\u4e5f\u53ef\u4ee5\u533a\u5206\u51fa\u201c\u5b57\u7b26\u8bbe\u5907\u201d\u548c\u201c\u5757\u8bbe\u5907\u201d\uff0c\u7136\u540e\u505a\u51fa\u9488\u5bf9\u6027\u7684\u8bbe\u8ba1\uff1a\u7ec6\u81f4\u5230\u4ec0\u4e48\u7a0b\u5ea6\uff0c\u89c6\u9700\u6c42\u800c\u5b9a\uff09\u3002\n\n2.2\uff1a\u518d\u6bd4\u5982\uff1a\u6211\u4eec\u6709\u4e00\u4e2a\u6c7d\u8f66\u63a5\u53e3\uff0c\u91cc\u9762\u5b9a\u4e49\u4e86\u6c7d\u8f66\u6240\u6709\u7684\u529f\u80fd\uff0c\u7136\u540e\u7531\u672c\u7530\u6c7d\u8f66\u7684\u7c7b\uff0c\u5965\u8fea\u6c7d\u8f66\u7684\u7c7b\uff0c\u5927\u4f17\u6c7d\u8f66\u7684\u7c7b\uff0c\u4ed6\u4eec\u90fd\u5b9e\u73b0\u4e86\u6c7d\u8f66\u63a5\u53e3\uff0c\u8fd9\u6837\u5c31\u597d\u529e\u4e86\uff0c\u5927\u5bb6\u53ea\u9700\u8981\u5b66\u4f1a\u4e86\u600e\u4e48\u5f00\u6c7d\u8f66\uff0c\u90a3\u4e48\u65e0\u8bba\u662f\u672c\u7530\uff0c\u8fd8\u662f\u5965\u8fea\uff0c\u8fd8\u662f\u5927\u4f17\u6211\u4eec\u90fd\u4f1a\u5f00\u4e86\uff0c\u5f00\u7684\u65f6\u5019\u6839\u672c\u65e0\u9700\u5173\u5fc3\u6211\u5f00\u7684\u662f\u54ea\u4e00\u7c7b\u8f66\uff0c\u64cd\u4f5c\u624b\u6cd5\uff08\u51fd\u6570\u8c03\u7528\uff09\u90fd\u4e00\u6837<\/code><\/pre>\n<h2>\u4e8c \u63a5\u53e3\u7684\u5b9a\u4e49<\/h2>\n<p>\u63a5\u53e3\u662f\u4e00\u79cd\u7c7b\u578b\uff0c\u8be5\u7c7b\u578b\u5185\u90e8\u5305\u542b\u591a\u4e2a\u672a\u5b9e\u73b0\u7684\u51fd\u6570\/\u65b9\u6cd5\uff0c\u5b9a\u4e49\u8bed\u6cd5\u5982\u4e0b<\/p>\n<pre><code class=\"language-go\">type \u63a5\u53e3\u7c7b\u578b\u540d interface{\n    \u65b9\u6cd5\u540d1( \u53c2\u6570\u5217\u88681 ) \u8fd4\u56de\u503c\u5217\u88681\n    \u65b9\u6cd5\u540d2( \u53c2\u6570\u5217\u88682 ) \u8fd4\u56de\u503c\u5217\u88682\n    \u2026\n}<\/code><\/pre>\n<p>\u6ce8\u610f\uff1a<\/p>\n<ul>\n<li>\n<p>1\u3001\u63a5\u53e3\u7c7b\u578b\u7684\u547d\u540d\u5e94\u8be5\u89c1\u540d\u77e5\u610f\uff0c\u4e00\u822c\u4f1a\u5728\u5355\u8bcd\u540e\u52a0er\uff0c<\/p>\n<p>\u4f8b\u5982\uff1a<\/p>\n<pre><code class=\"language-go\">- \u6709\u8bfb\u64cd\u4f5c\u7684\u63a5\u53e3\uff1aReader\n- \u5199\u64cd\u4f5c\u7684\u63a5\u53e3\uff1aWriter\n- \u5173\u95ed\u64cd\u4f5c\u7684\u63a5\u53e3\uff1aCloser\n- \u5176\u4ed6\uff1aPrinter\u3001Logger\u3001Converter\u7b49\u7b49<\/code><\/pre>\n<p>\u8fd8\u6709\u4e00\u4e9b\u4e0d\u5e38\u7528\u7684\u65b9\u5f0f\uff08\u5f53\u540e\u7f00 <code>er<\/code> \u4e0d\u5408\u9002\u65f6\uff09\uff0c\u6bd4\u5982<code>Recoverable<\/code>\uff0c\u6b64\u65f6\u63a5\u53e3\u540d\u4ee5 <code>able<\/code> \u7ed3\u5c3e\uff0c\u6216\u8005\u4ee5 <code>I<\/code> \u5f00\u5934\uff08\u50cf <code>.NET<\/code> \u6216 <code>Java<\/code> \u4e2d\u90a3\u6837\uff09\u3002<\/p>\n<\/li>\n<li>\n<p>2\u3001Go \u8bed\u8a00\u4e2d\u7684\u63a5\u53e3\u90fd\u5f88\u7b80\u77ed\uff0c\u901a\u5e38\u5b83\u4eec\u4f1a\u5305\u542b 0 \u4e2a\u3001\u6700\u591a 3 \u4e2a\u65b9\u6cd5\u3002<\/p>\n<\/li>\n<li>\n<p>3\u3001\u63a5\u53e3\u540d\u4ee5\u53ca\u65b9\u6cd5\u540d\u7684\u9996\u5b57\u6bcd\u5747\u4e3a\u5927\u5199\uff0c\u8be5\u65b9\u6cd5\u624d\u53ef\u4ee5\u88ab\u5176\u4ed6\u5305\u5bfc\u5165<\/p>\n<p>\u4f8b\u5982\uff1a<\/p>\n<pre><code class=\"language-go\">package io\n\ntype Reader interface {\n  Read(p []byte) (n int, err error)\n}\ntype Closer interface {\n  Close() error\n}<\/code><\/pre>\n<\/li>\n<li>\n<p>4\u3001\u53c2\u6570\u5217\u8868\u4e0e\u8fd4\u56de\u503c\u5217\u8868\u4e2d\u7684\u53c2\u6570\u540d\u5b57\u53ef\u4ee5\u7701\u7565<\/p>\n<p>\u4f8b\u5982<\/p>\n<pre><code class=\"language-go\">type Reader interface {\n  Read([]byte) (int, error)\n}<\/code><\/pre>\n<\/li>\n<\/ul>\n<h2>\u4e09 \u63a5\u53e3\u7684\u5b9e\u73b0<\/h2>\n<p>Go\u4e2d\uff0c\u5b50\u7c7b\u4e0d\u9700\u8981\u663e\u5f0f\u58f0\u660e\u5b83\u5b9e\u73b0\u4e86\u67d0\u4e2a\u63a5\u53e3\uff0c\u53ea\u8981\u201c\u5b50\u7c7b\u201d\uff08\u4e8b\u5b9e\u4e0a\uff0cgo\u8bed\u8a00\u4e2dstruct\u5145\u5f53\u7684\u5c31\u662f\u7c7b\u7684\u6982\u5ff5\uff09\u5b9e\u73b0\u4e86\u63a5\u53e3\u4e2d\u5168\u90e8\u7684\u51fd\u6570\u90a3\u5c31\u662f\u5b9e\u73b0\u4e86\u63a5\u53e3\uff0c\u5f53\u7136\uff0cGo\u7684\u8fd9\u79cd\u98ce\u683c\u4e5f\u53ef\u4ee5\u88ab\u79f0\u4e3a\u9690\u5f0f\u5b9e\u73b0\uff0c\u5e76\u4e14\u5373\u4f7f\u63a5\u53e3\u5728\u7c7b\u578b\u4e4b\u540e\u624d\u5b9a\u4e49\uff0c\u4e8c\u8005\u5904\u4e8e\u4e0d\u540c\u7684\u5305\u4e2d\uff0c\u88ab\u5355\u72ec\u7f16\u8bd1\uff1a\u53ea\u8981\u7c7b\u578b\u5b9e\u73b0\u4e86\u63a5\u53e3\u4e2d\u7684\u65b9\u6cd5\uff0c\u5b83\u5c31\u5b9e\u73b0\u4e86\u6b64\u63a5\u53e3\u3002<\/p>\n<p>\u6240\u6709\u8fd9\u4e9b\u7279\u6027\u4f7f\u5f97\u63a5\u53e3\u5177\u6709\u5f88\u5927\u7684\u7075\u6d3b\u6027\u3002<\/p>\n<pre><code class=\"language-go\">\/\/ \u6ce8\u610f\uff1a\u5fc5\u987b\u5b9e\u73b0\u5168\u90e8\u63a5\u53e3\u7684\u5185\u7684\u51fd\u6570\uff0c\u624d\u7b97\u5b9e\u73b0\u4e86\u63a5\u53e3\uff0c\u5c11\u4e00\u4e2a\u90fd\u4e0d\u884c\n\n\/\/ 1\u3001\u5b9a\u4e49\u63a5\u53e3\ntype animaler interface {\n    eat()\n    sleep()\n}\n\n\/\/ 2\u3001\u5b9a\u4e49\u63a5\u53e3\u63d0\ntype dog struct {\n    name string\n    class string\n}\n\n\/\/ 3\u3001\u5b9e\u73b0\u63a5\u53e3\n\/\/ 3.1\u3001\u5b9e\u73b0\u63a5\u53e3\u5185\u7684\u65b9\u6cd5eat\nfunc (d dog) eat()  {\n    fmt.Printf(&quot;\u4e00\u53ea\u540d\u4e3a\u3010%v\u3011\u7684\u3010%v\u3011\u6b63\u5728\u5403\u4e1c\u897f\\n&quot;,d.name,d.class )\n}\n\n\/\/ 3.2\u3001\u5b9e\u73b0\u63a5\u53e3\u5185\u7684\u65b9\u6cd5sleep\nfunc (d dog) sleep()  {\n    fmt.Printf(&quot;\u4e00\u53ea\u540d\u4e3a\u3010%v\u3011\u7684\u3010%v\u3011\u6b63\u5728\u7761\u89c9\\n&quot;,d.name,d.class )\n}\n\n\/\/ 3.3\u3001\u7ed3\u6784\u4f53d\u5f53\u7136\u53ef\u4ee5\u5b9e\u73b0\u63a5\u53e3\u4e4b\u5916\u7684\u65b9\u6cd5\uff0c\u6ca1\u6709\u5f71\u54cd\nfunc (d dog) run()  {\n    fmt.Printf(&quot;\u4e00\u53ea\u540d\u4e3a\u3010%v\u3011\u7684\u3010%v\u3011\u6b63\u5728\u5954\u8dd1\\n&quot;,d.name,d.class )\n}\n\nfunc main() {\n    d:=dog{\n        name: &quot;\u5929\u84ec\u5143\u5e05&quot;,\n        class: &quot;\u54c8\u58eb\u5947&quot;,\n    }\n    d.eat()\n    d.sleep()\n    d.run()\n}\n<\/code><\/pre>\n<p>Go\u8bed\u8a00\u4e2d\u7684\u63a5\u53e3\u662f\u975e\u4fb5\u5165\u5f0f\u7684\uff0c\u5373\u4fbf\u662f\u62ff\u6389\u4e86\u63a5\u53e3\uff0c\u4e5f\u4e0d\u5f71\u54cd\u201d\u5b50\u7c7b\u201c\uff0c\u6240\u4ee5\u8bf4Go\u7684\u63a5\u53e3\u4e5f\u5c5e\u4e8educk-type<\/p>\n<h2>\u56db \u58f0\u660e\u63a5\u53e3\u7c7b\u578b\u7684\u53d8\u91cf<\/h2>\n<p>\u4e0d\u50cf\u5927\u591a\u6570\u9762\u5411\u5bf9\u8c61\u7f16\u7a0b\u8bed\u8a00\uff0c\u5728 Go \u8bed\u8a00\u4e2d\u53ef\u4ee5\u58f0\u660e\u63a5\u53e3\u7c7b\u578b\u7684\u503c\uff0c\u7b80\u79f0\u63a5\u53e3\u503c\uff0c\u5982\u4e0b\u6240\u793a\uff0ca\u662f\u4e00\u4e2a\u591a\u5b57\uff08multiword\uff09\u6570\u636e\u7ed3\u6784\uff0c\u5b83\u7684\u503c\u662f <code>nil<\/code>\u3002<\/p>\n<pre><code class=\"language-go\">var a animaler  \n\n\/\/ \uff01\uff01\uff01\u6ce8\u610f\uff01\uff01\uff01\n\u6307\u5411\u63a5\u53e3\u503c\u7684\u6307\u9488\u662f\u975e\u6cd5\u7684\uff0c\u5b83\u4eec\u4e0d\u4ec5\u4e00\u70b9\u7528\u4e5f\u6ca1\u6709\uff0c\u8fd8\u4f1a\u5bfc\u81f4\u4ee3\u7801\u9519\u8bef\u3002<\/code><\/pre>\n<p>\u4e00\u4e2a\u63a5\u53e3\u53d8\u91cf\u5c31\u53ef\u4ee5\u5b58\u50a8\uff08\u6216\u201c\u6307\u5411\u201d\uff0c\u63a5\u53e3\u53d8\u91cf\u7c7b\u4f3c\u4e8e\u6307\u9488\uff0c\u4f46\u63a5\u53e3\u4e0e\u6307\u9488\u4e0d\u5b8c\u5168\u662f\u4e00\u56de\u4e8b\uff09\u4efb\u4f55\u7c7b\u578b\u7684\u5177\u4f53\u503c\uff0c\u53ea\u8981\u8fd9\u4e2a\u503c\u5b9e\u73b0\u4e86\u8be5\u63a5\u53e3\u7c7b\u578b\u7684\u6240\u6709\u65b9\u6cd5\uff0c\u6240\u4ee5\uff0c\u4f46\u51e1\u662f\u5b9e\u73b0\u4e86\u63a5\u53e3\u7684\u53d8\u91cf\u90fd\u53ef\u4ee5\u8d4b\u503c\u7ed9a,<\/p>\n<pre><code class=\"language-go\">a=d  \/\/ \u53ea\u6709\u53d8\u91cfd\u5b8c\u5168\u5b9e\u73b0\u4e86\u63a5\u53e3\u7684\u6240\u6709\u65b9\u6cd5\uff0c\u624d\u7b97\u662f\u5b9e\u73b0\u4e86\u63a5\u53e3\uff0c\u6b64\u5904\u7684\u8d4b\u503c\u624d\u4f1a\u6210\u529f\n\n\/\/ \uff01\uff01\uff01\u6ce8\u610f\uff01\uff01\uff01\n\u8d4b\u503c\u6210\u529f\u540e\uff0c\u6b64\u65f6\u63a5\u53e3\u7c7b\u578b\u53d8\u91cfa\u4e2d\u6240\u5305\u542b\u7684\u65b9\u6cd5\u5217\u8868\u4e2d\u7684\u6307\u9488\u4f1a\u6307\u5411\u88ab\u5b9e\u73b0\u7684\u63a5\u53e3\u65b9\u6cd5\uff0c\u5373\u6307\u5411d\u7684\u65b9\u6cd5\uff0c\u4e8e\u662f\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u201ca.\u63a5\u53e3\u4e2d\u89c4\u5b9a\u7684\u65b9\u6cd5\u201d\u6765\u8bbf\u95eed\u4e2d\u5bf9\u5e94\u7684\u5177\u4f53\u5b9e\u73b0\u529f\u80fd\uff0c\u5982\u4e0b\u6240\u793a<\/code><\/pre>\n<p>\u6211\u4eec\u53ef\u4ee5\u4e0d\u8003\u8651\u5177\u4f53\u7684\u7c7b\u578b\uff0c\u800c\u76f4\u63a5\u4f7f\u7528\u5bf9\u8c61\u7684\u65b9\u6cd5\uff0c\u6bd4\u5982\u6211\u4eec\u53ea\u9700\u8981\u8bb0\u4f4fd\u662f\u4e00\u4e2a\u52a8\u7269\u5c31\u53ef\u4ee5\u5b8c\u5168\u6309\u7167\u52a8\u7269\u7684\u65b9\u6cd5\u53bb\u8c03\u7528<\/p>\n<pre><code>a.eat()\na.sleep()\na.run() \/\/ \u9519\u8bef\uff0cd\u8d4b\u503c\u7ed9\u63a5\u53e3\u53d8\u91cfa\u4e4b\u540e\uff0ca\u53ea\u80fd\u8c03\u7528\u63a5\u53e3\u89c4\u5b9a\u7684\u5c5e\u6027\uff0c\u4e0d\u80fd\u8c03\u7528d\u6240\u6709\u7684\u5c5e\u6027\uff0c\u8fd9\u8fd8\u7528\u8bf4\u5417\uff0c\u6211\u4eec\u6bd4\u8f83\u8c03\u7528\u7684\u662fa\u4e0b\u7684\u4e1c\u897f\uff0ca\u4e2d\u4e4b\u540eeat\u548csleep\uff0c\u53ea\u662f\u5b83\u4eec\u6307\u5411\u4e86d\u7684\u5177\u4f53\u5b9e\u73b0\u800c\u5df2\uff0c\u522b\u72af\u7cca\u6d82\uff0c\u6211\u4eec\u53ef\u4ee5\u628a\u4efb\u610f\u5b9e\u73b0\u4e86\u63a5\u53e3\u7684\u53d8\u91cf\u8d4b\u503c\u7ed9a\uff0c\u90a3\u65f6\uff0ca\u4e2d\u65b9\u6cd5\u5217\u8868\u7684\u6307\u9488\u5c31\u6307\u5411\u4e86\u65b0\u7684\u5b9e\u73b0\uff0ca.eat()\u548ca.sleep()\u8c03\u7528\u7684\u5c31\u662f\u65b0\u7684\u5b9e\u73b0<\/code><\/pre>\n<p>\u4e5f\u5c31\u8bf4\u6211\u4eec\u53ea\u9700\u8981\u5b66\u4e60\u63a5\u53e3\u4e2d\u7684\u65b9\u6cd5\u5c31\u53ef\u4ee5\u4e86\uff0c\u7528\u5c31\u7528\u63a5\u53e3\u7c7b\u578b\u7684\u53d8\u91cf\u5373\u53ef\uff0c\u5177\u4f53\u7684\u7c7b\u578b\u4e0d\u9700\u8981\u8003\u8651\uff0c\u8fd9\uff0c\u5c31\u662f\u63a5\u53e3\u7c7b\u578b\u53d8\u91cf\u7684\u597d\u5904<\/p>\n<p>\u5173\u4e8e\u63a5\u53e3\u53d8\u91cf\u7684\u8d4b\u503c\uff0c\u6b63\u5e38\u7684\u53d8\u91cf\u8d4b\u503c\u90fd\u9002\u7528<\/p>\n<pre><code class=\"language-go\">var a animaler = d\n\u6216\na:=animaler(d)\n\u6216\na:=d<\/code><\/pre>\n<p>\u5982\u679c\u6211\u4eec\u4ec5\u4ec5\u53ea\u662f\u60f3\u9a8c\u8bc1\u4e00\u4e0b\uff0c\u67d0\u4e2a\u7ed3\u6784\u4f53\u662f\u5426\u5b9e\u73b0\u4e86\u63a5\u53e3\uff0c\u53ef\u4ee5\u8fd9\u4e48\u505a<\/p>\n<pre><code class=\"language-go\">\/\/ 1\u3001\u5982\u679c\u4e0b\u8ff0\u4ee3\u7801\u53ef\u4ee5\u8d4b\u503c\u6210\u529f\uff0c\u5219\u8bc1\u660e\u7ed3\u6784\u4f53\u5b9e\u73b0\u4e86\u63a5\u53e3\uff0c\u56e0\u4e3a\u6b64\u5904\u6211\u4eec\u53ea\u60f3\u9a8c\u8bc1\uff0c\u6240\u4ee5\u53d8\u91cf\u540d\u65e0\u5173\u7d27\u8981\uff0c\u63a8\u8350\u7528_\u4ee3\u8868\nvar _ \u63a5\u53e3\u7c7b\u578b = &amp;\u7ed3\u6784\u4f53{}  \n\n\/\/ 2\u3001\u4f8b\u5982\uff1a\nvar _ animaler = &amp;dog{}  <\/code><\/pre>\n<p>\u5728\u4ecb\u7ecd\u7ed3\u6784\u4f53\u7684\u65b9\u6cd5\u65f6\uff0c\u6211\u4eec\u63d0\u53ca\uff0c\u65b9\u6cd5\u7684\u63a5\u6536\u8005\u53ef\u4ee5\u662f\u503c\u4e5f\u53ef\u4ee5\u662f\u6307\u9488\uff0c\u5f53\u7ed3\u6784\u4f53\u5728\u5b9e\u73b0\u63a5\u53e3\u89c4\u5b9a\u7684\u65b9\u6cd5\u65f6\uff0c<\/p>\n<p>\u65e0\u8bba\u91c7\u7528\u7684\u662f\u503c\u63a5\u6536\u8005\u8fd8\u6307\u9488\u63a5\u6536\u8005\uff0c\u90fd\u7b97\u662f\u5b9e\u73b0\u4e86\u63a5\u53e3\uff0c\u90fd\u53ef\u4ee5\u5c06\u5b9e\u4f8b\u5316\u597d\u7684\u7ed3\u6784\u4f53\u5bf9\u8c61\u8d4b\u503c\u7ed9\u63a5\u53e3\u53d8\u91cf\uff0c\u4f46\u662f<\/p>\n<p>1\u3001\u5982\u679c\u91c7\u7528\u7684\u662f\u5168\u90e8\u90fd\u662f\u503c\u63a5\u6536\u8005\uff0c\u90a3\u4e48\u65e2\u53ef\u4ee5\u5c06\u5b9e\u4f8b\u5316\u597d\u7684\u7ed3\u6784\u4f53\u5bf9\u8c61\u8d4b\u503c\u7ed9\u63a5\u53e3\u53d8\u91cf\uff0c\u4e5f\u53ef\u4ee5\u5c06\u5b9e\u4f8b\u5316\u597d\u7684\u7ed3\u6784\u4f53\u5bf9\u8c61\u7684\u6307\u9488\u8d4b\u503c\u7ed9\u63a5\u53e3\u53d8\u91cf<\/p>\n<pre><code class=\"language-go\">\/\/ \u6ce8\u610f\uff1a\u5fc5\u987b\u5b9e\u73b0\u5168\u90e8\u63a5\u53e3\u7684\u5185\u7684\u51fd\u6570\uff0c\u624d\u7b97\u5b9e\u73b0\u4e86\u63a5\u53e3\uff0c\u5c11\u4e00\u4e2a\u90fd\u4e0d\u884c\npackage main\n\nimport &quot;fmt&quot;\n\n\/\/ 1\u3001\u5b9a\u4e49\u63a5\u53e3\ntype animaler interface {\n    eat()\n    sleep()\n}\n\n\/\/ 2\u3001\u5b9a\u4e49\u63a5\u53e3\u63d0\ntype dog struct {\n    name  string\n    class string\n}\n\n\/\/ 3\u3001\u5b9e\u73b0\u63a5\u53e3\n\/\/ 3.1\u3001\u5b9e\u73b0\u63a5\u53e3\u5185\u7684\u65b9\u6cd5eat====&gt;\u63a5\u6536\u8005\u4e3a\u503c\u7c7b\u578b\nfunc (d dog) eat() {\n    fmt.Printf(&quot;\u4e00\u53ea\u540d\u4e3a\u3010%v\u3011\u7684\u3010%v\u3011\u6b63\u5728\u5403\u4e1c\u897f\\n&quot;, d.name, d.class)\n\n}\n\n\/\/ 3.2\u3001\u5b9e\u73b0\u63a5\u53e3\u5185\u7684\u65b9\u6cd5sleep====&gt;\u63a5\u6536\u8005\u4e5f\u4e3a\u503c\u7c7b\u578b\nfunc (d dog) sleep() {\n    fmt.Printf(&quot;\u4e00\u53ea\u540d\u4e3a\u3010%v\u3011\u7684\u3010%v\u3011\u6b63\u5728\u7761\u89c9\\n&quot;, d.name, d.class)\n}\n\nfunc main() {\n    d := dog{\n        name:  &quot;\u5929\u84ec\u5143\u5e05&quot;,\n        class: &quot;\u54c8\u58eb\u5947&quot;,\n    }\n\n    var x animaler\n\n    x=d  \/\/ \u65e2\u53ef\u4ee5\u5c06\u5b9e\u4f8b\u5316\u597d\u7684\u7ed3\u6784\u4f53\u5bf9\u8c61\u8d4b\u503c\u7ed9\u63a5\u53e3\u53d8\u91cf \n    x.eat()\n    x.sleep()\n\n    x=&amp;d  \/\/ \u4e5f\u53ef\u4ee5\u5c06\u5b9e\u4f8b\u5316\u597d\u7684\u7ed3\u6784\u4f53\u5bf9\u8c61\u7684\u6307\u9488\u8d4b\u503c\u7ed9\u63a5\u53e3\u53d8\u91cf\n    x.eat()  \/\/ go\u8bed\u6cd5\u7cd6\uff0c\u76f8\u5f53\u4e8e(*x).eat(),\u4e0b\u540c\n    x.sleep()\n}<\/code><\/pre>\n<p>2\u3001\u5982\u679c\u91c7\u7528\u7684\u5305\u542b\u6307\u9488\u63a5\u6536\u8005\uff0c\u90a3\u4e48\u53ea\u80fd\u5c06\u5b9e\u4f8b\u5316\u597d\u7684\u7ed3\u6784\u4f53\u5bf9\u8c61\u7684\u6307\u9488\u8d4b\u503c\u7ed9\u63a5\u53e3\u53d8\u91cf<\/p>\n<pre><code class=\"language-go\">\/\/ \u6ce8\u610f\uff1a\u5fc5\u987b\u5b9e\u73b0\u5168\u90e8\u63a5\u53e3\u7684\u5185\u7684\u51fd\u6570\uff0c\u624d\u7b97\u5b9e\u73b0\u4e86\u63a5\u53e3\uff0c\u5c11\u4e00\u4e2a\u90fd\u4e0d\u884c\npackage main\n\nimport &quot;fmt&quot;\n\n\/\/ 1\u3001\u5b9a\u4e49\u63a5\u53e3\ntype animaler interface {\n    eat()\n    sleep()\n}\n\n\/\/ 2\u3001\u5b9a\u4e49\u63a5\u53e3\u63d0\ntype dog struct {\n    name  string\n    class string\n}\n\n\/\/ 3\u3001\u5b9e\u73b0\u63a5\u53e3\n\/\/ 3.1\u3001\u5b9e\u73b0\u63a5\u53e3\u5185\u7684\u65b9\u6cd5eat====&gt;\u63a5\u6536\u8005\u4e3a\u6307\u9488\u7c7b\u578b\uff0c\u6839\u636e\u4e00\u81f4\u6027\u539f\u5219\uff0c\u4e0b\u9762\u7684\u65b9\u6cd5\u4e5f\u5e94\u8be5\u5199\u6210\u6307\u9488\u63a5\u6536\u8005\uff0c\u5f53\u7136\uff0c\u4e5f\u53ef\u4ee5\u4e0d\u9075\u5faa\u8be5\u539f\u5219\uff0c\u4f46\u53ea\u8981\u5305\u542b\u6307\u9488\u63a5\u6536\u8005\uff0c\u5c31\u53ea\u80fd\u5c06\u5b9e\u4f8b\u5316\u597d\u7684\u7ed3\u6784\u4f53\u5bf9\u8c61\u7684\u6307\u9488\u8d4b\u503c\u7ed9\u63a5\u53e3\u53d8\u91cf\u4e86\nfunc (d *dog) eat() {\n    fmt.Printf(&quot;\u4e00\u53ea\u540d\u4e3a\u3010%v\u3011\u7684\u3010%v\u3011\u6b63\u5728\u5403\u4e1c\u897f\\n&quot;, d.name, d.class)\n\n}\n\n\/\/ 3.2\u3001\u5b9e\u73b0\u63a5\u53e3\u5185\u7684\u65b9\u6cd5sleep====&gt;\u63a5\u6536\u8005\u4e5f\u4e3a\u503c\u7c7b\u578b\nfunc (d *dog) sleep() {\n    fmt.Printf(&quot;\u4e00\u53ea\u540d\u4e3a\u3010%v\u3011\u7684\u3010%v\u3011\u6b63\u5728\u7761\u89c9\\n&quot;, d.name, d.class)\n}\n\nfunc main() {\n    d := dog{\n        name:  &quot;\u5929\u84ec\u5143\u5e05&quot;,\n        class: &quot;\u54c8\u58eb\u5947&quot;,\n    }\n\n    var x animaler\n\n    \/\/x=d  \/\/ \u4e0d\u80fd\u5c06\u5b9e\u4f8b\u5316\u597d\u7684\u7ed3\u6784\u4f53\u5bf9\u8c61\u8d4b\u503c\u7ed9\u63a5\u53e3\u53d8\u91cf\n    \/\/x.eat()\n    \/\/x.sleep()\n\n    x=&amp;d  \/\/ \u53ea\u80fd\u5c06\u5b9e\u4f8b\u5316\u597d\u7684\u7ed3\u6784\u4f53\u5bf9\u8c61\u7684\u6307\u9488\u8d4b\u503c\u7ed9\u63a5\u53e3\u53d8\u91cf\n    x.eat()  \/\/ go\u8bed\u6cd5\u7cd6\uff0c\u76f8\u5f53\u4e8e(*x).eat(),\u4e0b\u540c\n    x.sleep()\n}<\/code><\/pre>\n<h2>\u4e94 \u591a\u4e2a\u7c7b\u578b\u5b9e\u73b0\u591a\u4e2a\u63a5\u53e3<\/h2>\n<p>\u53ef\u4ee5\u591a\u4e2a\u7c7b\u578b\/\u7ed3\u6784\u4f53\u5b9e\u73b0\u540c\u4e00\u4e2a\u63a5\u53e3\uff0c\u4e5f\u53ef\u4ee5\u4e00\u4e2a\u7c7b\u578b\u5b9e\u73b0\u591a\u4e2a\u63a5\u53e3<\/p>\n<pre><code class=\"language-go\">package main\n\nimport &quot;fmt&quot;\n\n\/\/ 1\u3001\u52a8\u7269\u63a5\u53e3\ntype animaler interface {\n    eat()\n    sleep()\n}\n\n\/\/ 2\u3001\u730e\u624b\u63a5\u53e3\ntype hunter interface {\n    hunting()  \/\/ \u6355\u730e\n}\n\n\/\/ 3\u3001\u4e00\u4e2a\u7c7b\u578b\u5b9e\u73b0\u591a\u4e2a\u63a5\u53e3\uff1adog\u65e2\u5b9e\u73b0\u4e86animaler\u53c8\u5b9e\u73b0\u4e86hunter\u63a5\u53e3\ntype dog struct {\n    name string\n    class string\n}\n\nfunc (d dog) eat()  {\n    fmt.Printf(&quot;\u4e00\u53ea\u540d\u4e3a\u3010%v\u3011\u7684\u3010%v\u3011\u6b63\u5728\u5403\u4e1c\u897f\\n&quot;,d.name,d.class )\n}\n\nfunc (d dog) sleep()  {\n    fmt.Printf(&quot;\u4e00\u53ea\u540d\u4e3a\u3010%v\u3011\u7684\u3010%v\u3011\u6b63\u5728\u7761\u89c9\\n&quot;,d.name,d.class )\n}\n\nfunc (d dog) hunting()  {\n    fmt.Printf(&quot;\u4e00\u53ea\u540d\u4e3a\u3010%v\u3011\u7684\u3010%v\u3011\u6b63\u5728\u6355\u730e\\n&quot;,d.name,d.class )\n\n}\n\n\/\/ 4\u3001\u591a\u4e2a\u7c7b\u578b\u5b9e\u73b0\u540c\u4e00\u4e2a\u63a5\u53e3\uff1acat\u4e0edog\u90fd\u5b9e\u73b0\u4e86animaler\u63a5\u53e3\ntype cat struct {\n    name string\n}\n\nfunc (c cat) sleep()  {\n    fmt.Printf(&quot;\u4e00\u53ea\u540d\u4e3a\u3010%v\u3011\u7684\u5c0f\u82b1\u732b\u6b63\u5728\u7761\u89c9\\n&quot;,c.name)\n\n}\n\nfunc main() {\n    d:=dog{\n        name: &quot;\u5929\u84ec\u5143\u5e05&quot;,\n        class: &quot;\u54c8\u58eb\u5947&quot;,\n    }\n    d.eat()\n    d.sleep()\n    d.hunting()\n\n    \/\/ dog\u5b9e\u73b0\u4e86\u4e24\u79cd\u63a5\u53e3animal\u548chunter\uff0c\u6240\u4ee5\u4e0b\u8ff0\u4e24\u884c\u4ee3\u7801\u5747\u901a\u8fc7\n    var _ animaler = &amp;dog{}\n    var _ hunter = &amp;dog{}\n\n    c:=cat{&quot;egon&quot;}\n    c.sleep()\n}<\/code><\/pre>\n<h2>\u516d \u63a5\u53e3\u5d4c\u5957<\/h2>\n<p><\/p><div id=\"rml_readmorelogin_placeholder\" style=\"position:relative;\"><div id=\"rml_fade_content\" style=\"position: absolute;\r\ntop:-10em;\r\nwidth:100%;\r\nheight:10em;\r\nbackground: -webkit-linear-gradient(rgba(255, 255, 255, 0) 0%,#ffffff 100%);\r\nbackground-image: -moz-linear-gradient(rgba(255, 255, 255, 0) 0%,#ffffff 100%);\r\nbackground-image: -o-linear-gradient(rgba(255, 255, 255, 0) 0%,#ffffff 100%);\r\nbackground-image: linear-gradient(rgba(255, 255, 255, 0) 0%,#ffffff 100%);\r\nbackground-image: -ms-linear-gradient(rgba(255, 255, 255, 0) 0%,#ffffff 100%);\"><\/div><div class=\"wpf-controller aru_rml_from_in_post\" style=\"background-color:#eeeeee;border:5px solid #cce6ff;\" id=\"ARU_ReadMoreLogin_ReadMoreLoginController\"><h2 id=\"Header\">\u67e5\u770b\u66f4\u591a<\/h2><div id=\"Message\"><p>\u8054\u7cfb\u7ba1\u7406\u5458\u5fae\u4fe1tutu19192010\uff0c\u6ce8\u518c\u8d26\u53f7<\/p>\n<\/div><div id=\"StatusBarHeader\"><\/div><form id=\"ARU_ReadMoreLogin_ReadMoreLoginController\"><input name=\"post_id\" value=\"1948\" type=\"hidden\"\/><input name=\"_init_callback\" value=\"InitLogin\" type=\"hidden\"\/><input name=\"post_id\" value=\"1948\" type=\"hidden\"\/><input name=\"rt_ype\" value=\"1\" type=\"hidden\"\/><input name=\"nonce\" value=\"7c342d94b9\" type=\"hidden\"\/><input name=\"_wpnonce\" value=\"7755f0f36d\" type=\"hidden\"\/><input name=\"_controller\" value=\"ARU_ReadMoreLogin\\ReadMoreLoginController\" type=\"hidden\"\/><input name=\"_proxy_controller\" value=\"ARU_ReadMoreLogin\\ReadMoreLoginController\" type=\"hidden\"\/><input name=\"_view\" value=\"ARU_ReadMoreLogin\\ReadMoreLoginView\" type=\"hidden\"\/><table class=\"wpf-table-placeholder\"><tbody class=\"wpf-table-placeholder\"><tr class=\"wpf-table-placeholder\"><td class=\"wpf-table-placeholder-input\" width=\"400px\"><table class=\"wpf-table-placeholder\"><tbody class=\"wpf-table-placeholder\"><tr class=\"wpf-table-placeholder\"><th class=\"wpf-table-placeholder-input\"><label class=\"wpf-label\">Username:<\/label><\/th><\/tr><tr class=\"wpf-table-placeholder\"><td class=\"wpf-table-placeholder-input\"><input class=\"regular-text text_input\" name=\"username\" value=\"\" type=\"text\"\/><\/td><\/tr><tr class=\"wpf-table-placeholder\"><th class=\"wpf-table-placeholder-input\"><label class=\"wpf-label\">Password:<\/label><\/th><\/tr><tr class=\"wpf-table-placeholder\"><td class=\"wpf-table-placeholder-input\"><input class=\"regular-text text_input\" name=\"password\" value=\"\" type=\"password\"\/><\/td><\/tr><\/tbody><\/table><p class=\"wpf-table-placeholder submit\"><button class=\"wp_plugin_framework_ajax_button\" type=\"button\" style=\"background-color:#4D90FE;;color:#ffffff;;border:1px solid #3079ed;\" name=\"_event\" value=\"ButtonLogin\">Log in<\/button><\/p><\/td><td class=\"wpf-table-placeholder-input\"><\/td><\/tr><\/tbody><\/table><\/form><div id=\"ButtonStartRegister\"><a href=\"https:\/\/egonlin.com\/wp-login.php?action=register\">Register<\/a><\/div><div id=\"Link1\"><a href=\"https:\/\/egonlin.com\/wp-login.php?action=lostpassword\">Forgotten username or password?<\/a><\/div><div id=\"StatusBarFooter\"><\/div><\/div><\/div><div id=aru_remaining_content><\/div>","protected":false},"excerpt":{"rendered":"<p>[TOC] \u63a5\u53e3 \u4e00 Go\u8bed\u8a00\u4e2d\u7684\u63a5\u53e3\u4ecb\u7ecd Go\u8bed\u8a00\u4e2d\u7684\u63a5\u53e3\u662f\u4ec0\u4e48\uff1f * 1)\u662f\u4e00\u79cd\u7c7b\u578b * 2)\u662f\u4e00\u7ec4\u529f\u80fd\u7684 [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":2705,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[260,261,263,262],"_links":{"self":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/posts\/1948"}],"collection":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1948"}],"version-history":[{"count":0,"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/posts\/1948\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=\/wp\/v2\/media\/2705"}],"wp:attachment":[{"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1948"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1948"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/egonlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1948"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}