Go语言常用命令详解(一)

news2024/12/25 13:41:14

文章目录

      • 前言
      • 常用命令
        • go build
          • 示例
          • 参数说明
        • go test
          • 示例
          • 参数说明
        • go run
          • 示例
          • 参数说明
        • go clean
          • 示例
          • 参数介绍
      • 总结
      • 写在最后

csdn-start

前言

Go语言是一种开源的编程语言,由Google开发并于2009年首次发布。它以其简洁、高效和并发性能而备受开发者的喜爱。作为一门相对年轻的语言,Go语言的学习和使用对于初学者来说可能会有一些挑战。因此,本文将介绍一些常用的Go语言命令,帮助读者更好地理解和使用这门语言。

常用命令

以下是一些常用的Go命令,这些命令可以帮助您在Go开发中进行编译、测试、运行和管理依赖项等任务。

命令描述
go build编译Go程序包及其依赖项。
go test运行包的测试。
go run编译并运行Go程序。
go clean删除编译生成的对象文件和缓存文件。
go bug启动一个用于报告bug的工具。
go doc显示有关包或符号的文档。
go env打印有关Go环境的信息。
go fix更新包以使用新的API。
go fmt使用gofmt重新格式化Go包的源代码。
go generate通过处理源代码来生成Go文件。
go get将依赖项添加到当前模块并安装它们。
go install编译并安装包及其依赖项。
go list列出包或模块的信息。
go mod用于模块维护,包括初始化模块、添加和更新依赖项等。
go work用于工作区维护,例如查看、清理或打印工作区信息。
go tool运行指定的Go工具。
go version打印Go的版本信息。
go vet检查 Go 源码并报告可疑的错误。

go build

go build命令是用于编译Go语言程序并生成可执行文件。

它可以将Go源代码编译成机器代码,并将其打包成可执行文件,方便在不同的操作系统上运行。

使用go build命令非常简单,只需在终端中输入以下命令:

go build [文件名]

其中,[文件名]是要编译的Go源文件的文件名(不包括扩展名.go)。如果不指定文件名,则默认编译当前目录下的所有Go源文件。

示例

下面是一个示例,假设我们有一个名为hello.go的Go源文件,内容如下:

package main

import "fmt"

func main() {
	fmt.Println("Hello, Go!")
}

我们可以使用go build命令来编译该文件:

go build hello.go

执行该命令后,会在当前目录下生成一个名为hello的可执行文件。我们可以直接运行该文件来执行Go程序:

./hello

运行结果将会输出:

Hello, Go!

除了编译单个文件外,go build命令还支持编译整个项目。只需在项目根目录下执行go build命令即可。这将会编译整个项目,并在根目录下生成一个可执行文件。

需要注意的是,go build命令只会编译Go源代码,不会执行任何测试。如果需要执行测试,可以使用go test命令。

参数说明
参数说明
-o指定生成的可执行文件的名称和路径。例如,使用go build -o myapp命令可以将生成的可执行文件命名为myapp。
-v显示编译过程中的详细信息。使用该参数可以查看编译过程中的详细输出。
-x显示执行的编译操作。使用该参数可以查看编译操作的详细信息,并同时执行编译操作。
-ldflags指定链接标志。该参数可以用于传递链接器的标志,例如设置可执行文件的版本信息等。
-a强制重新编译所有的包。使用该参数可以强制重新编译所有的包,而不仅仅是修改过的包。
-race指定编译时使用的标签。该参数可以用于根据标签选择性地编译代码,例如根据操作系统或架构选择性地编译代码。
-mod指定使用的模块模式。该参数可以用于指定使用的模块模式,例如使用mod或vendor模式。

需要注意的是,go build命令的参数可以组合使用,以满足不同的编译需求。例如,可以使用go build -o myapp -ldflags "-X main.version=1.0"命令来指定生成的可执行文件的名称和版本信息。

通过组合使用这些参数,我们可以更灵活地进行编译操作,以满足不同的需求。

go test

go test命令用于运行测试代码并生成测试报告。

它可以自动识别项目中的测试文件,并执行其中的测试函数,然后输出测试结果。

使用go test命令非常简单,只需在终端中输入以下命令:

go test

该命令会自动在当前目录下寻找以_test.go结尾的文件,并执行其中的测试函数。测试函数的命名必须以Test开头,并接着是要测试的函数名,例如TestAdd()。

示例

下面是一个示例,假设我们有一个名为math.go的文件,其中定义了一个加法函数Add(),以及一个名为math_test.go的测试文件,内容如下:

math.go:

package math

func Add(a, b int) int {
return a + b
}

math_test.go:

package math
import "testing"

func TestAdd(t *testing.T) {
    result := Add(2, 3)
    if result != 5 {
    	t.Errorf("Add(2, 3) = %d; want 5", result)
    }
}

我们可以使用go test命令来运行该测试文件:

go test

执行该命令后,会输出测试结果:

PASS
ok _/path/to/project 0.001s

这表示测试通过,没有发现错误。如果测试中存在错误,将会输出相应的错误信息。

除了默认的输出结果外,go test命令还支持一些可选的参数,例如-v参数可以输出更详细的测试结果,-cover参数可以生成代码覆盖率报告等。

参数说明
参数说明
-v显示详细的测试信息。使用该参数可以查看每个测试用例的详细输出。
-run指定要运行的测试用例的正则表达式。使用该参数可以选择性地运行符合指定正则表达式的测试用例。
-cover生成代码覆盖率报告。使用该参数可以生成代码覆盖率报告,显示测试代码对被测试代码的覆盖情况。
-coverprofile指定生成的代码覆盖率文件的名称和路径。使用该参数可以将生成的代码覆盖率报告保存到指定的文件中。
-covermode指定代码覆盖率的模式。该参数可以用于指定代码覆盖率的计算方式。
-bench运行性能测试。使用该参数可以运行性能测试,并输出性能测试的结果。
-benchmem显示内存分配的统计信息。使用该参数可以显示性能测试过程中的内存分配情况。
-benchtime指定性能测试的运行时间。该参数可以用于指定性能测试的运行时间,例如设置为"10s"表示运行10秒。
-timeout指定测试的超时时间。该参数可以用于指定测试的超时时间,例如设置为"5s"表示测试超过5秒将被终止。
-short运行短时间的测试。使用该参数可以运行短时间的测试,例如跳过一些耗时较长的测试用例。

go test命令的参数可以组合使用,以满足不同的测试需求。例如,可以使用go test -v -cover命令来运行测试并生成代码覆盖率报告。

go run

go run命令是用于直接运行Go源代码文件。

它可以在不生成可执行文件的情况下,直接编译并运行Go程序。

使用go run命令非常简单,只需在终端中输入以下命令:

go run <文件名>.go

其中,<文件名>.go是要运行的Go源代码文件的文件名。

示例

下面是一个示例,假设我们有一个名为hello.go的文件,内容如下:

package main

import "fmt"

func main() {
	fmt.Println("Hello, Go!")
}

我们可以使用go run命令来运行该文件:

go run hello.go

执行该命令后,会输出程序的运行结果:

Hello, Go!

可以看到,go run命令会自动编译并运行指定的Go源代码文件,并将结果输出到终端。

需要注意的是,go run命令只能用于运行单个Go源代码文件,不能用于运行多个文件或整个项目。

如果需要运行多个文件或整个项目,可以考虑使用go build命令生成可执行文件,然后再运行可执行文件。

参数说明
参数说明
-a强制重新编译所有依赖的包。使用该参数可以确保所有依赖的包都被重新编译,而不使用缓存的结果。
-n打印编译过程中的命令,但不执行。使用该参数可以查看编译过程中执行的命令,但不实际执行这些命令。
-x打印编译过程中的详细信息。使用该参数可以查看编译过程中的详细信息,包括编译器和链接器的命令。
-work打印编译过程中的临时工作目录。使用该参数可以查看编译过程中生成的临时文件和目录。
-vet运行静态代码分析工具vet。使用该参数可以在编译过程中运行vet工具,检查代码中的潜在问题。
-race启用数据竞争检测。使用该参数可以帮助发现并解决并发访问共享数据的问题。
-mod指定使用的模块支持方式。该参数可以用于指定使用的模块支持方式
-tags指定编译时使用的标签。例如设置为"debug"表示只编译带有debug标签的代码。

go run命令的参数可以组合使用,以满足不同的编译和运行需求。例如,可以使用go run -race命令来编译并运行带有数据竞争检测的代码。

go clean

go clean命令是Go语言中常用的命令之一,用于清理项目目录下生成的可执行文件、测试结果和临时文件等。

使用go clean命令非常简单,只需在终端中输入以下命令:

go clean

该命令会删除项目目录下生成的可执行文件、测试结果和临时文件等。它会根据项目的构建配置和操作系统的不同,删除不同的文件。

示例

- 清理可执行文件:

go clean -i -r

该命令会删除项目目录下生成的可执行文件。-i参数表示同时删除与可执行文件相关的安装目录,-r参数表示递归删除。

- 清理测试结果:

go clean -testcache

该命令会删除项目目录下生成的测试结果缓存文件。

- 清理临时文件:

go clean -cache

该命令会删除项目目录下生成的临时文件和缓存文件。

需要注意的是,go clean命令会删除项目目录下生成的文件,因此在使用该命令之前,建议先备份重要的文件。

参数介绍
参数名说明
-i同时删除与可执行文件相关的安装目录。
-r递归删除。该参数会删除指定目录及其子目录下的文件。
-n显示将要执行的清理操作,但不实际执行。使用该参数可以查看清理操作的详细信息,而不会真正删除文件。
-cache清理临时文件和缓存文件。该参数会删除项目目录下生成的临时文件和缓存文件。
-testcache清理测试结果缓存文件。该参数会删除项目目录下生成的测试结果缓存文件。
-modcache清理模块缓存文件。该参数会删除项目目录下生成的模块缓存文件。
-x显示执行的清理操作。使用该参数可以查看清理操作的详细信息,并同时执行清理操作。

go clean命令的参数可以用于指定清理的范围和方式。通过组合使用这些参数,我们可以更灵活地进行清理操作,以满足不同的需求。


总结

本文对 go命令的buid,test,run,clean四个命令的介绍,示例,以及参数说明,下一章会介绍剩余的几种命令


写在最后

感谢您的支持和鼓励! 😊🙏

如果大家对相关文章感兴趣,可以关注公众号"架构殿堂",会持续更新AIGC,java基础面试题, netty, spring boot, spring cloud等系列文章,一系列干货随时送达!

csdn-end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1214536.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

本地视频AI人脸替换,一键启动,傻瓜式操作

本地无须准备配置和运行环镜&#xff0c;整个压缩包下载后解压&#xff0c;一键启动程序&#xff0c;只需一张照片和一个视频&#xff0c;就可以把视频中的人物替换成您想要的人脸。支持CPU和GPU解码&#xff0c;使用GPU解码速度较快。 所有使用的软件安装包已上传网盘&#x…

提升pip速度!设置pip全局镜像源,速度飞起!

文章目录 💢 问题 💢💯 解决方案 💯🐾 镜像源🐾 镜像全局配置🍄 Windows系统🍄 Linux和macOS系统🍄 添加环境变量的方式💢 问题 💢 由于“某些网络限制”原因,我们在使用pip安装python模块的时候速度会比较慢,这个时候我们就需要用到一些镜像源,本文将…

requests 技术问题与解决方案:解决字典值中列表在URL编码时的问题

本文将探讨 issue 80 中提出的技术问题及其解决方案。该问题主要涉及如何在模型的 _encode_params 方法中处理列表作为字典值的情况。 问题背景 在处理用户提交的数据时&#xff0c;有时需要将字典序列化为 URL 编码字符串。在 requests 库中&#xff0c;这个过程通常通过 par…

点成分享丨如何提高旋转蒸发仪的蒸馏提纯效率

旋转蒸发仪&#xff1a; 主要用于医药、化工和制药等行业的浓缩、结晶、干燥、分离及溶媒回收。其原理为在真空条件下&#xff0c;恒温加热&#xff0c;使旋转瓶恒速旋转&#xff0c;物料在瓶壁形成大面积薄膜&#xff0c;高效蒸发。溶媒蒸气经高效玻璃冷凝器冷却&#xff0c;…

如何修改Hosts文件(Windows、Linux)本机配置域名解析

Hosts文件是一种在计算机网络中存储主机名与IP地址对应关系的文本文件。通过配置Hosts文件&#xff0c;可以避免在网络环境中DNS无法正常解析时&#xff0c;出现无法访问互联网的问题。 Windows修改hosts文件 1 以windows10系统为例&#xff0c;手指同时按住 windows 键和 X 键…

《洛谷深入浅出基础篇》P1536 村村通——并查集

上链接&#xff1a;P1536 村村通 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P1536 上题干&#xff1a; 题目描述 某市调查城镇交通状况&#xff0c;得到现有城镇道路统计表。表中列出了每条道路直接连通的城镇。市政府 "村村通工程…

Flutter 3.16 发布,快来看有什么更新吧

参考原文&#xff1a;https://medium.com/flutter/whats-new-in-flutter-3-16-dba6cb1015d1 Flutter 又又又发布新季度更新啦&#xff0c;同时随着而来的还有 Dart 3.2&#xff0c;本次 3.16 开始 Material 3 会成为新的默认主题&#xff0c;另外 Android 也迎来了 Impeller 的…

力扣第797题 所有可能的路径 C++ 深度优先搜索 +java

题目 797. 所有可能的路径 中等 相关标签 深度优先搜索 广度优先搜索 图 回溯 给你一个有 n 个节点的 有向无环图&#xff08;DAG&#xff09;&#xff0c;请你找出所有从节点 0 到节点 n-1 的路径并输出&#xff08;不要求按特定顺序&#xff09; graph[i] 是一个从…

郑州市管城区工信局局长任华民一行莅临中创算力调研指导工作

2023年11月15日&#xff0c;为深入了解企业生产经营情况&#xff0c;解决发展诉求。郑州市管城区工信局局长任华民等领导一行莅临中创算力&#xff0c;中创副总经理杨光、技术总监刘朝阳、行政主管生田等人员陪同调研。 调研期间&#xff0c;双方就生产经营、“算力数据中心”…

零基础学Python怎么学习?我来告诉你

对于IT新手来说&#xff0c;零基础学Python的话&#xff0c;之后可选择的职业方向非常多。Python全栈和爬虫一直以来都是市场的最火的就业岗位之一&#xff0c;它们的薪资回报也算是开发岗里面的顶级了。而且随着大数据和人工智能时代的到来&#xff0c;数据处理和人工智能行业…

Python | 机器学习之逻辑回归

​&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《人工智能奇遇记》&#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 目录结构 1. 机器学习之逻辑回归概念 1.1 机器学习 1.2 逻辑回归 2. 逻辑回归 2.1 实验目的…

通过注释来埋点

目录 开始 插件编写 功能一 功能二 功能三 合并功能 运行代码 总结 这篇文章主要讲如何根据注释&#xff0c;通过babel插件自动地&#xff0c;给相应函数插入埋点代码&#xff0c;在实现埋点逻辑和业务逻辑分离的基础上&#xff0c;配置更加灵活 这篇文章想要达到的效…

idea查看UML类图

idea查看UML类图 一、如何查看UML类图 1.1 选择需要查看的类或者包&#xff0c;鼠标右键&#xff0c;选择Diagrams->Show Diagram 1.2 对于UML类图中的包&#xff0c;选中后点击鼠标右键-> Expand Nodes(展开节点) 展开前 展开后 1.3 展开后分布比较凌乱&#xff…

inner join left join 什么情况效果相同

效果不同的情况 SELECT g.name AS groupName, g.root_code AS rootCode, g.data_sort AS groupDataSort, l.* FROM wise_system_point_group g LEFT JOIN wise_system_point_list l ON g.code l.group_code WHERE g.code "drug" ORDER BY g.data_sort, l.data_s…

DBA_IND_STATISTICS 字段含义

功能 展示数据库中所有索引的优化器统计信息。 字段说明 参考&#xff1a;https://www.oceanbase.com/docs/enterprise-oceanbase-database-cn-10000000000885743

骨传导式蓝牙耳机值得入手吗?盘点最值得入手的5款骨传导耳机

在骨传导耳机还没有火之前&#xff0c;相信很多朋友都是使用入耳式和头戴式耳机比较多一点&#xff0c;但是慢慢的会发现&#xff0c;这两种耳机都存在很大的问题&#xff0c;比如说入耳式耳机&#xff0c;长时间佩戴会造成耳朵痛等问题&#xff0c;而头戴式耳机因为隔音效果好…

一文解释对比学习

对比学习是一种无监督学习技术&#xff0c;其核心思想是通过比较不同样本之间的相似性和差异性来学习数据的表示&#xff08;features&#xff09;。它不依赖于标签数据&#xff0c;而是通过样本之间的相互关系&#xff0c;使得模型能够学习到有意义的特征表示。 在对比学习中…

金融行业备份容灾:如何满足严格行业标准同时实现成本效益优化?

北京时间11月9日&#xff0c;中国工商银行股份有限公司在美全资子公司——工银金融服务有限责任公司&#xff08;ICBCFS&#xff09;遭受勒索软件攻击&#xff0c;导致部分业务系统中断&#xff0c;造成部分市场的重大损失。中国工商银行的这次网络攻击事件也再次凸显了金融系统…

[Mac软件]Adobe XD(Experience Design) v57.1.12.2一个功能强大的原型设计软件

Adobe XD是一个直观、强大的UI/UX开发工具&#xff0c;旨在设计、原型设计、用户之间共享材料&#xff0c;以及通过数字技术设计交互。Adobe XD为您提供开发网站、应用程序、语音界面、游戏界面、电子邮件模板等所需的一切。 无限制地创建 设计各种互动&#xff0c;创建看起来…

一起学docker系列之三docker的详细安装步骤

目录 前言1. 准备环境2. 卸载已有的Docker3. 安装编译工具4. 安装必需的软件5. 配置镜像仓库6. 更新YUM软件包索引7. 安装Docker CE8. 启动Docker9. 测试Docker10. 卸载Docker结语 前言 安装Docker是一项重要的任务&#xff0c;因为它为应用程序提供了容器化的环境&#xff0c…