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

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

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

相关文章

智能座舱架构与芯片- (14) 测试篇 上

一、 验证平台概要 1.1 测试软件方法论 “软件定义汽车” 的时代&#xff0c;软件在整车制造中的重要性日渐凸显。但不同于其他行业的软件开发&#xff0c;汽车行业有自己独特的软件开发要求。首先是需求严谨、需求层次复杂、需要通过专业的工具进行管理&#xff1b;其次开发…

数据中台之用户画像

用户画像应用领域较为广泛,适合于各个产品周期,从新用户的引流到潜在用户的挖掘、 从老用户 的培养到流失用户的回流等。通过挖掘用户兴趣、偏好、人口统计特征,可以 直接 作用于提升营销精准 度、推荐匹配度,最终提升产品服务和企业利润。还包括广告投放、产品布局和行业报…

从0开始学习JavaScript--深入理解JavaScript的async/await

JavaScript的异步编程在过去经历了回调地狱、Promise的引入&#xff0c;而今&#xff0c;通过async/await&#xff0c;让我们获得了更加优雅、可读性更高的异步编程方式。本文将深入探讨async/await的概念、用法&#xff0c;并通过丰富的示例代码展示其在实际应用中的威力。 理…

JVM垃圾收集器

什么是垃圾收集器 Java虚拟机的垃圾收集器是内存回收的具体实现&#xff0c;主要用于回收不再使用的对象&#xff0c;释放内存空间。Java虚拟机提供了多种垃圾收集器&#xff0c;不同的垃圾收集器适用于不同的场景和需求。 在C中&#xff0c;对象所占的内存在程序结束运行之前…

Windows to Go U盘系统制作(未测完成)

三、Windows U盘系统制作 1、下载windows镜像&#xff0c;并通过Windows To Go方式制作&#xff0c;具体选项参考下面截图 2、选择Windows版本 3、配置Windows 体验相关参数

STM32通用定时器产生PWM信号

STM32通用定时器产生PWM信号 PWM信号stm32定时器PWM生成模式PWM配置基本步骤PWM周期计算CubeMX配置代码展现 本期内容我将展示使用STM32通用定时器产生PWM信号&#xff0c;这里以定时器3通道3为例 PWM信号 如果还不懂的话&#xff0c;可以看看 &#xff1a; “蓝桥杯单片机学习…

远程桌面访问MATLAB 2018B,提示License Manger Error -103,终极解决方案

通过远程桌面方位Windows Server系统下的MATLAB2018B&#xff0c;报错License Manger Error -103&#xff0c;Crack文件夹下的dll文件已经替换&#xff0c;同时也已经输出了lic文件&#xff0c;但是仍然无法打开。但是在本地桌面安装就没有问题。初步怀疑MATLAB的License使用机…

909-2014-T1

文章目录 1.原题2.算法思想3.关键代码4.完整代码5.运行结果 1.原题 为带表头的单链表类Chain编写一个成员函数Reverse&#xff0c;该函数对链表进行逆序操作&#xff08;将链表中的结点按与原序相反的顺序连接&#xff09;&#xff0c;要求逆序操作就地进行&#xff0c;不分配…

远程命令执行漏洞原理,以及防护绕过方式

一、背景 RCE(Remote Command /Code Execute) 远程代码执行漏洞 通过PHP代码注入、Java代码注入等方式连接程序中预留的后门或接口从而进行远程命令执行&#xff0c;达到对服务器的控制。 为什么会出现远程代码执行漏洞呢&#xff1f; Web应用有时需要调用执行一些系统命令函数…

shell 脚本语句

目录 条件语句 test 命令 比较整数数值 字符串比较 命令举 条件逻辑测试操作 组合写法 举例 双中括号 ​编辑 ( ) / { } if 语句的结构 case 语句 脚本举例 识别 yes 和 no 脚本 检查磁盘使用情况脚本 新建用户以及随机设置用户密码的脚本 补充命令 [RANDOM…

【高性能计算】CUDA,OpenCL,FPGA 加速,MPI

OpenCL OpenCL&#xff08;Open Computing Language&#xff09;是一种跨平台的GPU加速技术&#xff0c;由Khronos Group开发。OpenCL允许开发人员在不同的硬件平台上编写并行计算应用程序。 OpenCL使用C语言的子集来编写应用程序&#xff0c;并提供了一组API&#xff0c;可以…

web:[GXYCTF2019]禁止套娃

题目 打开页面显示为 没有其他信息&#xff0c;查看源代码也是空的 用dirsearch扫一下 可能是git源码泄露&#xff0c;可以用githack获取源码 python Githack.py http://5063c85b-a33d-4b6f-ae67-262231a4582e.node4.buuoj.cn:81/.git/去工具所在的目录找到index.php文件 打开…

hm商城微服务远程调用及拆分

RequiredArgsConstructor是Lombok库中的一个注解 它会自动在类中生成一个构造函数&#xff0c;这个构造函数会接收类中所有被标记为final的字段&#xff0c;并将其作为参数。这个注解可以帮助我们减少样板代码&#xff0c;例如手动编写构造函数。 eg&#xff1a; public fin…

【JavaEE】Spring的创建和使用(保姆级手把手图解)

一、创建一个Spring项目 1.1 创建一个Maven项目 1.2 添加 Spring 框架支持 在pom.xml中添加 <dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.3.RELEASE&…

数据仓库架构之详解Kappa和Lambda

目录 一、前言 二、架构详解 1 Lambda 架构 1.1 Lambda 架构组成 1.2 Lambda 特点 1.3 Lambda 架构的优点 1.4 Lambda 架构的不足 2 Kappa 架构 2.1 Kappa 架构的核心组件 2.2 Kappa 架构优点 2.3 Kappa 架构的注意事项 三、区别对比 四、选择时考虑因素 一、前言 …

vue解除数据双向绑定

let obj JSON.parse(JSON.stringify(data));例如&#xff0c;table列表中&#xff0c;点击编辑时&#xff0c;可对val进行如上操作来解除双向绑定

【冒泡排序设计】

【冒泡排序设计】 思路代码结果 思路 冒泡排序这个算法&#xff0c;对于我这样的初学者来说&#xff0c;也不是很简单&#xff01;&#xff01;&#xff01;&#xff08;没有想象的那么简单&#xff09;&#xff01;  它的核心思想是&#xff1a;两两相邻的元素进行比较&#…

源码安装Apache

一、下载Apache,源码安装Apache #下载 [rootlocalhost opt]# wget -c https://mirrors.aliyun.com/apache/httpd/httpd-2.4.58.tar.gz [rootlocalhost opt]# ls httpd-2.4.58.tar.gz [rootlocalhost opt]# tar -xf httpd-2.4.58.tar.gz [rootlocalhost opt]# ls httpd-2.4.58…

达索系统3DEXPERIENCE WORKS 2024 Fabrication新功能

当发现产品的制造环节&#xff0c;以及因产品模型本身的设计而导致制造环节存在不合理性&#xff0c;从而导致加工制造成本增加。 快速判断&#xff0c;轻松协作 在达索系统3DEXPERIENCE WORKS 2024中我们可以快速的判断产品的可制造性&#xff0c;以及快速与前端设计沟通协作…

Linux驱动开发笔记(四):设备驱动介绍、熟悉杂项设备驱动和ubuntu开发杂项设备Demo

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/134533533 红胖子网络科技博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…