Go 安装、命令

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'的一些常用子命令及其用途:

  1. go mod init [module] : 初始化新的模块,创建文件。这个命令会在当前目录下创建一个新的文件,标记为模块的根。如果提供了模块路径(),则使用该路径。go.mod``go.mod``module

  2. go mod tidy : 添加缺失的模块,移除不再需要的模块。这个命令会更新和文件,确保它们反映了项目的所有依赖。go.mod``go.sum

  3. go mod download : 下载文件中指定的所有依赖。go.mod

  4. go mod vendor : 将依赖复制到项目下的目录。这允许你在没有外部连接的情况下构建项目。vendor

  5. go mod verify : 验证依赖是否被篡改或损坏。这个命令会检查当前模块的依赖是否与文件中记录的一致。go.sum

  6. go mod why: 解释为什么需要依赖。这个命令可以帮助你理解为什么你的项目依赖于某个模块。

  7. go mod graph: 打印模块依赖图。这个命令显示当前模块的所有依赖关系,有助于理解模块间的依赖。

  8. 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
相关推荐
q5673152320 分钟前
在 Bash 中获取 Python 模块变量列
开发语言·python·bash
许野平1 小时前
Rust: 利用 chrono 库实现日期和字符串互相转换
开发语言·后端·rust·字符串·转换·日期·chrono
也无晴也无风雨1 小时前
在JS中, 0 == [0] 吗
开发语言·javascript
狂奔solar1 小时前
yelp数据集上识别潜在的热门商家
开发语言·python
blammmp2 小时前
Java:数据结构-枚举
java·开发语言·数据结构
何曾参静谧2 小时前
「C/C++」C/C++ 指针篇 之 指针运算
c语言·开发语言·c++
暗黑起源喵2 小时前
设计模式-工厂设计模式
java·开发语言·设计模式
WaaTong2 小时前
Java反射
java·开发语言·反射
Troc_wangpeng2 小时前
R language 关于二维平面直角坐标系的制作
开发语言·机器学习
努力的家伙是不讨厌的2 小时前
解析json导出csv或者直接入库
开发语言·python·json