golang 最受诟病的恐怕是没有成熟的包管理器,1.12 版本之前大都采用 vendor 的方式作为每个项目的包管理,造成巨大的资源重复浪费,类似 npm 的node_modules。go version >= 1.12 后内置的官方包管理器,不再需要配置 GOPATH 等环境变量。
https://github.com/golang/go/wiki/Modules

基础使用

项目不需要在$GOPATH/src目录内

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
go mod init your module name
# will create a go.mod file

go mod vendor # 依赖复制到vendor
go mod tidy # 精简模块
go mod download # 下载资源到本地cache

go get -u # 拉取最新模块版本
go run xxx.go # 下载资源生成go.sum文件 类型npm的package.lock

go help mod # 查看更多命令

go mod 下载的包在 $GOPATH/pkg/mod

go get 设置代理

墙内小朋友的福音:https://goproxy.io/

macOS:

1
2
3
4
5
6
# 临时设置

# Enable the go modules feature
export GO111MODULE=on
# Set the GOPROXY environment variable
export GOPROXY=https://goproxy.io
1
2
3
4
5
6
7
8
9
# 永久设置

vi ~/.bash_profile
# add:
export GO111MODULE=on
# Set the GOPROXY environment variable
export GOPROXY=https://goproxy.io
# save
source ~/.bash_profile

win:

1
2
3
4
# Enable the go modules feature
$env:GO111MODULE=on
# Set the GOPROXY environment variable
$env:GOPROXY=https://goproxy.io

goland IDE 设置

勾选 go modules 选项并且设置代理。

import 引入方式

1
2
3
package main

import "moduleName/folderName/fileName"

参考文章