网站建设的环境,巨久科技网站建设,网站开发环境 对比,17173金币交易平台【1】GO111MODULE有三个值#xff1a;off, on, auto off#xff1a;go命令行将不会支持module功能#xff0c;将会使用旧版本那种通过vendor目录或者GOPATH来查找依赖包的方式。 on#xff1a;go命令行会使用modules功能#xff0c;而不…【1】GO111MODULE有三个值off, on, auto offgo命令行将不会支持module功能将会使用旧版本那种通过vendor目录或者GOPATH来查找依赖包的方式。 ongo命令行会使用modules功能而不再去GOPATH目录下查找依赖包。 auto默认值go命令行将会根据当前目录来决定是否启用module功能。在以下两种情形下使用module功能a、当前目录在GOPATH/src之外且该目录包含go.mod文件b、当前文件在包含go.mod文件的目录下面。
【2】初始化模块 go mod init whz_test(模块名称) 在当前目录会生产一个go.mod文件同时还有一个go.sum文件。 go.mod和go.sum都应该加入到版本控制但go.sum不需要手工维护。 子目录是不需要go mod init的所有子目录中的依赖都会组织在根目录的 go.mod 文件中。 创建go.mod文件后直接go run 或 go build 将会自动下载依赖包并将依赖关系和版本写到go.mod和go.sum文件中。
【3】其他命令 go mod download: 下载依赖包 go mod graph: 打印模块依赖图 go mod tidy: 拉取缺少的模块移除不用的模块 go mod vendor: 将依赖复制到vendor下 go mod verify: 验证依赖是否正确 go mod why: 解释为什么需要依赖
【4】go.mod文件中支持4个命令 module语句指定包的名称即路径 require语句指定依赖项模块 replace语句可以替换依赖项模块不包含某个版本等 exclude语句可以忽略依赖项模块排除一个特定的模块依赖用此指明不拉取该版本
【5】举例go.mod文件内容 -------------------------------------- module whz_test go 1.19 require ( github.com/hashicorp/go-multierror v1.1.1 ... github.com/samber/lo v1.37.0 ) require ( github.com/hashicorp/errwrap v1.0.0 // indirect github.com/modern-go/reflect2 v1.0.2 // indirect golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 // indirect ) exclude golang.org/x/time v0.3.0 replace golang.org/x/sync v0.1.0 gitee.com/x/sync v0.1.0 replace golang.org/x/sync v0.1.0 /User/local/... -------------------------------------- [说明] 1在require语句间接引入的会有indirect标识 2replace语句可解决对应依赖模块网络问题拉取不到换个地方拉取本地调试不想发布到仓库。
【6】go.mod文件生产后拉取指定的依赖常用的命令 go get 只拉取(更新)直接依赖 go get -u 拉取(更新)直接依赖和间接依赖模块 go get -u -t ./... 拉取(更新)直接依赖和间接依赖模块包括单元测试中用到的。 go get拉取依赖不需要精准指定依赖版本可自动推断对应的版本号 拉取指定版本的命令 go get http://golang.org/x/textlatest 拉取最新的版本若存在tag则优先使用。 go get http://golang.org/x/textmaster 拉取 master 分支的最新 commit。 go get http://golang.org/x/textv0.3.2 拉取 tag 为 v0.3.2 的 commit。 go get http://golang.org/x/text342b2e 拉取 hash 为 342b231 的 commit最终可能转换为 v0.3.2。
【7】go mod模式下goland可能会出现的问题 使用go mod下载了指定的依赖后在goland中提示错误无法关联到这个依赖不过在goland以及命令行都可以编译运行。 goland版本2024.2. 检查goland的设置 1在File-Settings设置了Global GOPATH使用了系统的环境变量 [GOPATH]C:\whz_go_path 2使用go mod下载了依赖包github.com/gin-gonic/gin 经检查已经成功安装到了GOPATH路径了 C:\whz_go_path\pkg\mod\github.com\gin-gonic\ginv1.10.0 3在命令行编译成功在goland中也可以编译运行成功但是代码中main.go显示红色波浪线提示有错误无法解析依赖库“github.com/gin-gonic/gin“。 4经检查是因为File-Settings-Go-GoModules设置中没有勾选以下选项 Enable Go modules integration 勾选后问题解决。