Golang的包管理经过了多种工具的演变,从go vendor,到godep
),再到dep。
这里使用的是从go v1.11开始支持的go Modules。
Go Modules具有一些优点:
- 不必须将项目目录放在GOPATH中
- 不使用vendor目录,而是统一安装到
$GOPATH/pkg/mod/cache
- build/run时,自动析出项目import的包并安装
使用方法:
初始化
在已有的项目目录中,使用go mod init <包名>
初始化。
包名通常类似github.com/golang/dep
这种格式。
如果包内有自引用,则包名需要和包内自引用名相同,才能正常导入。
这时项目中生成一个go.mod
文件。build/run
直接执行go build/run
,会发现项目涉及的包被自动安装了。
这时项目中新增go.sum
文件。原来的go.mod
中增加了依赖项。
注意:
国内使用时,golang.org/x/crypto
等包可能装不上。
可以设置Go Module Proxy解决:
export GOPROXY="https://athens.azurefd.net"
(这里使用了微软提供的代理)
示例
通过这种方式,很容易运行起来一个互联网上的Go项目。比如:
git clone https://github.com/snowlyg/IrisApiProject.git
cd IrisApiProject/
go mod init IrisApiProject
go build .
./IrisYouQiKangApi.exe~
其它
有些库使用了cgo,需要gcc编译器。
如果是在windows下,需要自行安装gcc。注意,golang只支持mingw,不能使用cygwin。
对于x64 windows:
- 下载mingw-w64
- 安装之。注意选择 Architecture=x86_64, Threads=posix, Exception=seh。
- 配置安装目录下的bin目录到环境变量。