{"id":77,"date":"2019-10-15T13:55:48","date_gmt":"2019-10-15T05:55:48","guid":{"rendered":"https:\/\/chenqinghe.com\/?p=77"},"modified":"2020-08-17T10:02:09","modified_gmt":"2020-08-17T02:02:09","slug":"%e4%bd%bf%e7%94%a8go-module%e6%97%b6%e9%81%87%e5%88%b0%e7%9a%84%e5%9d%91","status":"publish","type":"post","link":"https:\/\/chenqinghe.com\/?p=77","title":{"rendered":"\u4f7f\u7528go module\u65f6\u9047\u5230\u7684\u5751"},"content":{"rendered":"<ol>\n<li>&nbsp;<span style=\"font-size: 18pt;\">\u83b7\u53d6\u4f9d\u8d56\u5305\u5931\u8d25<\/span><\/li>\n<\/ol>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"golang\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">package main\n\nimport (\n\t\"github.com\/gin-gonic\/gin\"\n)\n\nfunc main() {\n\tr := gin.New()\n\n\tr.GET(\"\/\", func(c *gin.Context) {\n\t\tc.Writer.Write([]byte(\"hello world\"))\n\t})\n\n\tr.Run(\"127.0.0.1:8080\")\n}<\/pre>\n<p>\u6267\u884cgo build\u547d\u4ee4\u540e\uff0c\u7ed3\u679c\u5982\u4e0b\uff1a<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">qinghe@localhost:~\/go\/src\/test$ ls\ngo.mod  main.go\nqinghe@localhost:~\/go\/src\/test$ go build \nbuild test: cannot load github.com\/gin-gonic\/gin: module github.com\/gin-gonic\/gin: Get https:\/\/goproxy.golang.org\/github.com\/gin-gonic\/gin\/@v\/list: dial tcp 216.239.37.1:443: connect: connection refused<\/pre>\n<p><del>\u56e0\u4e3a\u5b89\u88c5go\u540e\uff0c\u9ed8\u8ba4\u7684GOPROXY\u73af\u5883\u53d8\u91cf\u4e3a<strong>https:\/\/goproxy.golang.org<\/strong>\uff0c\u800c\u8fd9\u4e2a\u4ee3\u7406\u5728\u56fd\u5185\u662f\u65e0\u6cd5\u8bbf\u95ee\u7684\uff0c\u56e0\u6b64\u4f1a\u62a5\u9519\u3002<\/del><\/p>\n<p>\u6700\u65b0\u76841.13.3\u7248\u672c\u9ed8\u8ba4\u7684GOPROXY\u503c\u4e3a<strong>https:\/\/goproxy.golang.org,direct<\/strong>\uff0c\u4e5f\u5373\u901a\u8fc7\u4ee3\u7406\u4e0d\u901a\u540e\u4f1a\u5c1d\u8bd5\u76f4\u8fde\uff0c\u53ea\u8981\u4e0d\u662f\u62c9\u53d6\u5899\u5916\u5305\u7684\u8bdd\uff0c\u4e00\u822c\u662f\u6ca1\u95ee\u9898\u7684\u4e86\u3002\u53e6\u5916\uff0cGOSUMDB\u4e5f\u5b58\u5728\u540c\u6837\u7684\u95ee\u9898\uff0c\u56e0\u6b64\u5f3a\u70c8\u5efa\u8bae\u5b89\u88c5Go\u540e\u7684\u7b2c\u4e00\u6b65\u5c31\u662f\u4fee\u6539\u8fd9\u4e24\u4e2a\u73af\u5883\u53d8\u91cf\u7684\u503c\uff1a<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">export GOPROXY=https:\/\/goproxy.cn,direct\nexport GOSUMDB=sum.golang.google.cn  #\u6b64\u5730\u5740\u672a\u88ab\u5899<\/pre>\n<p>2. <span style=\"font-size: 18pt;\">\u4e3b\u7248\u672c\u53d8\u66f4<\/span><\/p>\n<p>go modules\u91c7\u53d6\u4e86\u5341\u5206\u6fc0\u8fdb\u7684\u7b56\u7565\uff0c\u8981\u6c42\u6240\u6709\u7684\u9879\u76ee\u90fd\u91c7\u7528\u8bed\u4e49\u5316\u7248\u672c\uff08<a href=\"https:\/\/semver.org\/\" target=\"_blank\"  rel=\"nofollow\" >semantic version<\/a>\uff09\u53d1\u5e03\u3002\u56e0\u6b64\u8ba4\u4e3av1+\u548cv1\u7248\u672c\u4e0d\u517c\u5bb9\uff0c\u6240\u4ee5\u5728go modules\u770b\u6765v1\u548cv1+\u662f\u5b8c\u5168\u4e0d\u540c\u7684modules\uff0c\u5bfc\u5165\u65f6\u7684module\u540d\u79f0\u4e5f\u4e0d\u540c\u3002<\/p>\n<p>\u4f8b\u5982\uff0c\u5728\u5bfc\u5165v1\u6216v0\u7248\u672c\u65f6\uff1a<\/p>\n<p>go.mod:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">module  mymodule\n\nrequire (\n    github.com\/user\/pkg  v1.0.1\n)<\/pre>\n<p>\u5bfc\u5165v2\u7248\u672c\u65f6\u5c31\u8981\u5728module\u540d\u540e\u52a0\u4e0av2\uff1a<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"golang\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">module mymodule\n\nrequire (\n     github.com\/user\/pkg\/v2  v2.0.1\n)<\/pre>\n<p>\u4e0d\u5149\u5728go.mod\u4e2d\u9700\u8981\u5728module\u540d\u79f0\u540e\u52a0\u4e0a\u4e3b\u7248\u672c\u53f7\uff0c\u5728import\u8bed\u53e5\u4e2d\u540c\u6837\u4e5f\u8981\u52a0\u4e0a\u4e3b\u7248\u672c\u53f7\uff1a<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">package main\n\nimport \"github.com\/user\/pkg\/v2\"\n\nfunc main(){\n\n    pkg.Hello()\n\n}<\/pre>\n<p>\u4f46\u662f\u8fd9\u91cc\u8981\u6ce8\u610f\uff0cimport\u540e\u9762\u662fpackage\u7684\u8def\u5f84\uff0c \u5728\u4f7f\u7528\u65f6\uff0c\u8fd8\u662f\u8981\u4f7f\u7528package\u540d\uff0c\u5373\uff1apkg.Hello()<\/p>\n<p>\u56e0\u4e3av1\u548cv2\u5c5e\u4e8e\u4e0d\u540c\u7684module\uff0c\u6240\u4ee5\u9879\u76ee\u4e2d\u5141\u8bb8\u4e0d\u540c\u4e3b\u7248\u672c\u7684module\u540c\u65f6\u5b58\u5728\uff1a<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">package main\n\nimport (\n    \"github.com\/user\/pkg\"\n    v2 \"github.com\/user\/pkg\/v2\"\n)\n\nfunc main (){\n    pkg.Hello()\n    v2.Hello()\n}<\/pre>\n<p>\u4f46\u662f\u6267\u884c\u4e86go mod vendor\u65f6\uff0c\u4e0d\u540c\u4e3b\u7248\u672c\u7684\u4f9d\u8d56\u5e93\u5982\u4f55\u5171\u5b58\u5728\u4e00\u4e2avendor\u76ee\u5f55\u4e2d\u5462\uff1f\u7b54\u6848\u662f\uff1a\u653e\u5728v2\u76ee\u5f55\u4e2d\u3002<\/p>\n<p>\u4f8b\u5982\u4e0b\u9762\u7684module:<\/p>\n<pre class=\"wp-block-preformatted\">pkg<br> \u251c\u2500\u2500 go.mod<br> \u251c\u2500\u2500 main.go<br> \u2514\u2500\u2500 subpkg<br>     \u251c\u2500\u2500 bar.go<br>     \u2514\u2500\u2500 foo.go<\/pre>\n<p>v2\u7248\u672c\uff1a<\/p>\n<pre class=\"wp-block-preformatted\">pkg<br> \u2514\u2500\u2500 v2<br>     \u251c\u2500\u2500 go.mod<br>     \u251c\u2500\u2500 main.go<br>     \u2514\u2500\u2500 subpkg<br>         \u251c\u2500\u2500 bar.go<br>         \u2514\u2500\u2500 foo.go<\/pre>\n<p>\u653e\u5728vendor\u76ee\u5f55\u4e2d\u5171\u5b58\uff1a<\/p>\n<pre class=\"wp-block-preformatted\">pkg\n \u251c\u2500\u2500 go.mod\n \u251c\u2500\u2500 main.go\n \u251c\u2500\u2500 subpkg\n \u2502&nbsp;&nbsp; \u251c\u2500\u2500 bar.go\n \u2502&nbsp;&nbsp; \u2514\u2500\u2500 foo.go\n \u2514\u2500\u2500 v2\n     \u251c\u2500\u2500 go.mod\n     \u251c\u2500\u2500 main.go\n     \u2514\u2500\u2500 subpkg\n         \u251c\u2500\u2500 bar.go\n         \u2514\u2500\u2500 foo.go<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp;\u83b7\u53d6\u4f9d\u8d56\u5305\u5931\u8d25 \u6267\u884cgo build\u547d\u4ee4\u540e\uff0c\u7ed3\u679c\u5982\u4e0b\uff1a \u56e0\u4e3a\u5b89\u88c5go\u540e\uff0c\u9ed8\u8ba4\u7684GOPROXY\u73af\u5883\u53d8\u91cf\u4e3ahttps:\/\/goproxy.golang.org\uff0c\u800c\u8fd9\u4e2a\u4ee3\u7406\u5728\u56fd\u5185\u662f\u65e0\u6cd5\u8bbf\u95ee\u7684\uff0c\u56e0\u6b64\u4f1a\u62a5\u9519\u3002 \u6700\u65b0\u76841.13.3\u7248\u672c\u9ed8\u8ba4\u7684GOPROXY\u503c\u4e3ahttps:\/\/goproxy.golang.org,direct\uff0c\u4e5f\u5373\u901a\u8fc7\u4ee3\u7406\u4e0d\u2026\u2026<\/p>\n","protected":false},"author":1,"featured_media":90,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[9],"tags":[16],"_links":{"self":[{"href":"https:\/\/chenqinghe.com\/index.php?rest_route=\/wp\/v2\/posts\/77"}],"collection":[{"href":"https:\/\/chenqinghe.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/chenqinghe.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/chenqinghe.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/chenqinghe.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=77"}],"version-history":[{"count":0,"href":"https:\/\/chenqinghe.com\/index.php?rest_route=\/wp\/v2\/posts\/77\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/chenqinghe.com\/index.php?rest_route=\/wp\/v2\/media\/90"}],"wp:attachment":[{"href":"https:\/\/chenqinghe.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=77"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/chenqinghe.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=77"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/chenqinghe.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=77"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}