Go 命令
Go语言的工具链提供了一系列命令来帮助开发者编译、运行、测试和管理Go程序。以下是一些基本的命令及其用途:
go build
: 编译Go源代码。对于库文件,它检查包的有效性。对于可执行文件,它会构建可执行文件。
go run
: 编译并运行Go程序。这个命令会构建程序,然后立即执行生成的可执行文件。
go test
: 运行测试。该命令会自动找到所有的测试文件,运行它们,并报告测试结果。
go get
: 下载并安装包及其依赖。从Go 1.17版本开始,推荐使用来安装二进制文件。
go install
: 编译并安装包和依赖。如果是程序包,它会被编译并安装到或目录下。
go mod
: 模块管理。Go模块是Go语言的依赖管理系统,提供了版本控制和包管理。命令有多个子命令,如、、等,用于管理模块。
go fmt
: 格式化Go源代码,使其符合Go的代码风格。
go env
: 打印Go环境信息。可以用来查看或设置环境变量。
go list
: 列出包或模块。可以用于查看当前模块的依赖关系或者查询可用的包。
Go Doc
: 显示包或符号的文档。可以快速查找包、函数、类型等的使用说明。
go clean
: 删除对象文件和缓存文件。
Go env
这些环境变量是Go语言开发环境配置的一部分,它们影响Go程序的编译、运行和包管理等方面。下面是每个环境变量的含义:
GO111MODULE
:控制模块支持的开启状态,设置为表示启用模块支持。on
GOARCH
:目标架构,这里设置为表示64位架构。amd64
GOBIN
:编译后的二进制文件存放位置,这里留空表示使用默认位置。GOCACHE
:编译缓存的存放位置,设置为用户目录下的。AppData\Local\go-build
GOENV
:Go环境变量配置文件的位置,设置为用户目录下的。AppData\Roaming\go\env
GOEXE
:编译后的可执行文件后缀,在Windows下通常是。.exe
GOEXPERIMENT
:控制Go语言实验特性的开关。GOFLAGS
:命令的全局标志。go
GOHOSTARCH
:Go工具链本身的架构,这里设置为。amd64
GOHOSTOS
:Go工具链本身的操作系统,这里设置为。windows
GOINSECURE
:不使用HTTPS安全连接的模块或仓库列表。GOMODCACHE
:模块缓存的存放位置,这里设置为。D:\goproject\pkg\mod
GONOPROXY
、:不通过代理访问或不校验校验和数据库的模块或仓库列表。GONOSUMDB
GOOS
:目标操作系统,这里设置为。windows
GOPATH
:Go工作区的路径,这里设置为。D:\goproject
GOPRIVATE
:不使用公共代理的私有模块或仓库列表。GOPROXY
:模块代理服务器的URL,这里设置为使用中国的代理。goproxy.cn
GOROOT
:Go安装根目录的路径,这里设置为。D:\program files\go1.19.13
GOSUMDB
:模块校验和数据库的URL,这里使用默认的。sum.golang.org
GOTMPDIR
:临时文件存放位置。GOTOOLDIR
:Go工具链二进制文件的存放位置,这里设置为。D:\program files\go1.19.13\pkg\tool\windows_amd64
GOVCS
:控制版本控制系统的使用策略。GOVERSION
:Go的版本,这里是。go1.19.13
GCCGO
、、、:与C语言交叉编译相关的设置。AR``CC``CXX
CGO_ENABLED
:控制CGO的开关,设置为表示禁用CGO。0
GOMOD
:当前模块的文件的路径,这里设置为表示不使用。go.mod``NUL
GOWORK
:Go工作区配置文件的路径。CGO_CFLAGS
、、、、:CGO相关的编译和链接标志。CGO_CPPFLAGS``CGO_CXXFLAGS``CGO_FFLAGS``CGO_LDFLAGS
PKG_CONFIG
:工具的路径。pkg-config
GOGCCFLAGS
:Go编译时传递给GCC的标志。
bash
//启动 go module功能
go env -w GO111MODULE=on
//设置中国代理
go env -w GOPROXY=https://goproxy.cn,direct
Go mod
Go中的go.mod使用详解
Go中的go.mod使用详解_Golang_脚本之家 (jb51.net)
'go mod'命令是Go语言的模块管理命令,用于管理Go项目的依赖。自Go 1.11版本引入模块(module)后,'go mod'成为了官方推荐的依赖管理工具。以下是'go mod'的一些常用子命令及其用途:
go mod init [module]
: 初始化新的模块,创建文件。这个命令会在当前目录下创建一个新的文件,标记为模块的根。如果提供了模块路径(),则使用该路径。go.mod``go.mod``module
go mod tidy
: 添加缺失的模块,移除不再需要的模块。这个命令会更新和文件,确保它们反映了项目的所有依赖。go.mod``go.sum
go mod download
: 下载文件中指定的所有依赖。go.mod
go mod vendor
: 将依赖复制到项目下的目录。这允许你在没有外部连接的情况下构建项目。vendor
go mod verify
: 验证依赖是否被篡改或损坏。这个命令会检查当前模块的依赖是否与文件中记录的一致。go.sum
go mod why
: 解释为什么需要依赖。这个命令可以帮助你理解为什么你的项目依赖于某个模块。
go mod graph
: 打印模块依赖图。这个命令显示当前模块的所有依赖关系,有助于理解模块间的依赖。
go mod edit
: 编辑文件。这个命令提供了一些选项来添加、移除或替换依赖项。
bash
go mod tidy
Go build
在 Go 语言中,
go build
命令的-ldflags
选项允许你传递参数给链接器。使用-ldflags
配合-X
标志是一种在编译时设置包内变量的方法,这在创建可配置的构建版本时非常有用。使用
-ldflags "-X importpath.name=value"
语法该语法用于在编译时动态设置 Go 程序中的变量值。
importpath.name
需要是完全限定名(包括包名和变量名),而value
是你想要设置的新值
bash
go env -w GOOS=linux
go build