golang的一些知识 | 青训营笔记

88 阅读1分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天

进阶知识:

一、Go Modules:

1)一些go mod命令:
    go mod init 用于生成go.mod文件
    go mod download 用于下载go.mod文件的依赖
    go mod tidy 用于整理现有的依赖
    go mod graph 用于查看现有的依赖结构
    go mod edit 用于编辑go.mod文件
    go mod vendor 用于导出项目所有的依赖到vendor目录
    go mod verify 用于校验一个模块是否被篡改过
    go mod why 用于查看为什么需要依赖某模块
    
(2)GO111MODULE:
    GO111MODULE是一个环境变量,用来当作go modules的开关。可以设置一些参数。比如:auto,意思是只要项目包含了go.mod文件就启用go modules、on,就表示启用go modules,off,就表示不启用go modules。
    
(3)GOPROXY:
    GOPROXY是go modules里的一个环境变量,主要是用于设置go的模块代理,使go在后续拉取模块版本时直接通过镜像站点来快速拉取。比如:“https://mirrors.aliyun.com/goproxy/” 就是阿里云的一个代理。模块代理允许设置多个,每个代理之间用英文逗号隔开。
    
(4)GOSUMDB:
    用于在拉取模块版本时保证拉取到的模块版本数据未经过篡改。当发现存在有可能篡改的情况时,将会立即中止。而GOSUMDB的默认值同样在国内是无法访问的,这时我们就可以通过GOPROXY去进行设置。
    
(5)开启Go Modules:
    可以通过执行以下命令来开启: $ go env -w GO111MODULE=on6)初始化项目:
    执行go mod init命令,同时我们还可以指定模块的导入路径。
    
(7)版本依赖关系:
    当我们执行go get命令的时候,go会自动在本地将当前项目的require更新成最新版本的依赖。而如果我们想改回旧版本时,我们回到项目目录下,执行以下命令:$ go mod edit -replace=新版本=要换回去的版本。更换完毕后,就会出现replace关键字,用于将一个模块版本替换为另外一个模块版本。