齐里库查稀里哗啦咔咔 發表於 2019-11-8 11:35:00

关于go mod 的使用和goland 配置 go mod

<h3 id="一关于go-modules">一、关于go modules</h3>
<ul>
<li>1.1 go modules 是go1.11 新加的特性<br>
<code> 现在已有go 1.13.4 了本人用了就是最新版的</code></li>
<li>1.2关于modules 官方定义</li>
</ul>
<pre><code>模块是相关Go包的集合。modules是源代码交换和版本控制的单元。 go命令直接支持使用modules,包括记录和解析对其他模块的依赖性。modules替换旧的基于GOPATH的方法来指定在给定构建中使用哪些源文件。
</code></pre>
<ul>
<li>1.3 使用modules 的配置
<ul>
<li>配置GO111MODULE<br>
<code> GO111MODULE 有三个值 off , on,auto</code></li>
</ul>
</li>
</ul>
<pre><code>GO111MODULE=off,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。
GO111MODULE=on,go命令行会使用modules,而一点也不会去GOPATH/src目录下查找。 (pkg 包都存放在 $GOPATH/pkg 下)
GO111MODULE=auto,默认值,go命令行将会根据当前目录来决定是否启用module功能。(pkg 包都存放在 $GOPATH/pkg 下)
</code></pre>
<ul>
<li>1.4 本人配置<br>
<code>export GO111MODULE=auto</code></li>
</ul>
<pre><code>因为以前没有使用 ,未来兼容以前的项目,暂设成auto
</code></pre>
<h3 id="二go-mod-的一些命令">二、go mod 的一些命令</h3>
<table>
<thead>
<tr>
<th>命令</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>download</td>
<td>download modules to local cache(下载依赖包 重要)</td>
</tr>
<tr>
<td>edit</td>
<td>edit go.mod from tools or scripts(编辑go.mod</td>
</tr>
<tr>
<td>graph</td>
<td>print module requirement graph (打印模块依赖图)</td>
</tr>
<tr>
<td>init</td>
<td>initialize new module in current directory(在当前目录初始化mod 重要)</td>
</tr>
<tr>
<td>tidy</td>
<td>add missing and remove unused modules(拉取缺少的模块,移除不用的模块重要)</td>
</tr>
<tr>
<td>vendor</td>
<td>make vendored copy of dependencies(将依赖复制到vendor下)</td>
</tr>
<tr>
<td>verify</td>
<td>verify dependencies have expected content (验证依赖是否正确)</td>
</tr>
<tr>
<td>why</td>
<td>explain why packages or modules are needed(解释为什么需要依赖)</td>
</tr>
</tbody>
</table>
<h3 id="三如何使用-go-mod">三、如何使用 go mod</h3>
<ul>
<li>3.1 简单使用</li>
</ul>
<pre><code>mkdir hello
cd hello
go mod init hello
# 此时会出现一个hello下会出现一个 go.mod 目录
# 需要下载 所有第三方包时 go mod download
# 下载第三包可以直接使用 go get need_pkg
# 下载好的依赖 和 版本 会加入到 go.mod 里面,
# 下载好的第三包 会放在到$GOPATH/pkg/mod 中
# 没有设置GOPATH的话 下载好的第三方包会放在~/go/pkg/mod
# 如果你想放在当前目前可以执行如下命令

go mod tidy
# 检测依赖的包,下载使用到的包,剔除未使用的包



# 如果你希望将第三方依赖包放至在本项目下,可以使用该命令,此时会将第三方依赖下载至vendor 目录中
go mod vendor   
</code></pre>
<ul>
<li>3.2 关于依赖升级</li>
</ul>
<pre><code>删除 go.mod中需要升级的第三方依赖
然后执行 go mod tidy ,会自动下载最新的。

关于依赖的版本也是可以指定的
在go.mod 中使用指定版本的话,可以自行设置。


</code></pre>
<ul>
<li>3.3关于依赖打包</li>
</ul>
<pre><code>go build-ldflags="-s -w" -o app ./main.go
# -ldflags="-s -w" 压缩程序
</code></pre>
<ul>
<li>3.4 github 拉取 他人含有go.mod的项目时,下载所有第三方包</li>
</ul>
<pre><code>go mod tidy
</code></pre>
<ul>
<li>3.5 关于如何使用自定义包</li>
</ul>
<pre><code>hello
    |--conf
      |-conf.go
    |-main.go
    |-go.mod
如何导入conf 包呢?
先查看go.mod 中的module 后的定义的module_name
在导入时直接使用module_name/conf   即可
</code></pre>
<p><img src="https://images.cnblogs.com/cnblogs_com/xiaobaiskill/1428477/o_191108091637%E6%88%AA%E5%B1%8F2019-11-08%E4%B8%8B%E5%8D%885.14.57.png" alt="先查看go.mod中的module_name" loading="lazy"><br>
<img src="https://images.cnblogs.com/cnblogs_com/xiaobaiskill/1428477/o_191108092017%E6%88%AA%E5%B1%8F2019-11-08%E4%B8%8B%E5%8D%885.19.36.png" alt="module_name/pkc" loading="lazy"></p>
<h3 id="四goland的配置">四、goland的配置</h3>
<pre><code>goland 升级到最新的,旧的goland 版本时不支持go mod,
在preferences -&gt; go -&gt; Go Modules(vgo)
给Enable Go Modules (vgo) Integration 打勾勾就行
</code></pre>
<p><img src="https://images.cnblogs.com/cnblogs_com/xiaobaiskill/1428477/o_191113031356%E6%88%AA%E5%B1%8F2019-11-13%E4%B8%8A%E5%8D%8811.12.57.png" alt="modules 设置" loading="lazy"></p>
<pre><code>上图的那个圈起来的地方一定要勾上,
Enable Go Modules(vgo)   启用modules 模式

verdoring mode会使用vendor 文件夹中的包(不用打勾,打勾意味着依赖包都使用vendor 目录里面的.)
</code></pre><br><br>
来源:https://www.cnblogs.com/xiaobaiskill/p/11819071.html
頁: [1]
查看完整版本: 关于go mod 的使用和goland 配置 go mod