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

文章目录

      • 前言
      • 常用命令
        • 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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C进阶---自定义类型:结构体、枚举、联合

目录 一、前言 二、结构体 2.1结构体的声明 2.2特殊的声明 2.3结构体的自引用 2.4结构体变量的定义和初始化 2.5结构体内存对齐 2.6修改默认对齐数 2.7结构体传参 三、位段 3.1什么是位段 3.2位段的内存分配 3.3位段的跨平台问题 3.4位段的应用 四、枚…

【ML】欠拟合和过拟合的一些判别和优化方法(吴恩达机器学习笔记)

吴恩达老师的机器学习教程笔记 减少误差的一些方法 获得更多的训练实例——解决高方差尝试减少特征的数量——解决高方差尝试获得更多的特征——解决高偏差尝试增加多项式特征——解决高偏差尝试减少正则化程度 λ——解决高偏差尝试增加正则化程度 λ——解决高方差 什么是…

Spring-IoC与DI入门案例

IoC入门案例 IoC入门案例思路分析 管理什么&#xff1f;&#xff08;Service与Dao&#xff09;如何将被管理的对象告知IoC容器&#xff1f;&#xff08;配置&#xff09;被管理的对象交给IoC容器&#xff0c;如何获取到IoC容器&#xff1f;&#xff08;接口&#xff09;IoC容…

【Java 进阶篇】JQuery 动画:为页面添彩的魔法

在现代的Web开发中&#xff0c;用户体验的提升是至关重要的一环。而动画作为页面交互中的重要组成部分&#xff0c;更是为用户带来了全新的感官体验。本篇博客将深入探讨 JQuery 中动画的应用&#xff0c;带你进入一个充满活力的前端世界。 前言 动画是网页设计的一种重要手段…

基于电力需求侧能效管理平台的建设及应用

贾丽丽 安科瑞电气股份有限公司 上海嘉定 201801 摘要&#xff1a;电力是国民经济和居民生活的命脉&#xff0c;为贯彻落实国家对于节能减排工作的总体部署&#xff0c;深入推进电力需求侧管理工作、本文从电力需求侧能效管理平台所要实现的功能与应用信息技术两个方面&#x…

磁盘阵列之RAID

一、RAID介绍 RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出&#xff0c;最初是为了组合小的廉价磁盘来代替大的昂贵磁盘&#xff0c;同时希望磁盘失效时不会使对数据的访问受损失而开发出一定水平的数据保护技术。RAID就是…

linux高级篇基础理论一(详细文档、Apache,网站,MySQL、MySQL备份工具)

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a; 小刘主页 ♥️不能因为人生的道路坎坷,就使自己的身躯变得弯曲;不能因为生活的历程漫长,就使求索的 脚步迟缓。 ♥️学习两年总结出的运维经验&#xff0c;以及思科模拟器全套网络实验教程。专栏&#xff1a;云计算技…

根据视频编码时间批量重命名视频文件

整理收藏的小视频的时候发现很多视频命名很随意&#xff0c;自己命名又太麻烦&#xff0c;看着乱糟糟的文件又心烦&#xff0c;所有写了这个程序&#xff0c;代码如下&#xff1a; import osfrom filetype import filetype from pymediainfo import MediaInfovideo_extension …

μC/OS-II---消息队列管理2(os_q.c)

目录 消息队列的主要优点消息队列和消息邮箱消息队列相关操作向消息队列发送消息(FIFO)向消息队列发送消息(LIFO)向消息队列发送消息(扩展&#xff09;消息队列获取/无等待清空消息队列消息队列信息获取消息队列中断等待 消息队列的主要优点 消息队列的主要优点是解耦和异步通…

nginx启动命令

普通启动 切换到nginx安装目录的sbin目录下&#xff0c;执行&#xff1a;./nginx 通过配置文件启动 ./nginx -c /usr/local/nginx/conf/nginx.conf /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 其中-c是指定配置文件,而且配置文件路径必须指定绝对路…

YOLO改进系列之注意力机制(CoordAttention模型介绍)

简介 在轻量级网络上的研究表明&#xff0c;通道注意力会给模型带来比较显著的性能提升&#xff0c;但是通道注意力通常会忽略对生成空间选择性注意力图非常重要的位置信息。因此&#xff0c;新加坡国立大学的提出了一种为轻量级网络设计的新的注意力机制&#xff0c;该机制将…

RabbitMQ之死信队列

文章目录 一、死信的概念二、死信的来源三、实战1、消息 TTL 过期2、队列达到最大长度3、消息被拒 总结 一、死信的概念 先从概念解释上搞清楚这个定义&#xff0c;死信&#xff0c;顾名思义就是无法被消费的消息&#xff0c;字面意思可以这样理解&#xff0c;一般来说&#x…

转载:YOLOv8改进全新Inner-IoU损失函数:扩展到其他SIoU、CIoU等主流损失函数,带辅助边界框的损失

0、摘要 随着检测器的快速发展&#xff0c;边界框回归&#xff08;BBR&#xff09;损失函数不断进行更新和优化。然而&#xff0c;现有的 IoU 基于 BBR 仍然集中在通过添加新损失项来加速收敛&#xff0c;忽略了 IoU 损失项本身的局限性。尽管从理论上讲&#xff0c;IoU 损失可…

Android10 手势导航

种类 Android10 默认的系统导航有三种&#xff1a; 1.两个按钮的 2.三个按钮的 3.手势 它们分别对应三个包名 frameworks/base/packages/overlays/NavigationBarMode2ButtonOverlay frameworks/base/packages/overlays/NavigationBarMode3ButtonOverlay frameworks/base/packa…

怎么恢复删除的数据? 8个有效的数据恢复方法

无论您在保存备份方面多么小心&#xff0c;灾难有时还是会发生。有时您的备份软件无法按预期运行。 如果您的外部驱动器靠近您的设备&#xff0c;发生火灾/洪水/故障时&#xff0c;有时备份会与原始文件一起丢失。即使是云存储也不能避免故障。 还有一个事实是&#xff0c;我…

C#检查服务状态,以及进行服务启停

1. linux环境 linux环境通过执行bash命令直接执行&#xff1a; public string RunCmdLinux(string cmd){var proc new Process();System.Console.Write($"Run Linux cmd > [{cmd}] START!");proc.StartInfo.CreateNoWindow true;proc.StartInfo.FileName &…

TOUGH系列软件教程

查看原文>>>全流程TOUGH系列软件实践技术应用 TOUGH系列软件是由美国劳伦斯伯克利实验室开发的&#xff0c;旨在解决非饱和带中地下水、热运移的通用模拟软件。和传统地下水模拟软件Feflow和Modflow不同&#xff0c;TOUGH系列软件采用模块化设计和有限积分差网格剖分…

『C++成长记』C++入门——内联函数

&#x1f525;博客主页&#xff1a;小王又困了 &#x1f4da;系列专栏&#xff1a;C &#x1f31f;人之为学&#xff0c;不日近则日退 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、内联函数 &#x1f4d2;1.1内联函数的概念 &#x1f4d2;1.2内联函数的特征 …

js中的instance,isPrototype和getPrototypeOf的使用,来判断类的关系

&#x1f601; 作者简介&#xff1a;一名大四的学生&#xff0c;致力学习前端开发技术 ⭐️个人主页&#xff1a;夜宵饽饽的主页 ❔ 系列专栏&#xff1a;JavaScript小贴士 &#x1f450;学习格言&#xff1a;成功不是终点&#xff0c;失败也并非末日&#xff0c;最重要的是继续…

网络类型及数据链路层的协议

网络类型 --- 根据数据链路层使用的协议来进行划分的。 MA网络 --- 多点接入网络 BMA --- 广播型多点接入网络---以太网协议 NBMA --- 非广播型多点接入网络 以太网协议 --- 需要使用mac地址对不同的主机设备进行区分和标识 --- 以太网之所以需要使用mac地址进行数据寻址&…