//包管理发展
go get(无版本概念) -> vender(godep)(无版本概念) -> go modules
go get github.com/tools/godep
godep save // 将依赖项输出并复制到Godeps.json文件中
//vender查找顺序
project/vendor
gopath/src
goroot/src
//开启go mod支持
go env -w GOPROXY=https://goproxy.cn,direct
go env -w GO111MODULE=on
GO111MODULE=off //编译时, 从vender和gopath下找依赖
GO111MODULE=on //编译时, 忽略vender和gopath从go.mod去下载依赖
GO111MODULE=auto //在gopath之外创建目录
// 生成go.mod(go.mod位于项目根目录)
go mod init
go mod init 模块名
// 包管理元信息
go.mod //存放当前模块包名及版本
module: 定义当前模块和包路径
require: 定义依赖的模块和版本
exclude: 排除特定的模块和版本的使用
replace: 模块源的替换
go.sum //存放当前模块依赖包名以及版本,commit hash
//包下载(存储在gopath/pkg/mod下)
go build //go文件引用了包,执行这些命令会自动更新go.mod
go run
go mod tidy
go mod vendor //(便于阅码)将依赖复制到vendor下
//依赖更新
go get foo@v1.2.3 //升级某个包
go list -m all //列出当前依赖
go ilst -m -u all //列出可升级的依赖
go get -u //升级所有依赖
// go get更新go.mod
go get github.com/tietang/dbx
// go.mod会被更新为
require (
github.com/tietang/dbx v1.0.0
)
//直接程序里写,然后go run/build也会更新go.mod
import (
"fmt"
"github.com/tietang/dbx"
"github.com/tietang/go-utils"
)
func main() {
x:=dbx.Database{}
fmt.Println(x)
utils.GetAllIP()
}
原文:https://www.cnblogs.com/iiiiiher/p/11965762.html