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

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.dtcms.com/a/355809.html

相关文章:

  • 【Agent】AutoAgent: A Fully-Automated and Zero-Code Framework for LLM Agents
  • 从零开始:手写数字识别程序的深度学习实践
  • 《实际项目》空调水系统群控方案
  • TensorFlow 深度学习 | 三种创建模型的 API
  • Promptalot-Midjourney提示词分享平台
  • Java爬虫是什么,如何获取API接口
  • 嵌入式开发学习———Qt软件环境下的C++学习(七)
  • Nginx中`location`路径匹配规则
  • 20250828_学习JumpServer开源堡垒机使用:统一访问入口 + 安全管控 + 操作审计
  • AI翻唱-RVC在线使用-AutoDL
  • 现代数据架构中的核心技术组件解析
  • RPM Spec 文件中 `Provides` 与 `%py_provides` 实现原理及应用场景解析
  • AP化学课程知识点解析学习计划及培训机构推荐
  • 解决pycharm中已经设置python解释器但是terminal中没有变成对应的conda环境
  • 步进电机、直流电机常见问题
  • ASCM-专有云公共云
  • C#写的一键自动测灯带的应用 AI帮写的。
  • 梯度下降,梯度消失,梯度爆炸
  • hintcon2025 Verilog OJ
  • 若依cloud集训总结
  • 对于冯诺依曼体系的理解
  • Linux:信号详解--醍醐灌顶
  • 基于Spring Cloud Gateway构建API网关
  • 第三章:Cesium 矢量数据可视化(点、线、面)
  • Shell脚本(1)
  • 机器学习可解释库Shapash的快速使用教程(五)
  • 全能工程软件 Siemens NX:从设计到制造的全流程解决方案,附安装指南
  • 滑台模组如何实现电子制造精密加工?
  • HVV面经总结(二)
  • 自动量化交易