{"id":6445,"date":"2023-02-22T22:18:56","date_gmt":"2023-02-22T14:18:56","guid":{"rendered":"https:\/\/i007.vip:15443\/wordpress\/?p=6445"},"modified":"2023-02-22T22:18:56","modified_gmt":"2023-02-22T14:18:56","slug":"%e8%af%a6%e8%a7%a3go-%e4%be%9d%e8%b5%96%e7%ae%a1%e7%90%86-go-mod-tidy","status":"publish","type":"post","link":"https:\/\/i007.cc\/wordpress\/archives\/6445","title":{"rendered":"\u8be6\u89e3Go\u00a0\u4f9d\u8d56\u7ba1\u7406\u00a0go\u00a0mod\u00a0tidy"},"content":{"rendered":"<p class=\"title\"><a href=\"https:\/\/www.jb51.net\/article\/266360.htm\">\u539f\u6587\u5730\u5740<\/a><\/p>\n<p>\u00a0<\/p>\n<div class=\"info\">\u00a0\u66f4\u65b0\u65f6\u95f4\uff1a2022\u5e7410\u670831\u65e5 17:26:28 \u00a0 \u4f5c\u8005\uff1a\u5348\u591c\u6e38\u6c11<\/div>\n<div class=\"lbd clearfix\"><\/div>\n<div class=\"summary\">\u8fd9\u7bc7\u6587\u7ae0\u4e3b\u8981\u4e3a\u5927\u5bb6\u4ecb\u7ecd\u4e86\u8be6\u89e3Go\u00a0\u4f9d\u8d56\u7ba1\u7406\u00a0go\u00a0mod\u00a0tidy\uff0c\u6709\u9700\u8981\u7684\u670b\u53cb\u53ef\u4ee5\u501f\u9274\u53c2\u8003\u4e0b\uff0c\u5e0c\u671b\u80fd\u591f\u6709\u6240\u5e2e\u52a9\uff0c\u795d\u5927\u5bb6\u591a\u591a\u8fdb\u6b65\uff0c\u65e9\u65e5\u5347\u804c\u52a0\u85aa<\/div>\n<div class=\"lbd clearfix\"><\/div>\n<div id=\"content\">\n<div id=\"navCategory\">+<\/p>\n<h5 class=\"catalogue\">\u76ee\u5f55<\/h5>\n<\/div>\n<p class=\"maodian\"><a name=\"_label0\"><\/a><\/p>\n<h2 id=\"heading-0\">\u524d\u8a00<\/h2>\n<p><code>go mod tidy<\/code>\u7684\u4f5c\u7528\u662f\u628a\u9879\u76ee\u6240\u9700\u8981\u7684\u4f9d\u8d56\u6dfb\u52a0\u5230<code>go.mod<\/code>\uff0c\u5e76\u5220\u9664<code>go.mod<\/code>\u4e2d\uff0c\u6ca1\u6709\u88ab\u9879\u76ee\u4f7f\u7528\u7684\u4f9d\u8d56\u3002<\/p>\n<div class=\"jb51code\">\n<div>\n<div id=\"highlighter_169972\" class=\"syntaxhighlighter  plain\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"plain plain\">Tidy makes sure go.mod matches the source code in the module.<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"plain plain\">It adds any missing modules necessary to build the current module's<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"plain plain\">packages and dependencies, and it removes unused modules that<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"plain plain\">don't provide any relevant packages. It also adds any missing entries<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"plain plain\">to go.sum and removes any unnecessary ones.<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<p>\u63a5\u4e0b\u6765\u6211\u4eec\u5c06\u6df1\u5165\u6e90\u7801\u7814\u7a76<code>go mod tidy<\/code>\u7684\u6267\u884c\u8fc7\u7a0b<\/p>\n<ul>\n<li>\u7248\u672c\u00a0<code>go 1.18<\/code><\/li>\n<li>\u7f16\u8f91\u5668\u00a0<code>vscode<\/code><\/li>\n<\/ul>\n<p class=\"maodian\"><a name=\"_label1\"><\/a><\/p>\n<h2 id=\"heading-1\">Debug\u51c6\u5907<\/h2>\n<p class=\"maodian\"><a name=\"_lab2_1_0\"><\/a><\/p>\n<h3 id=\"heading-2\">\u6e90\u7801\u7684\u4f4d\u7f6e<\/h3>\n<p>\u8f93\u5165\u547d\u4ee4\u884c<code>go env<\/code>,\u627e\u5230<code>GOROOT<\/code>\u8fd9\u4e00\u9879\uff08go\u7684\u5b89\u88c5\u8def\u5f84\uff09<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/img.jbzj.com\/file_images\/article\/202210\/20221031084343059.jpg\" alt=\"\" \/><\/p>\n<p>\u8def\u5f84<code>${GOROOT}\/src\/cmd\/go\/internal\/modcmd<\/code>\u5c31\u662f<code>go mod<\/code>\u547d\u4ee4\u76f8\u5173\u7684\u6e90\u7801\u4e86\u3002\u5176\u7a0b\u5e8f\u5165\u53e3<code>${GOROOT\/src\/cmd\/go\/main.go}<\/code>\u8fdb\u5165\u8be5\u76ee\u5f55\uff08\u5176\u5b9e\u4e5f\u53ef\u4ee5\u4e0d\u8fdb\uff0c\u4f46\u662f\u5f85\u4f1a\u770b\u6e90\u7801\u65f6\u8fd8\u662f\u5f97\u8fdb\u53bb\uff09\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4<code>go build -o .\/godebug.exe -gcflags all=\"-N -l\" -mod=mod .<\/code>\u5f97\u5230\u4ee5\u4e0b\u7a0b\u5e8f\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/img.jbzj.com\/file_images\/article\/202210\/20221031084343060.jpg\" alt=\"\" \/><\/p>\n<p>\u6ce8\uff1a\u53ef\u4ee5\u76f4\u63a5\u8c03\u8bd5<code>main.go<\/code>\u8fd9\u4e2a\u6587\u4ef6\uff0c\u4f46\u662f\u00a0<code>go mod tidy<\/code>\u8fd9\u4e2a\u547d\u4ee4\u662f\u6839\u636e\u6267\u884c\u547d\u4ee4\u65f6\u7684\u5de5\u4f5c\u8def\u5f84\u67e5\u627e<code>go.mod<\/code>\u6587\u4ef6\uff0c\u8fd9\u65e0\u5f62\u6307\u5b9a\u4e86\u5de5\u4f5c\u8def\u5f84\u4e3a\uff1a<code>${GOROOT}\/src\/cmd<\/code><\/p>\n<p class=\"maodian\"><a name=\"_lab2_1_1\"><\/a><\/p>\n<h3 id=\"heading-3\">debug \u914d\u7f6e\u6587\u4ef6<\/h3>\n<div class=\"jb51code\">\n<div>\n<div id=\"highlighter_868967\" class=\"syntaxhighlighter  json\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"json plain\">{<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"json spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"json string\">\"version\"<\/code><code class=\"json plain\">: <\/code><code class=\"json value\">\"0.2.0\"<\/code><code class=\"json plain\">,<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"json spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"json string\">\"configurations\"<\/code><code class=\"json plain\">: [<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"json spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"json plain\">{<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"json spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"json string\">\"name\"<\/code><code class=\"json plain\">: <\/code><code class=\"json value\">\"GO debug\"<\/code><code class=\"json plain\">,<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"json spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"json string\">\"type\"<\/code><code class=\"json plain\">: <\/code><code class=\"json value\">\"go\"<\/code><code class=\"json plain\">,<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"json spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"json string\">\"request\"<\/code><code class=\"json plain\">: <\/code><code class=\"json value\">\"attach\"<\/code><code class=\"json plain\">,<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"json spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"json string\">\"mode\"<\/code><code class=\"json plain\">: <\/code><code class=\"json value\">\"remote\"<\/code><code class=\"json plain\">,<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"json spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"json string\">\"host\"<\/code><code class=\"json plain\">: <\/code><code class=\"json value\">\"127.0.0.1\"<\/code><code class=\"json plain\">,<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"json spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"json string\">\"port\"<\/code><code class=\"json plain\">: <\/code><code class=\"json number\">2345<\/code><code class=\"json plain\">,<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"json spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"json plain\">}<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"json spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"json plain\">]<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"json plain\">}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<p class=\"maodian\"><a name=\"_lab2_1_2\"><\/a><\/p>\n<h3 id=\"heading-4\">dlv\u542f\u52a8<\/h3>\n<p>\u968f\u4fbf\u8fdb\u4e00\u4e2ago\u9879\u76ee\u4e2d\uff0c\u6267\u884c\u547d\u4ee4<code>dlv exec --headless --listen :2345 --api-version=2 D:\/go\/src\/cmd\/go\/godebug.exe -- mod tidy<\/code>,\u8fd9\u91cc\u7684\u7a0b\u5e8f\u662f\u6211\u4eec\u4e0a\u9762\u521a\u521a\u7f16\u8bd1\u51fa\u6765\u7684\uff0c\u8def\u5f84\u81ea\u5df1CV\u5c31\u884c\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/img.jbzj.com\/file_images\/article\/202210\/20221031084343061.jpg\" alt=\"\" \/><\/p>\n<p>\u73b0\u5728dlv\u670d\u52a1\u7aef\u5df2\u7ecfok\u4e86\uff0c\u73b0\u5728\u56de\u5230\u6e90\u7801\u90a3\u8fb9\uff0c\u542f\u52a8\u5ba2\u6237\u7aef\u5c31\u884c\u4e86\u3002<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/img.jbzj.com\/file_images\/article\/202210\/20221031084343062.jpg\" alt=\"\" \/><\/p>\n<p>\u5982\u679c\u8d70\u7684exec\uff0c\u597d\u50cf\u662f\u6ca1\u6cd5vscode\u7684restart\u6309\u94ae\u8c8c\u4f3c\u4e0d\u8d77\u4f5c\u7528,\u6bcf\u6b21\u90fd\u9700\u8981\u91cd\u590d\u6267\u884c\u4ee5\u4e0a\u4e24\u4e2a\u52a8\u4f5c<\/p>\n<p class=\"maodian\"><a name=\"_label2\"><\/a><\/p>\n<h2 id=\"heading-5\">\u6267\u884c\u8fc7\u7a0b<\/h2>\n<p>\u5165\u53e3<code>${GOOROOT}\/src\/cmd\/go\/internal\/modcmd\/tidy.go<\/code>,\u8be5\u65b9\u6cd5\u53ea\u662f\u505a\u4e86\u4e00\u4e9b\u53c2\u6570\u914d\u7f6e\uff0c\u4e3b\u8981\u903b\u8f91\u5728<code>modload.LoadPackages<\/code><\/p>\n<div class=\"jb51code\">\n<div>\n<div id=\"highlighter_981687\" class=\"syntaxhighlighter  go\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"go keyword bold\">func<\/code> <code class=\"go plain\">runTidy(ctx context.Context, cmd *base.Command, args []<\/code><code class=\"go value bold\">string<\/code><code class=\"go plain\">) {<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">...<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">modload.LoadPackages(ctx, modload.PackageOpts{<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">GoVersion:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 tidyGo.<\/code><code class=\"go value bold\">String<\/code><code class=\"go plain\">(),<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">Tags:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 imports.AnyTags(),<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">Tidy:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"go keyword bold\">true<\/code><code class=\"go plain\">,<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">TidyCompatibleVersion:\u00a0\u00a0\u00a0 tidyCompat.<\/code><code class=\"go value bold\">String<\/code><code class=\"go plain\">(),<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">VendorModulesInGOROOTSrc: <\/code><code class=\"go keyword bold\">true<\/code><code class=\"go plain\">,<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">ResolveMissingImports:\u00a0\u00a0\u00a0 <\/code><code class=\"go keyword bold\">true<\/code><code class=\"go plain\">,<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">LoadTests:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"go keyword bold\">true<\/code><code class=\"go plain\">,<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">AllowErrors:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 tidyE,<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">SilenceMissingStdImports: <\/code><code class=\"go keyword bold\">true<\/code><code class=\"go plain\">,<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">}, <\/code><code class=\"go string\">\"all\"<\/code><code class=\"go plain\">)<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"go plain\">}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<ul>\n<li>\u52a0\u8f7d\u9879\u76eego.mod\u7684\u6587\u4ef6\u5185\u5bb9<\/li>\n<li>\u6784\u5efa\u6574\u4e2a\u9879\u76ee\u7684\u4f9d\u8d56\u5173\u7cfb<\/li>\n<li>\u66f4\u65b0go.mod\u6587\u4ef6<\/li>\n<\/ul>\n<div class=\"jb51code\">\n<div>\n<div id=\"highlighter_681528\" class=\"syntaxhighlighter  go\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"go comments\">\/\/ {GOROOT}\/src\/cmd\/go\/internal\/modload\/load.go<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"go keyword bold\">func<\/code> <code class=\"go plain\">LoadPackages(\u53c2\u6570\u7701\u7565)(\u53c2\u6570\u7701\u7565) {<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">...<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/\u00a0 \u52a0\u8f7d\u9879\u76eego.mod\u7684\u6587\u4ef6\u5185\u5bb9<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">initialRS := LoadModFile(ctx)<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">...<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"go plain\">}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<p class=\"maodian\"><a name=\"_lab2_2_3\"><\/a><\/p>\n<h3 id=\"heading-6\">\u52a0\u8f7dgo.mod\u6587\u4ef6<\/h3>\n<p>1.\u6839\u636e\u6267\u884c<code>go mod tidy<\/code>\u65f6\u6240\u5728\u7684\u5de5\u4f5c\u8def\u5f84\uff0c\u5411\u4e0a\u67e5\u627e\u6700\u5148\u627e\u5230\u7684<code>go.mod<\/code>\u6587\u4ef6\uff0c\u8bfb\u53d6\u5e76\u89e3\u6790\u8be5\u6587\u4ef6\u5185\u5bb9\u3002<\/p>\n<div class=\"jb51code\">\n<div>\n<div id=\"highlighter_907172\" class=\"syntaxhighlighter  go\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<div class=\"line number23 index22 alt2\">23<\/div>\n<div class=\"line number24 index23 alt1\">24<\/div>\n<div class=\"line number25 index24 alt2\">25<\/div>\n<div class=\"line number26 index25 alt1\">26<\/div>\n<div class=\"line number27 index26 alt2\">27<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"go comments\">\/\/ ${GOROOT}\/src\/cmd\/go\/internal\/modload\/init.go<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"go keyword bold\">func<\/code> <code class=\"go plain\">LoadModFile(ctx context.Context) *Requirements {<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">...<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ \u505a\u4e00\u4e9b\u521d\u59cb\u5316\u7684\u8bbe\u7f6e\uff0c\u83b7\u53d6\u5f53\u524d\u9879\u76ee\u7684go.mod\u8def\u5f84<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ \u6267\u884cgo mod tidy \u662f\u7684\u5de5\u4f5c\u8def\u5f84\u5f80\u4e0a\u4e00\u5c42\u5c42\u5bfb\u627e\uff0c\u627e\u5230\u7684\u7b2c\u4e00\u4e2a\u8def\u5f84\u5373\u4e3a\u76ee\u6807\u8def\u5f84<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ \u67e5\u627e\u8def\u5f84\u7684\u8c03\u7528\u6808`Init() => findModuleRoot(base.Cwd())`<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">Init()<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">...<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ \u8bfb\u53d6go.mod\u6587\u4ef6\u5e76\u89e3\u6790\u8be5\u6587\u4ef6\u5185\u5bb9;modRoots\u7684\u957f\u5ea6\u4e3a1\uff0c\u5927\u4e8e1\u7684\u60c5\u51b5\u6211\u6ca1\u6709\u9047\u5230\u8fc7<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go keyword bold\">for<\/code> <code class=\"go plain\">_, modroot := <\/code><code class=\"go keyword bold\">range<\/code> <code class=\"go plain\">modRoots {<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">gomod := modFilePath(modroot)<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">data, f, err := ReadModFile(gomod, fixVersion(ctx, &fixed))<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">}<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">...<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ \u53ea\u83b7\u53d6go.mod\u6587\u4ef6\u4e2d\u7684require\u5217\u8868\uff0c\u5e76\u8bb0\u5f55\u6bcf\u4e2a\u4f9d\u8d56\u7684\u6700\u9ad8\u7248\u672c\u53f7<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">rs := requirementsFromModFiles(ctx, modFiles)<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">...<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ \u5982\u679c\u53d1\u73b0\u5f53\u524d\u7684go.mod\u6587\u4ef6\u6709\u91cd\u590d\u7684\u4f9d\u8d56\u8def\u5f84<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ \u8fd9\u91cc\u4f1a\u5148\u5bf9\u5f53\u524d\u9879\u76ee\u7684go.mod\u6587\u4ef6\u8fdb\u884c\u4e00\u6b21\u4f9d\u8d56\u9879\u7684\u8ba1\u7b97<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go keyword bold\">if<\/code> <code class=\"go plain\">rs.hasRedundantRoot() {<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ If any module path appears more than once in the roots, we know that the<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ go.mod file needs to be updated even though we have not yet loaded any<\/code><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ transitive dependencies.<\/code><\/div>\n<div class=\"line number24 index23 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">...<\/code><\/div>\n<div class=\"line number25 index24 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">}<\/code><\/div>\n<div class=\"line number26 index25 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">...<\/code><\/div>\n<div class=\"line number27 index26 alt2\"><code class=\"go plain\">}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<p class=\"maodian\"><a name=\"_lab2_2_4\"><\/a><\/p>\n<h3 id=\"heading-7\">\u52a0\u8f7d\u4f9d\u8d56<\/h3>\n<div class=\"jb51code\">\n<div>\n<div id=\"highlighter_889606\" class=\"syntaxhighlighter  go\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"go comments\">\/\/ {GOROOT}\/src\/cmd\/go\/internal\/modload\/load.go<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"go keyword bold\">func<\/code> <code class=\"go plain\">LoadPackages(...) (...) {<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ \u627e\u51fa\u9879\u76ee\u7684\u6240\u6709\u4f9d\u8d56,\u6709\u4e2a\u5168\u5c40\u53d8\u91cf\u8d1f\u8d23\u6700\u540e\u7684\u5b58\u50a8\u7684<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">ld := loadFromRoots(ctx, loaderParams{<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">PackageOpts:\u00a0 opts,<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">requirements: initialRS,<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">allPatternIsRoot: allPatternIsRoot,<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">listRoots: <\/code><code class=\"go keyword bold\">func<\/code><code class=\"go plain\">(rs *Requirements) (roots []<\/code><code class=\"go value bold\">string<\/code><code class=\"go plain\">) {<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ \u5b9e\u9645\u4e0a\u8c03\u7528\u7684\u662f matchPackages() \u65b9\u6cd5<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">updateMatches(rs, <\/code><code class=\"go keyword bold\">nil<\/code><code class=\"go plain\">)<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ \u8fd9\u91cc\u7684matches\u957f\u5ea6\u4e5f\u662f1\u4e2a<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go keyword bold\">for<\/code> <code class=\"go plain\">_, m := <\/code><code class=\"go keyword bold\">range<\/code> <code class=\"go plain\">matches {<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">roots = <\/code><code class=\"go functions bold\">append<\/code><code class=\"go plain\">(roots, m.Pkgs...)<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">}<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go keyword bold\">return<\/code> <code class=\"go plain\">roots<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">},<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">})<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"go plain\">}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<ul>\n<li>\u83b7\u53d6\u904d\u5386\u6811\u7684\u6839\u8282\u70b9\uff08\u5f53\u524d\u9879\u76ee\u7684\u6240\u6709\u6ee1\u8db3\u6761\u4ef6\u7684\u6587\u4ef6\u5939\u8def\u5f84\uff09<code>loadFromRoots()<\/code>=>\u00a0<code>listRoots()<\/code>\u00a0=>\u00a0<code>matchPackages()<\/code><\/li>\n<\/ul>\n<div class=\"jb51code\">\n<div>\n<div id=\"highlighter_688574\" class=\"syntaxhighlighter  go\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<div class=\"line number23 index22 alt2\">23<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"go comments\">\/\/ ${GOROOT}\/src\/cmd\/go\/internal\/modload\/search.go<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"go keyword bold\">func<\/code> <code class=\"go plain\">matchPackages(...) {<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ \u904d\u5386\u9879\u76ee\u6839\u8def\u5f84<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">walkPkgs := <\/code><code class=\"go keyword bold\">func<\/code><code class=\"go plain\">(root, importPathRoot <\/code><code class=\"go value bold\">string<\/code><code class=\"go plain\">, prune pruning) {<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">...<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ \u8fd9\u91cc\u7684root\u4e3ago.mod\u6240\u5728\u7684\u76ee\u5f55\uff0cimportPathRoot\u4e3ago.mod\u5b9a\u4e49\u7684module<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">err := fsys.Walk(root, <\/code><code class=\"go keyword bold\">func<\/code><code class=\"go plain\">(path <\/code><code class=\"go value bold\">string<\/code><code class=\"go plain\">, fi fs.FileInfo, err <\/code><code class=\"go value bold\">error<\/code><code class=\"go plain\">) <\/code><code class=\"go value bold\">error<\/code> <code class=\"go plain\">{<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ \u4e00\u5927\u5806\u5224\u65ad\u8fc7\u6ee4<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">...<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ \u5305\u540d = moduleName + \u76f8\u5bf9\u8def\u5f84<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">name := importPathRoot + filepath.ToSlash(path[<\/code><code class=\"go functions bold\">len<\/code><code class=\"go plain\">(root):])<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go keyword bold\">if<\/code> <code class=\"go plain\">_, _, err := scanDir(path, tags); err != imports.ErrNoGo {<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">m.Pkgs = <\/code><code class=\"go functions bold\">append<\/code><code class=\"go plain\">(m.Pkgs, name)<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">}<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go keyword bold\">return<\/code> <code class=\"go keyword bold\">nil<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">})<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">}<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ \u540c\u6837\u7684\u8fd9\u91ccmodules\u4e5f\u53ea\u67091\u4e2a\uff0c\u591a\u4e2a\u7684\u6ca1\u9047\u5230\u8fc7<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go keyword bold\">for<\/code> <code class=\"go plain\">_, mod := <\/code><code class=\"go keyword bold\">range<\/code> <code class=\"go plain\">modules {<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">walkPkgs(root, modPrefix, prune)<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">}<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go keyword bold\">return<\/code><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"go plain\">}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<ul>\n<li>\u4ece\u9879\u76ee\u8ddf\u8def\u5f84\u51fa\u53d1\u6784\u5efa\u4f9d\u8d56\u5173\u7cfb<\/li>\n<\/ul>\n<div class=\"jb51code\">\n<div>\n<div id=\"highlighter_284772\" class=\"syntaxhighlighter  go\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<div class=\"line number23 index22 alt2\">23<\/div>\n<div class=\"line number24 index23 alt1\">24<\/div>\n<div class=\"line number25 index24 alt2\">25<\/div>\n<div class=\"line number26 index25 alt1\">26<\/div>\n<div class=\"line number27 index26 alt2\">27<\/div>\n<div class=\"line number28 index27 alt1\">28<\/div>\n<div class=\"line number29 index28 alt2\">29<\/div>\n<div class=\"line number30 index29 alt1\">30<\/div>\n<div class=\"line number31 index30 alt2\">31<\/div>\n<div class=\"line number32 index31 alt1\">32<\/div>\n<div class=\"line number33 index32 alt2\">33<\/div>\n<div class=\"line number34 index33 alt1\">34<\/div>\n<div class=\"line number35 index34 alt2\">35<\/div>\n<div class=\"line number36 index35 alt1\">36<\/div>\n<div class=\"line number37 index36 alt2\">37<\/div>\n<div class=\"line number38 index37 alt1\">38<\/div>\n<div class=\"line number39 index38 alt2\">39<\/div>\n<div class=\"line number40 index39 alt1\">40<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"go comments\">\/\/ {GOROOT}\/src\/cmd\/go\/internal\/modload\/load.go<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"go keyword bold\">func<\/code> <code class=\"go plain\">loadFromRoots(ctx context.Context, params loaderParams) *loader {<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">...<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ \u6ce8\u8fd9\u91cc\u662f\u591a\u6b21\u5faa\u73af\u7684\u8fc7\u7a0b<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ a=>b,\u53ea\u6709\u5f53b\u52a0\u8f7d\u540e\u624d\u80fd\u77e5\u9053\u662f\u5426\u6709b=>c,b=>d\u3002<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ \u6240\u4ee5\u8fd9\u91cc\u4f1a\u4e0d\u65ad\u7684\u91cd\u590d\u8fd9\u4e2a\u8fc7\u7a0b\uff0c\u76f4\u81f3\u6240\u6709\u7684\u4f9d\u8d56\u5173\u7cfb\u6784\u5efa\u5b8c\u6bd5<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go keyword bold\">for<\/code> <code class=\"go plain\">{<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">ld.reset()<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">...<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ \u627e\u51fa\u9879\u76ee\u4e0b\u7684\u6587\u4ef6\u5939\u8def\u5f84\uff0c\u8fd9\u91cc\u7684rootPkgs\u6bcf\u6b21\u5faa\u73af\u90fd\u662f\u4e00\u6837\u7684<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">rootPkgs := ld.listRoots(ld.requirements)<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">...<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ \u4ece\u6839\u8def\u5f84\u51fa\u53d1\uff0c\u904d\u5386\u5168\u90e8\u7684\u6587\u4ef6\uff0c\u83b7\u53d6\u4f9d\u8d56\u5173\u7cfb<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ \u5728\u52a0\u8f7d\u4f9d\u8d56A\u7684\u540c\u65f6\uff0c\u4f1a\u6839\u636e\u4f9d\u8d56A\u91cc\u9762\u7684go.mod\u7ee7\u7eed\u53bb\u627e\u4f9d\u8d56B<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ \u5982\u679c\u53d1\u73b0\u9879\u76ee\u4e2d\u6709\u76f4\u63a5\u5f15\u7528\u4f9d\u8d56A,\u4f46\u662f\u5f53\u524d\u9879\u76ee\u7684go.mod\u6ca1\u6709(\u524d\u9762\u52a0\u8f7d\u8fc7\uff0c\u5b58\u653e\u5728ld.requirements),<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ \u5219\u4f1a\u7ed9\u8be5pkg\u4e00\u4e2aerr(\u8fd9\u91cc\u4e0d\u662fmodule,\u662fmodule\u91cc\u9762\u7684\u67d0\u4e2a\u5305\uff0c\u4f8b\u5982 A\/xxxx,A\/yyy),<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ \u8fd9\u91cc\u4f1a\u4ea4\u7531ld.resolveMissingImports\u53bb\u5904\u7406<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go keyword bold\">for<\/code> <code class=\"go plain\">_, path := <\/code><code class=\"go keyword bold\">range<\/code> <code class=\"go plain\">rootPkgs {<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ \u8fd9\u91cc\u662f\u5e76\u53d1\u52a0\u8f7d\uff0c\u901f\u5ea6\u8fd8\u662f\u6bd4\u8f83\u5feb\u7684<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ \u4e3b\u8981\u7684\u903b\u8f91\u5728\u5728ld.load\u65b9\u6cd5\u4e0a<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">root := ld.pkg(ctx, path, pkgIsRoot)<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go keyword bold\">if<\/code> <code class=\"go plain\">!inRoots[root] {<\/code><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">ld.roots = <\/code><code class=\"go functions bold\">append<\/code><code class=\"go plain\">(ld.roots, root)<\/code><\/div>\n<div class=\"line number24 index23 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">inRoots[root] = <\/code><code class=\"go keyword bold\">true<\/code><\/div>\n<div class=\"line number25 index24 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">}<\/code><\/div>\n<div class=\"line number26 index25 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">}<\/code><\/div>\n<div class=\"line number27 index26 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ \u8fd9\u4e2a\u53ea\u662f\u5c06\u4f9d\u8d56\u6811\u7ed9\u5e73\u94fa\u4e86\u5b58\u653e\u5728 ld.pkgs<\/code><\/div>\n<div class=\"line number28 index27 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">ld.buildStacks()<\/code><\/div>\n<div class=\"line number29 index28 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">...<\/code><\/div>\n<div class=\"line number30 index29 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ \u67d0\u79cd\u7a0b\u5ea6\u4e0a, \u53ef\u4ee5\u8ba4\u4e3a\u8fd9\u91cc\u4e0b\u8f7d\u7684\u662f\u7f3a\u5931\u7684\u76f4\u63a5\u4f9d\u8d56\uff0c\u5373go.mod\u91cc\u9762\u6ca1\u58f0\u660e\uff0c\u4f46\u662f\u9879\u76ee\u5374\u4f7f\u7528\u5230\u4e86\u7684<\/code><\/div>\n<div class=\"line number31 index30 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ \u5982\u679c\u53d1\u73b0\u6ca1\u6709\u7f3a\u5931\u7684\u76f4\u63a5\u4f9d\u8d56\u4e86\uff0c\u5373\u53ef\u8ba4\u4e3a\u4f9d\u8d56\u5173\u7cfb\u5df2\u7ecf\u6784\u5efa\u5b8c\u6bd5\u3002<\/code><\/div>\n<div class=\"line number32 index31 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ \u56e0\u4e3a\u4e0a\u8ff0\u8fc7\u7a0b\u4f1a\u81ea\u52a8\u6784\u5efa\u4f9d\u8d56\u5173\u7cfb\uff0c\u8fd9\u91cc\u53ea\u662f\u6dfb\u52a0\u7f3a\u5931\u7684\u76f4\u63a5\u4f9d\u8d56\uff0c\u7136\u540e\u7531\u4e0a\u9762\u7684\u5faa\u73af\u6765\u6784\u5efa\u4f9d\u8d56\u5173\u7cfb<\/code><\/div>\n<div class=\"line number33 index32 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">modAddedBy := ld.resolveMissingImports(ctx)<\/code><\/div>\n<div class=\"line number34 index33 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go keyword bold\">if<\/code> <code class=\"go functions bold\">len<\/code><code class=\"go plain\">(modAddedBy) == <\/code><code class=\"go value\">0<\/code> <code class=\"go plain\">{<\/code><\/div>\n<div class=\"line number35 index34 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go keyword bold\">break<\/code><\/div>\n<div class=\"line number36 index35 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">}<\/code><\/div>\n<div class=\"line number37 index36 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">}<\/code><\/div>\n<div class=\"line number38 index37 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">...<\/code><\/div>\n<div class=\"line number39 index38 alt2\"><code class=\"go plain\">}<\/code><\/div>\n<div class=\"line number40 index39 alt1\"><code class=\"go comments\">\/\/ \u56e0\u4e3a\u6784\u5efa\u7684\u662f\u6574\u4e2a\u4f9d\u8d56\u5173\u7cfb\uff0c\u6240\u4ee5\u4e0a\u8ff0\u8fc7\u7a0b\u5b8c\u6210\u540e\uff0c\u9879\u76ee\u4e2d\u4e0d\u9700\u8981\u7684\u4f9d\u8d56\u4e5f\u5df2\u7ecf\u81ea\u52a8\u5254\u9664\u4e86<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<ul>\n<li>\u52a0\u8f7d\u4e00\u4e2a\u5355\u72ec\u7684pkg<\/li>\n<\/ul>\n<div class=\"jb51code\">\n<div>\n<div id=\"highlighter_584797\" class=\"syntaxhighlighter  go\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<div class=\"line number23 index22 alt2\">23<\/div>\n<div class=\"line number24 index23 alt1\">24<\/div>\n<div class=\"line number25 index24 alt2\">25<\/div>\n<div class=\"line number26 index25 alt1\">26<\/div>\n<div class=\"line number27 index26 alt2\">27<\/div>\n<div class=\"line number28 index27 alt1\">28<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"go comments\">\/\/ {GOROOT}\/src\/cmd\/go\/internal\/modload\/load.go<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"go keyword bold\">func<\/code> <code class=\"go plain\">(ld *loader) load(ctx context.Context, pkg *loadPkg) {<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">... <\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ \u627e\u51fapkg\u7684module\u53ca\u5176\u6240\u5728\u76ee\u5f55<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">pkg.mod, pkg.dir, pkg.altMods, pkg.err = importFromModules(ctx, pkg.path, ld.requirements, mg)<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go keyword bold\">if<\/code> <code class=\"go plain\">pkg.dir == <\/code><code class=\"go string\">\"\"<\/code> <code class=\"go plain\">{<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go keyword bold\">return<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">}<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">...<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ \u626b\u63cf\u6587\u4ef6\u83b7\u53d6\u6240\u6709\u7684import<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ \u8fd9\u91cc\u662f\u4e00\u4e2apkg\u7684\u6240\u6709import<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/* <\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\u4f8b\u5982: <\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">A\/B\/xxx.go <\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">import \"11111\"<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">A\/B\/yyy.go<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">import \"22222\"<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\u5219 pkg<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">import \"1111\"<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">import \"2222\"<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">*\/<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">imports, testImports, err = scanDir(pkg.dir, ld.Tags)<\/code><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">...<\/code><\/div>\n<div class=\"line number24 index23 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go comments\">\/\/ \u9012\u5f52\u6267\u884c ld.pkg \u7ec4\u88c5\u4e0b\u6570\u636e\u7ed3\u6784\uff0c\u53c8\u56de\u6765\u7ee7\u7eed\u8c03\u7528 ld.load<\/code><\/div>\n<div class=\"line number25 index24 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go keyword bold\">for<\/code> <code class=\"go plain\">_, path := <\/code><code class=\"go keyword bold\">range<\/code> <code class=\"go plain\">imports {<\/code><\/div>\n<div class=\"line number26 index25 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">pkg.imports = <\/code><code class=\"go functions bold\">append<\/code><code class=\"go plain\">(pkg.imports, ld.pkg(ctx, path, importFlags))<\/code><\/div>\n<div class=\"line number27 index26 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">}<\/code><\/div>\n<div class=\"line number28 index27 alt1\"><code class=\"go plain\">}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<p class=\"maodian\"><a name=\"_lab2_2_5\"><\/a><\/p>\n<h3 id=\"heading-8\">\u66f4\u65b0go.mod\u6587\u4ef6<\/h3>\n<p>\u8fd9\u91cc\u5c31\u6bd4\u8f83\u7b80\u5355\u4e86\uff0c\u5c31\u662f\u5355\u7eaf\u7684\u5199\u6587\u4ef6\u800c\u5df2\u3002\u5728\u7b2c\u4e8c\u8fc7\u7a0b\u7684\u65f6\u5019\u5df2\u7ecf\u5c06\u4f9d\u8d56\u5173\u7cfb\u6784\u5efa\u5b8c\u6210\u4e86\uff0c\u5176\u7ed3\u679c\u5b58\u653e\u5728\u4e00\u4e2a\u5168\u5c40\u53d8\u91cf\u91cc\u9762<code>MainModules<\/code>,\u8fd9\u91cc\u5c31\u662f\u5355\u7eaf\u6821\u9a8c\u5199\u6587\u4ef6\u4e86<\/p>\n<div class=\"jb51code\">\n<div>\n<div id=\"highlighter_568850\" class=\"syntaxhighlighter  go\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"go keyword bold\">func<\/code> <code class=\"go plain\">LoadPackages(...) (...) {<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">...<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go keyword bold\">if<\/code> <code class=\"go plain\">err := commitRequirements(ctx); err != <\/code><code class=\"go keyword bold\">nil<\/code> <code class=\"go plain\">{<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">base.Fatalf(<\/code><code class=\"go string\">\"go: %v\"<\/code><code class=\"go plain\">, err)<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">}<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"go spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"go plain\">...<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"go plain\">}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<div id=\"codetool\" class=\"codetool\">\n<div class=\"code_n\"><\/div>\n<\/div>\n<\/div>\n<p>\u4ee5\u4e0a\u5c31\u662f\u8be6\u89e3Go \u4f9d\u8d56\u7ba1\u7406 go mod tidy\u7684\u8be6\u7ec6\u5185\u5bb9\uff0c\u66f4\u591a\u5173\u4e8eGo \u4f9d\u8d56\u7ba1\u7406 go mod tidy\u7684\u8d44\u6599\u8bf7\u5173\u6ce8\u811a\u672c\u4e4b\u5bb6\u5176\u5b83\u76f8\u5173\u6587\u7ae0\uff01<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u539f\u6587\u5730\u5740 \u00a0 \u00a0\u66f4\u65b0\u65f6\u95f4\uff1a2022\u5e7410<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_container_layout":"default_layout","colormag_page_sidebar_layout":"default_layout","footnotes":""},"categories":[24],"tags":[121],"class_list":["post-6445","post","type-post","status-publish","format-standard","hentry","category-value_docs","tag-05-"],"_links":{"self":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/6445","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/comments?post=6445"}],"version-history":[{"count":0,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/posts\/6445\/revisions"}],"wp:attachment":[{"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/media?parent=6445"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/categories?post=6445"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/i007.cc\/wordpress\/wp-json\/wp\/v2\/tags?post=6445"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}