Go 语言常用命令使用与总结

Go 语言(Golang)以其简洁、高效的设计理念,成为了开发人员的热门选择。对于 Go 开发者来说,掌握常用的命令行工具是提高工作效率的关键。本文将介绍 Go 语言的一些常用命令及其应用,帮助开发者更好地理解和使用 Go 工具链。

假如你已安装了golang环境,你可以在命令行执行go命令查看相关的Go语言命令:

vbnet 复制代码
➜  ~ go
Go is a tool for managing Go source code.

Usage:

	go <command> [arguments]

The commands are:

	bug         start a bug report
	build       compile packages and dependencies
	clean       remove object files and cached files
	doc         show documentation for package or symbol
	env         print Go environment information
	fix         update packages to use new APIs
	fmt         gofmt (reformat) package sources
	generate    generate Go files by processing source
	get         add dependencies to current module and install them
	install     compile and install packages and dependencies
	list        list packages or modules
	mod         module maintenance
	run         compile and run Go program
	test        test packages
	tool        run specified go tool
	version     print Go version
	vet         report likely mistakes in packages

Use "go help <command>" for more information about a command.

Additional help topics:

	buildconstraint build constraints
	buildmode       build modes
	c               calling between Go and C
	cache           build and test caching
	environment     environment variables
	filetype        file types
	go.mod          the go.mod file
	gopath          GOPATH environment variable
	gopath-get      legacy GOPATH go get
	goproxy         module proxy protocol
	importpath      import path syntax
	modules         modules, module versions, and more
	module-get      module-aware go get
	module-auth     module authentication using go.sum
	packages        package lists and patterns
	private         configuration for downloading non-public code
	testflag        testing flags
	testfunc        testing functions
	vcs             controlling version control with GOVCS

Use "go help <topic>" for more information about that topic.

➜  ~

重点记忆

Go语言中的go命令是开发者的主要工具集,通过它可以完成编译、构建、测试、依赖管理等任务。以下是常见的go命令、其用途、使用场景以及子命令的详细说明,并附上相应的示例。

1. go run

arduino 复制代码
go run [files]
  • 用途:编译并运行指定的Go源文件,不生成可执行文件。
  • 使用场景:用于快速执行Go代码,尤其在开发初期或快速验证某个功能时。
  • 示例
go 复制代码
go run main.go

上面命令会编译并立即运行main.go文件,运行完成后,再把编译后的文件立即进行删除。

2. go build

css 复制代码
go build [packages]
  • 用途:编译Go代码,生成二进制可执行文件。
  • 使用场景:用于构建项目或包,可以生成用于发布的可执行文件。
  • 示例
go 复制代码
go build main.go

会在当前目录下生成一个可执行文件(名称由package main指定)。

  • 子命令
    • go build -o [output]: 指定生成的二进制文件的名称。
go 复制代码
go build -o myapp main.go

3. go install

go 复制代码
go install [package]
  • 用途 :编译并将可执行文件安装到$GOPATH/bin目录下。
  • 使用场景:当你希望将项目安装到系统路径下,使其可以在任何地方通过命令行执行时使用。
  • 示例
bash 复制代码
go install ./...

编译并安装当前模块中的所有包到$GOPATH/bin中。

4. go test

bash 复制代码
go test [packages]
  • 用途 :运行Go测试框架,会自动检测并执行*_test.go文件中的测试函数。
  • 使用场景:单元测试、功能测试、集成测试等。
  • 示例运行当前目录及其所有递归子目录*_test.go文件中的测试函数
bash 复制代码
go test ./...

会执行当前模块中的所有测试文件。

  • 子命令
    • go test -v: 输出详细的测试结果。
    • go test -cover: 显示代码覆盖率。
    • go test -v -run="TestXX" : 指定测试的方法,支持正则
    • go test xx.go xx_test.go : 指定运行的测试文件,及其依赖文件。
    • go test : 等于 go test . 默认只允许当前目录下的所有测试文件,不含子目录
bash 复制代码
go test -v -cover

详情:44-Gotest工具详解

bash 复制代码
// /user/xx/goProject/ 

go test 软件包 chengxuyuanermao/goProject
go test 绝对路径 /user/xx/goProject/ 
go test 相对路径 ./ 或 . 或 不填 
  go test . 等同于
  go test ./

5. go mod

bash 复制代码
go mod <command>
  • 用途:管理Go模块及其依赖。
  • 使用场景 :用于项目依赖管理,自从Go 1.11开始,Go引入了模块管理模式替代GOPATH模式。
  • 常用子命令
    • go mod init <module-path>:初始化一个新的模块并生成go.mod文件。
bash 复制代码
go mod init github.com/user/myproject
    • go mod tidy:移除未使用的依赖并下载缺失的依赖。
go 复制代码
go mod tidy
    • go mod vendor:将依赖项复制到vendor/目录。
go 复制代码
go mod vendor

6. go clean

css 复制代码
go clean [flags]
  • 用途:清理Go编译过程中生成的临时文件和缓存。
  • 使用场景:用于清理构建生成的临时文件或缓存。
  • 示例
go 复制代码
go clean

会清理当前项目的构建产物。

7. go fmt

bash 复制代码
go fmt [packages]
  • 用途:格式化Go代码,使其符合Go的标准格式。
  • 使用场景:自动化的代码格式化工具,通常在开发过程中用于保持代码整洁。
  • 示例
bash 复制代码
go fmt ./...

会格式化当前模块中的所有Go文件。现代的 ide 如 vscode 或 goland 保存的时候都会帮你格式化。

8. go vet

css 复制代码
go vet [packages]
  • 用途:静态代码分析工具,检查代码中的潜在问题和常见错误。
  • 使用场景 :在提交代码之前,可以通过go vet检查代码中是否有潜在的bug或低效的代码。
  • 示例
bash 复制代码
go vet ./...

会对当前模块中的所有包进行检查。现代的 ide 如 vscode 或 goland 会帮你实时检查。

9. go get

go 复制代码
go get [package]
  • 用途:从远程仓库下载并安装Go包到当前项目中。
  • 使用场景:用于获取远程依赖库或升级现有依赖包。
  • 示例
arduino 复制代码
go get github.com/gin-gonic/gin

会从GitHub获取Gin框架并添加到项目的依赖中。

10. go list

go 复制代码
go list [package]
  • 用途:列出包的信息,包括其导入路径和依赖关系。
  • 使用场景:用于调试依赖关系或查看项目结构。
  • 示例
bash 复制代码
go list ./...

会列出当前模块中所有包的信息。

11. go doc

css 复制代码
go doc [package] [symbol]
  • 用途:查看Go代码的文档信息。
  • 使用场景:用于查看函数、结构体、接口等的文档说明,帮助开发者快速了解其用法。
  • 示例
go 复制代码
go doc fmt.Println

会显示fmt.Println函数的文档说明。

12. go env

bash 复制代码
go env
  • 用途:查看Go的环境变量配置。
  • 使用场景:当需要调试或修改Go的工作路径、缓存路径时使用。
  • 示例
bash 复制代码
go env

会显示当前Go环境的所有配置,如GOROOTGOPATH等。

13. go tool

css 复制代码
go tool <tool> [flags]
  • 用途:执行Go语言的低级工具,如编译器、汇编工具等。
  • 使用场景:用于调试和分析Go程序的工具集。
  • 示例
go 复制代码
go tool compile -S main.go

会显示main.go的汇编代码。

详情查看:go tool 命令一览

14. go generate

css 复制代码
go generate [packages]
  • 用途:运行代码生成工具,根据注释中的指令自动生成代码。
  • 使用场景:当需要通过工具生成特定代码(如mock、protobuf文件)时使用。
  • 示例
bash 复制代码
//go:generate stringer -type=Pill

执行go generate会运行上面的生成器命令。

15. go version

go 复制代码
go version
  • 用途:显示当前Go的版本号。
  • 使用场景:用于查看当前安装的Go版本,确认开发环境。
  • 示例
go 复制代码
go version

会显示Go版本号,如:go version go1.20.3 linux/amd64

16. go fix

css 复制代码
go fix [packages]
  • 用途:更新Go代码以使用最新的语言功能和标准库。
  • 使用场景:用于将老版本的Go代码迁移到最新版本,修正因语言或库变化导致的代码不兼容问题。
  • 示例
bash 复制代码
go fix ./...

命令汇总

命令 用途 使用场景
go run 编译并运行Go程序,不生成可执行文件 快速运行Go代码
go build 编译Go代码,生成可执行文件 构建项目或生成可执行文件
go install 编译并安装到$GOPATH/bin 安装Go程序以便全局使用
go test 运行测试代码 单元测试、集成测试等
go clean 清理构建产物和缓存 清理编译时生成的文件
go fmt 格式化Go代码 保持代码风格一致
go vet 静态分析代码,检查潜在的错误 提交代码前进行代码检查
go mod 管理Go模块及其依赖 管理项目的依赖关系和模块化
go get 下载并安装远程包 获取远程依赖包
go list 列出包的信息 查看包结构和依赖关系
go doc 显示Go包或符号的文档 查看函数、结构体等的使用说明
go env 显示Go环境变量 调试Go环境配置
go tool 使用低级工具 调试或分析Go程序
go generate 根据注释生成代码 自动化代码生成
go version 显示当前Go版本 查看Go版本信息
go fix 修正老版本代码以适应最新的Go标准 升级和维护Go代码兼容性

这些命令覆盖了Go项目的开发、构建、测试、发布等各个环节,帮助开发者高效管理Go项目。

注意区分

  • 编译包文件 无main包 将编译后的包文件放到 pkg 目录下($GOPATH/pkg/darwin_arm64).a 文件
  • 编译生成可执行文件 有main包 将可执行文件放到 bin 目录($GOPATH/bin)可执行文件

类似于leafserver项目的解决方式

GOPATH模式 找包都是在 GOPATH/src 下找的

GOMODULE模式 找包是在 GOPATH/pkg/mod 下找的

GOMODULE模式 项目下,有 go.sum go.mod 文件

总结

Go 语言提供了一套功能强大的命令行工具,能够帮助开发者高效地进行代码编译、依赖管理、测试、格式化等工作。通过熟练掌握这些常用命令,开发者可以更好地进行项目管理和开发,从而提高整体工作效率。

常用的 Go 命令包括:

  1. go run:直接运行 Go 程序。
  2. go build:编译 Go 程序并生成二进制文件。
  3. go get:获取并安装依赖包。
  4. go mod:管理 Go 项目的模块和依赖。
  5. go test:运行单元测试。
  6. go fmt:格式化 Go 代码。
  7. go clean:清理临时文件。
  8. go doc:查看 Go 文档。

掌握这些命令将使你在 Go 开发过程中事半功倍,提升编程效率。

相关推荐
FogLetter7 分钟前
Prisma + Next.js 全栈开发初体验:像操作对象一样玩转数据库
前端·后端·next.js
文心快码BaiduComate13 分钟前
新增Zulu-CLI、企业版对话支持自定义模型、一键设置自动执行、复用相同终端,8月新能力速览!
前端·后端·程序员
walking95715 分钟前
JavaScript 神技巧!从 “堆代码” 到 “写优雅代码”,前端人必看
前端·面试
努力犯错玩AI15 分钟前
微软开源TTS模型VibeVoice:一键生成90分钟超长多角色对话,告别机械音!
人工智能·后端·github
百度Geek说17 分钟前
5个技巧让文心快码成为你的后端开发搭子
后端·算法
码出极致19 分钟前
电商支付场景下基于 Redis 的 Seata 分布式事务生产实践方案
java·后端
walking95720 分钟前
前端 er 收藏!高性价比 JS 工具库,轻量又强大
前端·面试
blueblood23 分钟前
批量文件扩展名更改工具开发指南
后端
用户2986985301435 分钟前
如何使用 Spire.PDF 在 C# 中创建和绘制 PDF 表单?
后端
walking95737 分钟前
效率党必藏! JavaScript 自动化脚本,覆盖文件管理、天气查询、通知提醒(含详细 demo)
前端·面试