Go基本命令

JavenLaw

最近准备学习 Go 语言,总结了一些常见的 Go 命令,用于 Go 环境设置,项目构建等

主要有:

​ GOROOT,GOPATH,GOBIN,GOPROXY,GO111MODULE 等环境设置

​ go env,go run,go build,go install,go mod,go get,go clean 等命令

​ 最后记录了一下 go.mod 文件常见的格式


GOROOT

安装目录:/usr/local/go


GOPATH

工作目录:/root/go

​ GOPATH/bin

​ GOPATH/pkg

​ GOPATH/src


GOBIN

生成目录:GOPATH/bin


GOPROXY

设置代理

​ go env -w GOPROXY=“https://goproxy.cn,direct”


GO111MODULE

开启包管理

​ go env -w GO111MODULE=“on”


go env

查看 go 环境设置

​ go env


go run

只执行,不会产生任何文件,一定要有 main 包,没有 main 包会报错

​ go run file_name


go build

编译当前目录下的所有 go 文件

​ go build file_name

​ 有 main 包,会产生 file_name 可执行文件在本地

​ 没有 main 包,什么都不会产生,只检查是否有错误

​ go build -o object_name file_name

​ 产生 object_name 包,但不能执行,因为没有 main 包


go install

编译并安装当前目录下的所有 go 文件

​ go install file_name

​ 要编译的包下,必须有 main 包,且 main 包下必须有 main 方法,才会生成可执行文件,会产生 file_name 可执行文件在 GOBIN 路径下

​ 没有 main 包,什么都不会产生,只检查是否有错误

​ go install github.com/google/gops@latest

​ 会下载文件在 GOBIN 路径下


go mod

​ go mod init project_name

​ 初始化项目

​ go mod download github.com/gin-gonic/gin@v1.9.1

​ 只会下载目标模块,不会下载所需的关联模块,也不会往 go.mod 添加依赖

​ 关联模块需要 go mod tidy 添加依赖

​ 或者 go mod edit -require “github.com/gin-gonic/gin@v1.9.1” 添加依赖

​ go mod tidy

​ 依赖对齐,下载本模块在内的所有关联模块,并往 go.mod 添加依赖

​ go mod edit -require=“github.com/gin-gonic/gin@v1.9.1

​ 添加依赖,手动执行

​ go mod edit -exclude=“github.com/gin-gonic/gin@v1.9.1

​ 排除依赖,手动执行

​ go mod edit -replace=“golang.org/x/crypto@v0.0.1 => golang.org/x/crypto@v0.0.2

​ 代替依赖,手动执行

​ go mod edit -retract=“v1.0.0”

​ 撤回版本,手动执行

​ go mod edit -dropretract=“v1.0.0”

​ 去除撤回版本,手动执行

​ go mod vendor

​ 把项目所需要的,引用于 GOPATH/pkg/ 中的文件复制到项目下的 vendor

​ go mod verify

​ 验证 mod 的正确性

​ go mod why github.com/go-playground/validator/v10

​ 检查依赖,注意:不需要版本号


go get

​ go get github.com/gin-gonic/gin@v1.9.1

​ 自动下载/寻找本模块,并下载关联模块,自动往 go.mod 添加依赖

​ 相当于 go mod download + go mod tidy

​ go get -u github.com/gin-gonic/gin@v1.9.1

​ 假如本地已经存在本模块&关联模块,加 -u 参数可以拉取模块的最新内容


go clean

​ go clean

​ 清除一些 object 文件 或者 go build 产生的可执行文件,但 GOBIN 下安装的可执行文件不会被删除

​ go clean -modcache

​ 清除 GOPATH/pkg/mod 内的所有内容


go.mod文件

module blog

go 1.21.1

// 引用第三方模块
require (
	github.com/gin-gonic/gin v1.9.1
	github.com/go-playground/validator/v10 v10.14.0 // indirect
	golang.org/x/crypto v0.9.0 // indirect
)

exclude (
	// 排除第三方模块
	// 例子:
	// 		github.com/gin-gonic/gin v1.9.0
	// 		排除 gin v1.9.0 版本
)

replace (
	// 替换第三方模块
	// 例子: 
	// 		golang.org/x/crypto v0.0.1 => golang.org/x/crypto v0.0.2
	// 		将 crypto v0.0.1 替换为 crypto v0.0.2
)

retract (
	// 撤回本模块的版本
	// 例子: 
	// 		v1.0.0
	// 		撤回 v1.0.0 版本
)