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

news2024/11/15 21:22:41

文章目录

      • 前言
      • 常用命令
        • 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.coloradmin.cn/o/1236575.html

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

相关文章

支付宝生僻字选择器

本文的数据来源于支付宝网页版本生僻字选择器。 let rareWords[{spell: "a",words: ["奡", "靉", "叆"]}, {spell: "b",words: ["仌", "昺", "竝", "霦", "犇", "愊…

mysql底层是如何存放数据的

总览 首先总的来说&#xff0c;分为四个层级&#xff0c;行页区段。行就是数据库里的一行数据。 但一次从磁盘读进内存的数据量是一页&#xff08;页是读写的单位&#xff0c;默认16KB一页&#xff09;&#xff0c;页分很多种类&#xff0c;例如数据页、溢出页、undo日志页。 …

Rust语言精讲:数据类型全解析

大家好&#xff01;我是lincyang。 今天&#xff0c;我们将深入探讨Rust语言中的数据类型&#xff0c;这是理解和掌握Rust的基础。 Rust语言数据类型概览 Rust是静态类型语言&#xff0c;所有变量类型在编译时确定。Rust的数据类型分为两类&#xff1a;标量类型和复合类型。…

909-2014-T3

文章目录 1.原题2.算法思想3.关键代码4.完整代码5.运行结果 1.原题 有n个顶点的无向图&#xff0c;使用邻接矩阵作为存储结构。为减少存储空间&#xff0c;使用数组按照行主映射方式仅保存下三角矩阵。请给出映射公式&#xff0c;并编写算法计算给定顶点的度。叙述算法思想并用…

基于ubuntu20.04安装ros系统搭配使用工业相机

基于ubuntu20.04安装ros系统搭配使用工业相机 1. ROS系统安装部署1.1更新镜像源1.1.1 备份源文件1.1.2 更新阿里源1.1.3 更新软件源 1.2 ros系统安装1.2.1 添加ros软件源1.2.2 添加秘钥1.2.3 更新软件源1.2.4 配置及更换最佳软件源1.2.5 ROS安装1.2.6 初始化rosdep1.2.7 设置环…

【Hello Go】Go语言文本文件处理

文本文件处理 字符串处理字符串操作ContainsJoinindexrepeatReplaceSplitTrimFields 字符串转换AppendFormatParse 正则表达式Json处理编码Json通过结构体生产Json通过map生产json 解码Json解析到结构体解析到interface 文件操作相关api介绍建立和打开文件关闭文件写文件读文件…

基于Apache部署虚拟主机网站

文章目录 Apache释义Apache配置关闭防火墙和selinux 更改默认页内容更改默认页存放位置个人用户主页功能基于口令登录网站虚拟主机功能基于ip地址相同ip不同域名相同ip不同端口 学习本章完成目标 1.httpd服务程序的基本部署。 2.个人用户主页功能和口令加密认证方式的实现。 3.…

Linux02 VIM编辑器

Linux02 VIM编辑器 基本上 vi/vim 共分为三种模式&#xff0c; 分别是命令模式&#xff08;Command mode&#xff09;&#xff0c;输入模式&#xff08;Insert mode&#xff09;和底线命令模式&#xff08;Last line mode&#xff09;。 三种状态进行切换 插入模式&#xff1a…

【机器学习】039_合理初始化

一、稳定训练 目标&#xff1a;使梯度值在更合理的范围内 常见方法如下&#xff1a; 将乘法变为加法 ResNet&#xff1a;当层数较多时&#xff0c;会加入一些加法进去 LSTM&#xff1a;如果时序序列较长时&#xff0c;把一些对时序的乘法做加法 归一化 梯度归一化&…

Java(五)(Object类,克隆,Objects类,包装类,StringBuilder,StringJoiner,BigDecimal)

目录 Object类 Object类的常见方法: 克隆 浅克隆 深克隆 Objects类 包装类 StringBuilder StringJoiner BigDecimal Object类 Object类是java中的祖宗类,因此,Java中所有的类的对象都可以直接使用object类提供的一些方法 Object类的常见方法: public String toStrin…

Redis-Redis持久化,主从哨兵架构详解

Redis持久化 RDB快照&#xff08;snapshot&#xff09; 在默认情况下&#xff0c; Redis 将内存数据库快照保存在名字为 dump.rdb 的二进制文件中。 你可以对 Redis 进行设置&#xff0c; 让它在“ N 秒内数据集至少有 M 个改动”这一条件被满足时&#xff0c; 自动保存一次数…

Mac- Iterm 2 (替换mac terminal 终端的下一代终端工具)

1.应用场景 主要用于macOS中作为终端工具使用, 执行终端命令, Iterm 2 (替换mac terminal 终端的下一代终端工具) 2.学习/操作 1.文档阅读 chatgpt & 其他资料 2.整理输出 2.1 是什么 Iterm 2 (替换mac terminal 终端的下一代终端工具) 2.2 为什么需要「应用场景」 macOS…

自定义类型之结构体

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”。…

操作系统 应用题 例题+参考答案(考研真题)

1.&#xff08;考研真题&#xff09;一个多道批处理系统中仅有P1和P2两个作业&#xff0c;P2比P1晚5ms到达&#xff0c;它们的计算和I/O操作顺序如下。 P1&#xff1a;计算60ms&#xff0c;I/O 80ms&#xff0c;计算20ms。 P2&#xff1a;计算120ms&#xff0c;I/O 40ms&…

会声会影2024出来了吗?会声会影2023怎么使用?

会声会影20247中文旗舰版 Corel VideoStudio 是一款功能强大的视频编辑软件&#xff0c;可以帮助用户创建高质量的视频作品。它提供了一系列完善的编辑功能&#xff0c;包括视频编辑、音频编辑、调色、特效、字幕、标题等。它还支持多种视频格式&#xff0c;可以将视频转换为多…

算法通关村第十二关-青铜挑战字符串

大家好我是苏麟 , 今天带来字符串专题 . 转换成小写字母 描述 : 给你一个字符串 s &#xff0c;将该字符串中的大写字母转换成相同的小写字母&#xff0c;返回新的字符串。 题目 : LeetCode 709.转换成小写字母 : 709. 转换成小写字母 分析 : 这个题可以先遍历整个字符串…

django+drf+vue 简单系统搭建 (4) 用户权限

权限控制是web中的重要组成部分。与以往的博客系统不同&#xff0c;本次工具页面仅支持注册用户。 每个注册用户都能访问到工具页面&#xff0c;并且提交自己的task来选择具体的工具来处理自己提交的文件。每个注册用户都只能访问到自己提交的task&#xff0c;而管理员则可以查…

uni-app:实现request请求的递归(设置request请求的访问次数),并且调用自定义方法给出返回值

一、效果展示 失败效果 成功效果 二、写入后端请求部分 分析 ①自定义一个模块common.js主要用于封装所有的请求函数 ②核心代码 function requestWithRetry(cmd, username, password, retryCount) {return new Promise((resolve, reject) > {uni.request({url: ip sys…

智能座舱架构与芯片- (13) 软件篇 下

四、面向服务的智能座舱软件架构 4.1 面向信号的软件架构 随着汽车电子电气架构向中央计算-域控制器的方向演进&#xff0c;甚至向车云一体化的方向迈进&#xff0c;适用于汽车的软件平台也需要进行相应的进化。 在传统的观念中&#xff0c;座舱域即娱乐域&#xff0c;座舱软…

【网络通信】浅析UDP与TCP协议的奥秘

在现代互联网中&#xff0c;UDP&#xff08;用户数据报协议&#xff09;和TCP&#xff08;传输控制协议&#xff09;是两种最常用的传输协议&#xff0c;它们被广泛应用于网络数据传输。尽管这两种协议都可以用来在网络上传输数据&#xff0c;但它们在设计目标、特点和适用场景…