Go包管理最佳实践(2019/3)

Golang的包管理经过了多种工具的演变,从go vendor,到godep
),再到dep。
这里使用的是从go v1.11开始支持的go Modules。
Go Modules具有一些优点:

  • 不必须将项目目录放在GOPATH中
  • 不使用vendor目录,而是统一安装到$GOPATH/pkg/mod/cache
  • build/run时,自动析出项目import的包并安装
使用方法:
  1. 初始化
    在已有的项目目录中,使用go mod init <包名>初始化。
    包名通常类似github.com/golang/dep这种格式。
    如果包内有自引用,则包名需要和包内自引用名相同,才能正常导入。
    这时项目中生成一个go.mod文件。
  2. build/run
    直接执行go build/run,会发现项目涉及的包被自动安装了。
    这时项目中新增go.sum文件。原来的go.mod中增加了依赖项。
注意:
【Go包管理最佳实践(2019/3)】国内使用时,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:
  1. 下载mingw-w64
  2. 安装之。注意选择 Architecture=x86_64, Threads=posix, Exception=seh。
  3. 配置安装目录下的bin目录到环境变量。

    推荐阅读