Go从1.11后带来的官方的管理依赖(引用的库)的一个工具:
https://github.com/golang/go/wiki/Modules (读完文档)
以github上的一个项目为例:
最开始官方的方法,我们可能会
然后在src文件夹下通过go get或gopm拉取项目。但是一跑就会报什么not-standard import 'xxxxx' in standard package "xxx"
Go Module的特点:
- 不再希望把项目放到src下,希望go/src下是一些纯go的第三方库.像java一样有自己的开发文件夹,放到自己想放到的任何地方,但是一般不要放到官方文件夹下.
- 还有个是下载包慢的问题(GoProxy)。https://mirrors.aliyun.com/goproxy/
先介绍:Go Proxy
按照官网说明输入如下命令后:
gg~~我的电脑是windows
所以,windows打开powershell:
$env:GOPROXY="https://mirrors.aliyun.com/goproxy/"
这样就可以用阿里云的快速服务了。
当然,,上面介绍的是临时设置,下次使用还需要重新设置就很不爽了。
于是,最简单的方法还是应该设置计算机的系统环境变量:
全新的项目使用Go Module:
在任意位置新建一个项目【不要再放到go/src下面了,随便找个地方】,把大名鼎鼎的iris的示例代码复制粘贴:
爆红是因为我们没有装包。
步骤:
1. 初始化:
go mod init xxx
go,mod文件还是空的是因为我们还没有把包装进去。
2. 装包:
go run xxx.go
包装完后就可以运行了:
然后看看是否跑起来了:
哈哈,跑起来了。Go Module真牛逼~
提一句:
如果还是想要放到src下面,还是想用go Module。
比如,把桌面上刚刚创建的项目拷贝到go/src下
然后执行go run main.go,有时候会出现not-standard import 'xxxxx' in standard package "xxx"
这时候需要我们设置环境变量GO111MODULE
但是一般都设置为on
然后再在go/src下跑就ok了~
Golang与Go Module:
go.mod 和 go.sum介绍
go.mod是Go项目的依赖描述文件,该文件主要用来描述两个事情:当前项目名(module)是什么。每个项目都应该设置一个名称,当前项目中的包(package)可以使用该名称进行相互调用。
当前项目依赖的第三方包名称。项目运行时会自动分析项目中的代码依赖,生成go.sum依赖分析结果,随后go编译器会去下载这些第三方包,然后再编译运行。
go.sum依赖分析文件,记录每个依赖库的版本和哈希值
一般情况下,go.sum应当被添加到版本管理中随着go.mod文件一起提交。
常用命令:
- go mod init: 初始化modules
- go mod download: 下载依赖的module到本地cache
- go mod edit: 编辑go.mod文件,选项有-json、-require和-exclude,可以使用帮助go help mod edit
- go mod graph: 以文本模式打印模块需求图
- go mod tidy: 检查,删除错误或者不使用的modules,以及添加缺失的模块
- go mod vendor: 生成vendor目录,将依赖复制到vendor目录下面
- go mod verify: 验证依赖是否正确
- go mod why: 解释为什么需要依赖
- go list -m: 查看主模块的路径
- go list -m -f={{.Dir}}: 查看主模块的根目录
- go list -m all: 查看当前的依赖和版本信息