AImager

1.11开始引入的包管理方式,用于替换GOPATH,1.13被设置为默认,一个完整的go.mod例子如下

module github.com/AImager/test

replace (
    github.com/ugorji/go => github.com/ugorji/go/codec v0.0.0-20190204201341-e444a5086c43
    github.com/BurntSushi/toml => /Users/username/Code/github.com/BurntSushi/toml
)

require (
	github.com/BurntSushi/toml v0.3.1
	github.com/DeanThompson/ginpprof v0.0.0-20190408063150-3be636683586
	github.com/bitly/go-simplejson v0.5.1-0.20181114203107-9db4a59bd4d8
    github.com/ugorji/go v0.0.0-00010101000000-000000000000
	github.com/didi/gendry v1.3.1 // indirect
	github.com/gomodule/redigo v2.0.0+incompatible
	gopkg.in/yaml.v2 v2.2.2
)

go 1.13

go.mod

  • module: 声明当前模块的名称
  • go: 声明go版本
  • replace: 重定向依赖
  • require: 依赖管理,其中后面的部分格式为vX.Y.Z[-time[-commit_id]],其中time格式为年月日时分秒的世界时间,commit_id有12位
  • // indirect: 表示该package被子module/package依赖了,但是并没有被直接使用

main模块的replace才会生效,子模块的replace不会生效,参考issues-36205以及官方的mod声明

Exclude and replace apply only in the main module’s go.mod and are ignored in dependencies. See https://research.swtch.com/vgo-mvs for details.

命令

init

初始化

对>v2的版本支持

参考连接