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

文章目录

      • 前言
      • 常用命令
        • go get
          • 示例
          • 参数说明
        • go install
          • 示例
          • 参数说明
        • go list
          • 示例
        • go mod
          • 示例
          • 参数说明
        • go work
          • 基本用法
          • 示例
        • go tool
          • 示例
        • go version
          • 示例
        • go vet
          • 示例
      • 总结
      • 写在最后

579a429daf314744b995f37351b46548

前言

接着上一篇继续介绍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 get

go get命令用于获取、安装或更新远程代码包。它可以从远程代码仓库下载代码,并将其安装到本地的GOPATH目录中。

使用go get命令的一般格式如下:

go get [package]

其中,[package]是要获取、安装或更新的远程代码包的导入路径。

示例

1.获取远程代码包:

go get github.com/example/package

这个命令会从GitHub上获取名为"package"的代码包,并将其安装到本地的GOPATH目录中。

2.更新已安装的代码包:

go get -u github.com/example/package

这个命令会更新已安装的名为"package"的代码包,将其更新到最新版本。

需要注意的是,go get命令会自动解析代码包的依赖关系,并下载和安装所有相关的代码包。它还会将代码包安装到GOPATH目录中的src和bin子目录中,以便后续的编译和执行。

参数说明
参数说明
-u更新已安装的代码包到最新版本。
-t同时下载并安装测试所需的代码包。
-d只下载代码包,不安装。
-insecure允许下载和安装不受信任的HTTPS代码包。
-v显示详细的日志信息,包括下载和安装过程中的详细输出。
-fix在下载代码包之前,自动修复代码包中的错误。
-tagnames显示可用的版本标签。
-tags指定要使用的构建标签,用于选择性地编译代码包。
-buildmode指定构建模式,例如-buildmode=shared用于构建共享库。

这些参数可以根据需要进行组合使用,以满足具体的需求。

例如,使用go get -u -t github.com/example/package命令可以更新已安装的代码包,并同时下载并安装测试所需的代码包。

需要注意的是,go get命令的参数可以根据不同的情况进行调整和使用,具体的使用方式可以参考官方文档或使用go help get命令查看帮助信息。

go install

go install命令是Go语言中的一个工具命令,用于编译并安装指定的代码包或可执行文件。它会将编译后的结果安装到GOPATH目录中的bin子目录中,以便后续的执行。

使用go install命令的一般格式如下:

go install [package]

其中,[package]是要编译并安装的代码包的导入路径。

示例

1.安装代码包:

go install github.com/example/package

这个命令会编译名为"package"的代码包,并将其安装到本地的GOPATH目录中的bin子目录中。

2.安装可执行文件:

go install github.com/example/package/cmd/myapp

这个命令会编译名为"myapp"的可执行文件,并将其安装到本地的GOPATH目录中的bin子目录中。

需要注意的是,go install命令会自动解析代码包的依赖关系,并编译和安装所有相关的代码包。它还会将可执行文件安装到GOPATH目录中的bin子目录中,以便后续的执行。

参数说明
参数说明
-v显示详细的日志信息,包括编译和安装过程中的详细输出。
-x显示执行的命令,包括编译和安装过程中执行的命令。
-race启用数据竞争检测,用于检测并发程序中的数据竞争问题。
-ldflags指定链接时的标志,用于传递额外的参数给链接器。
-tags指定要使用的构建标签,用于选择性地编译代码包。
-buildmode指定构建模式,例如-buildmode=shared用于构建共享库。
-trimpath在编译时移除构建路径信息,以减小编译结果的大小。
-mod指定使用的模块支持方式,例如-mod=vendor用于使用vendor目录中的依赖。

这些参数可以根据需要进行组合使用,以满足具体的需求。

例如,使用go install -v -race github.com/example/package命令可以启用详细的日志信息,并启用数据竞争检测,编译并安装名为"package"的代码包。

需要注意的是,go install命令的参数可以根据不同的情况进行调整和使用,具体的使用方式可以参考官方文档或使用go help install命令查看帮助信息。

go list

go list命令是Go语言中的一个工具命令,用于列出指定代码包的信息。它可以用于查看代码包的导入路径、依赖关系、编译状态等信息。

使用go list命令的一般格式如下:

go list [flags] [package]

其中,[flags]是可选的标志参数,[package]是要列出信息的代码包的导入路径。

示例

1.列出代码包的导入路径:

go list github.com/example/package

这个命令会列出名为"package"的代码包的导入路径。

2.列出代码包的依赖关系:

go list -f '{{.Deps}}' github.com/example/package

这个命令会列出名为"package"的代码包的依赖关系。

3.列出代码包的编译状态:

go list -f '{{.Name}}: {{.Stale}}' github.com/example/package

这个命令会列出名为"package"的代码包的名称和编译状态。

需要注意的是,go list命令支持一些标志参数,用于指定输出格式、过滤条件等。你可以根据具体的需求使用不同的标志参数来获取所需的信息。

go mod

go mod命令是Go语言中用于管理模块(module)的命令。模块是Go语言中引入的一种新的代码组织方式,用于替代原先的GOPATH方式。

使用go mod命令可以初始化、编辑和管理模块,以及处理模块的依赖关系。

示例

1.初始化模块:

go mod init [module]

这个命令用于初始化一个新的模块,并指定模块的名称。例如:

go mod init github.com/example/module

2.添加依赖:

go mod tidy

这个命令会根据代码中的import语句自动添加或删除模块的依赖关系,并更新go.mod文件。

3.下载依赖:

go mod download

这个命令会下载模块的依赖关系到本地缓存中。

4.更新依赖:

go get -u [module]

这个命令会更新指定模块的依赖关系,并将更新后的依赖关系写入go.mod文件。

5.查看依赖:

go list -m all

这个命令会列出当前模块的所有依赖关系。

6.清理依赖:

go mod tidy

这个命令会清理模块的依赖关系,删除不再使用的依赖项。

需要注意的是,go mod命令还支持其他一些参数和子命令,用于处理更复杂的模块管理任务。你可以使用go help mod命令查看更详细的帮助信息。

参数说明
参数说明
-init初始化模块。使用该参数可以在当前目录下初始化一个新的模块。
-require [module@version]添加依赖关系。使用该参数可以手动添加一个依赖关系到当前模块。
-exclude [module]排除依赖关系。使用该参数可以排除指定的依赖关系,不会被下载和使用。
-replace [old@v=new]替换依赖关系。使用该参数可以将指定的依赖关系替换为其他版本或其他模块。
-dropreplace [module]移除替换关系。使用该参数可以移除指定的替换关系。
-require [module@none]移除依赖关系。使用该参数可以移除指定的依赖关系。
-exclude [module@none]移除排除关系。使用该参数可以移除指定的排除关系。
-json以JSON格式输出结果。使用该参数可以以JSON格式输出go mod命令的结果。
-v显示详细信息。使用该参数可以显示更详细的信息,例如下载的依赖关系的版本号。
-mod [value]设置模块的下载模式。使用该参数可以设置模块的下载模式,可选值为"readonly"、“vendor"和"mod”。
-verify验证模块的依赖关系。使用该参数可以验证模块的依赖关系是否完整和正确。

需要注意的是,go mod命令还支持其他一些参数和子命令,用于处理更复杂的模块管理任务。可以使用go help mod命令查看更详细的帮助信息。

go work

go work命令是Go语言的一个工具,用于管理Go工作区。它可以帮助开发者在多个项目之间轻松切换,同时保持项目的依赖关系和构建配置的一致性。

基本用法
  1. 创建一个新的工作区:
go work init [path]

这将在指定的路径下创建一个新的工作区,并初始化一个空的Go模块。

  1. 列出当前工作区的所有模块:
go work list
  1. 切换到另一个工作区:
go work use <module>

<module>替换为要切换到的工作区的模块名称。

  1. 删除一个工作区:
go work delete <module>

<module>替换为要删除的工作区的模块名称。

示例
  1. 创建一个名为myproject的新工作区:
go work init myproject
  1. 列出当前工作区的所有模块:
go work list  

输出:

myproject/... v0.0.0-20190723092333-d5e6001c442d
  1. 切换到myproject工作区:
go work use myproject
  1. 删除myproject工作区:
go work delete myproject
go tool

go tool是Go语言提供的一个命令,用于执行Go工具链中的特定工具。它可以用来执行各种与Go相关的工具,如编译器、链接器、测试工具等。

示例

下面是一些常用的go tool命令示例:

1.go tool compile:用于将Go源代码编译为机器代码。

示例:go tool compile main.go

2.go tool link:用于将编译后的目标文件链接为可执行文件。

示例:go tool link -o main main.o

3.go tool test:用于运行Go测试。

示例:go tool test -run TestFunction

4.go tool pprof:用于分析Go程序的性能。

示例:go tool pprof http://localhost:8080/debug/pprof/profile

5.go tool vet:用于静态分析Go代码,查找潜在的错误和问题。

示例:go tool vet main.go

6.go tool cover:用于生成代码覆盖率报告。

示例:go tool cover -html=coverage.out

需要注意的是,go tool命令还支持其他一些工具,如asmcgofix等。你可以使用go tool命令加上相应的子命令来执行这些工具。例如:go tool asmgo tool cgogo tool fix等。


go version

go version命令用于显示当前安装的Go语言版本。它可以帮助你确定你正在使用的Go语言版本,以及验证你的Go语言环境是否正确安装和配置。

示例

下面是go version命令的示例:

1:显示当前安装的Go语言版本

go version

示例输出:

go version go1.17.2 darwin/amd64

2:显示当前安装的Go语言版本,并将结果保存到文件中

go version > version.txt

执行上述命令后,会在当前目录下生成一个名为version.txt的文件,其中包含了当前安装的Go语言版本信息。

go vet

go vet命令是Go语言提供的一个静态分析工具,用于检查Go代码中的常见错误和潜在问题。它可以帮助开发者发现一些在编译时无法捕获的错误,提高代码的质量和可靠性。

示例

下面是go vet命令的示例:

1:检查当前目录下的所有Go源文件

go vet

2:检查指定的Go源文件

go vet main.go

3:检查指定的包

go vet github.com/example/package

4:检查指定的包及其子包

go vet ./...

5:将检查结果输出到文件

go vet -vettool=vet.out

执行上述命令后,会在当前目录下生成一个名为vet.out的文件,其中包含了go vet命令的检查结果。


总结

至此,所有的常用命令已经介绍完毕,谢谢大家


写在最后

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

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

csdn-end

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

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

相关文章

Hfish安全蜜罐部署

一、Hfish蜜罐介绍 HFish蜜罐官网 HFish是一款社区型免费蜜罐&#xff0c;侧重企业安全场景&#xff0c;从内网失陷检测、外网威胁感知、威胁情报生产三个场景出发&#xff0c;为用户提供可独立操作且实用的功能&#xff0c;通过安全、敏捷、可靠的中低交互蜜罐增加用户在失陷…

Vue3 相较 Vue2 做的重大更新

双向数据绑定方法 vue2 Object.definePropertie() vue3 Proxy VDOM 性能瓶颈突破 做了静态标记&#xff0c;静态内容不会去再对比 通过位运算对比得出其的静态标记情况 Fragments 允许组件多个根节点 vue3 会虚拟一个根节点&#xff0c;但实际不会渲染虚拟的节点 Tree-S…

力扣第463题 岛屿的周长 C++ 深度优先搜索 + 思维判断的边界

题目 463. 岛屿的周长 简单 相关标签 深度优先搜索 广度优先搜索 数组 矩阵 给定一个 row x col 的二维网格地图 grid &#xff0c;其中&#xff1a;grid[i][j] 1 表示陆地&#xff0c; grid[i][j] 0 表示水域。 网格中的格子 水平和垂直 方向相连&#xff08;对角线…

MySQL数据库——存储过程-条件处理程序(通过SQLSTATE指定具体的状态码,通过SQLSTATE的代码简写方式 NOT FOUND)

目录 介绍 案例 通过SQLSTATE指定具体的状态码 通过SQLSTATE的代码简写方式 NOT FOUND 介绍 条件处理程序&#xff08;Handler&#xff09;可以用来定义在流程控制结构执行过程中遇到问题时相应的处理步骤。具体语法为&#xff1a; DECLARE handler_action HANDLER FOR c…

V100 GPU服务器安装CUDNN教程

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

C/C++内存管理(1):C/C++内存分布,C++内存管理方式

一、C/C内存分布 1.1 1.2 二、C内存管理方式 C可以通过操作符new和delete进行动态内存管理。 2.1 new和delete操作内置类型 int main() {int* p1 new int;// 注意区分p2和p3int* p2 new int(10);// 对*p2进行初始化 10int* p3 new int[10];// p3 指向一块40个字节的int类…

硬盘录像机无法注册到视频监控平台EasyCVR上是什么原因?该如何解决?

视频监控汇聚平台EasyCVR可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防视频监控的能力&#xff0c;也…

C#,数值计算——插值和外推,PolCoef的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// polynomial coefficients from polynomial values /// </summary> public class PolCoef { public PolCoef() { } /// <summary>…

Startdrive中上传参数设置的具体方法和注意事项

Startdrive中上传参数设置的具体方法和注意事项 适用于配 SINAMICS S120、G130、G150、S150和MV(基于CU3x0-2的驱动器)和所有启动驱动器版本INAMICS G115D/G120/G120D/G120C/G120P/G110M(基于CU2x0-2的驱动器) 根据SINAMICS类型的不同,Startdrive中的Upload参数有所不同。…

Ubuntu20上离线安装samba

如果联网&#xff0c;一条 sudo apt-get install samba就可能解决问题&#xff0c;但是没有网&#xff0c;那么只能一个一个的解决问题&#xff1a; 我以为装了samba-common就可以了&#xff0c;发现smbd.serverice not found,于是开始了漫长的下载依赖包&#xff0c;安装&…

win11,引导项管理

1&#xff0c;打开cmd,输入msconfig 2,进入引导选项卡 3&#xff0c;删除不需要的引导项

nginx配置-超详细

背景 安装nginx之后&#xff0c;会自动生成很多的文件&#xff0c;但是nginx.conf这个文件是我们的核心&#xff0c;如何去正确的修改和优化它是nginx的核心。在配置之前&#xff0c;需要看懂它的配置。鉴于经常需要配置&#xff0c;再次记录一下 一、nginx的默认配置 #user …

机器人制作开源方案 | 莲花灯

1. 功能描述 莲花灯是一款基于莲花形象设计的机器人&#xff0c;本文示例将用两种模式来实现莲花灯的亮灭功能。 自主模式&#xff1a;用 光强传感器 控制莲花灯的灯叶开合。暗光情况下灯叶打开&#xff0c;灯亮&#xff1b;强光情况下灯叶闭合&#xff0c;灯灭。 …

深入解析数据结构与算法之堆

文章目录 &#x1f966;引言&#xff1a;&#x1f966;什么是堆&#x1f966;大顶堆与小顶堆&#x1f9c4;大顶堆&#xff08;Max Heap&#xff09;&#x1f9c4;小顶堆&#xff08;Min Heap&#xff09; &#x1f966;堆的表示&#x1f9c4;数组表示&#xff1a;&#x1f9c4;…

RT-Thread Hoist_Motor PID

本节介绍的是一个举升电机&#xff0c;顾名思义&#xff0c;通过转轴控制物体升降&#xff0c;为双通道磁性译码器&#xff0c;利用电调进行操控&#xff0c;具体驱动类似于大学期间最大众的SG180舵机&#xff0c;在一定的频率下&#xff0c;通过调制脉宽进行控制。 设备介绍…

多线程的概念

点击链接返回标题-> 什么是进程&#xff1f; 进程&#xff08;Process&#xff09;&#xff0c;是程序的基本执行实体。 在早期面向进程设计的计算机结构中&#xff0c;进程是程序的基本执行实体&#xff1b; 在当代面向线程设计的计算机结构中&#xff0c;进程是线程的容器…

数据结构 图

树是无环连通图&#xff0c;是一种特殊的图。 分类 图分为有向图[边是有方向的]和无向图[边是无方向的]。 无向图(a—b)&#xff0c;建立两条有向图(a—>b&#xff0c;b—>a)&#xff0c;无向图是一种特殊的有向图。 存储有向图 邻接矩阵 ——用于存储比较稠密的图【…

Mysql数据库 17.Mysql存储引擎

Mysql体系结构分为4层&#xff1a; 1.连接层 最上层是一些客户端和连接服务&#xff0c;包括大多数基于客户端/服务端工具实现的类似于TCP/IP的通信&#xff0c;主要功能是完成一些类似于连接处理、授权认证、安全方案等&#xff0c;在该层上还引入线程池的概念&#xff0c;为…

FL Studio21.2.0.3858免激活版安装下载

前阵子世界级电音盛会Tomorrowland在比利时如期举行&#xff0c;拉开了疫情下Rave文化复兴的帷幕。而国内&#xff0c;也推出了如《超感星电音》等电子音乐综艺&#xff0c;在节目上大家也更多地了解到了电子音乐的制作过程。节目中最被大家看好的制作人Carta所使用的FL Studio…

BUUCTF--[ACTF2020 新生赛]Include

目录 1、本题详解 2、延伸拓展 1、本题详解 访问题目链接 有一个tips的链接&#xff0c;我们点击 请求了file&#xff0c;内容是flag.php的内容&#xff1a;Can you find out the flag? 尝试请求一下index.php 并没有发现什么信息 flag.php也没发现什么 尝试爆破一下它的…