当前位置: 首页 > ops >正文

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

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

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

➜  ~ go
Go is a tool for managing Go source code.Usage:go <command> [arguments]The commands are:bug         start a bug reportbuild       compile packages and dependenciesclean       remove object files and cached filesdoc         show documentation for package or symbolenv         print Go environment informationfix         update packages to use new APIsfmt         gofmt (reformat) package sourcesgenerate    generate Go files by processing sourceget         add dependencies to current module and install theminstall     compile and install packages and dependencieslist        list packages or modulesmod         module maintenancerun         compile and run Go programtest        test packagestool        run specified go toolversion     print Go versionvet         report likely mistakes in packagesUse "go help <command>" for more information about a command.Additional help topics:buildconstraint build constraintsbuildmode       build modesc               calling between Go and Ccache           build and test cachingenvironment     environment variablesfiletype        file typesgo.mod          the go.mod filegopath          GOPATH environment variablegopath-get      legacy GOPATH go getgoproxy         module proxy protocolimportpath      import path syntaxmodules         modules, module versions, and moremodule-get      module-aware go getmodule-auth     module authentication using go.sumpackages        package lists and patternsprivate         configuration for downloading non-public codetestflag        testing flagstestfunc        testing functionsvcs             controlling version control with GOVCSUse "go help <topic>" for more information about that topic.➜  ~

重点记忆

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

1. go run

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

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

2. go build

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

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

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

3. go install

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

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

4. go test

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

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

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

详情:44-Gotest工具详解

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

5. go mod

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

6. go clean

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

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

7. go fmt

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

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

8. go vet

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

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

9. go get

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

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

10. go list

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

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

11. go doc

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

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

12. go env

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

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

13. go tool

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

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

详情查看:go tool 命令一览

14. go generate

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

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

15. go version

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

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

16. go fix

go fix [packages]
  • 用途:更新Go代码以使用最新的语言功能和标准库。
  • 使用场景:用于将老版本的Go代码迁移到最新版本,修正因语言或库变化导致的代码不兼容问题。
  • 示例
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 开发过程中事半功倍,提升编程效率。

http://www.xdnf.cn/news/18915.html

相关文章:

  • 微信小程序对接EdgeX Foundry详细指南
  • 云计算学习100天-第31天
  • 从零开始的云计算生活——第五十三天,发愤图强,kubernetes模块之Prometheus和发布
  • 【SpringAI】快速上手,详解项目快速集成主流大模型DeepSeek,ChatGPT
  • 【TEC045-KIT】基于复旦微 FMQL45T900 的全国产化 ARM 开发套件
  • Uniapp中自定义导航栏
  • 如何将iPhone上的隐藏照片传输到电脑
  • Flask测试平台开发实战-第二篇
  • 服务器核心组件:CPU 与 GPU 的核心区别、应用场景、协同工作
  • 麒麟操作系统挂载NAS服务器
  • React中优雅管理CSS变量的最佳实践
  • 【动态规划】子数组、子串问题
  • 保姆级教程 | 在Ubuntu上部署Claude Code Plan Mode全过程
  • 设计模式相关面试题
  • 2025年KBS SCI1区TOP,矩阵差分进化算法+移动网络视觉覆盖无人机轨迹优化,深度解析+性能实测
  • 前端异常监控,性能监控,埋点,怎么做的
  • Android 开发 - 数据共享(数据共享、内容提供者实现、动态权限申请)
  • 深度学习篇---模型参数保存
  • [肥用云计算] Serverless 多环境配置
  • PCM转音频
  • 面试之HashMap
  • LightRAG
  • 文档格式转换软件 一键Word转PDF
  • PPT处理控件Aspose.Slides教程:在 C# 中将 PPTX 转换为 Markdown
  • 【qml-7】qml与c++交互(自动补全提示)
  • [n8n] 全文检索(FTS)集成 | Mermaid图表生成
  • Android 使用MediaMuxer+MediaCodec编码MP4视频
  • 辅助驾驶出海、具身智能落地,稀缺的3D数据从哪里来?
  • 介绍智慧城管十大核心功能之一:风险预警系统
  • 架构评审:构建稳定、高效、可扩展的技术架构(下)