go tool 用法

2024-06-16 00:48
文章标签 go 用法 tool

本文主要是介绍go tool 用法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

go version go1.12.4 linux/amd64

源码

  • run 编译并运行
  • build 编译
  • clean 清除
  • fmt 格式化
  • test 测试
  • generate 生成源文件
  • vet 静态分析

模块和包

  • mod 模块管理
  • list 包查询
  • get 下载安装包和依赖
  • install 编译包和依赖
  • fix 更新到新API

语言系统

  • version 显示版本
  • env 显示环境变量
  • doc 显示文档
  • tool 运行特定的 go 工具
  • bug 报告bug

go help : 查看 go 源码管理工具.

go help command : 查看某个工具(command)的用法, 如 go help run.

pxx 表示包

dxx 表示目录

fxx 表示文件

go run

格式

参数

例子

go run fxx.go 		 	    //编译并运行(fxx)
go run fxx.go argxxx 		//argxxx 是传给编译出来的可执行程序(dxx)的参数 
go run dxx   		        //编译并运行(dxx)
go run dxx argxxx 	        //argxxx 是传给编译出来的可执行程序(dxx)的参数

?这个命令不会产生新文件

go build

参数

  • -o 指定编译出来的可执行文件名
  • -a 重新编译相关的包
  • -p n 指定要用到的cpu核心个数,默认是系统现有的
  • -race 使能竞态检查
  • -msan 使能内存检测
  • -v 显示相关的包
  • -work 指点编译时用到的临时目录
  • -x 显示编译过程执行的操作

例子

main 包
go build fxx.go 		//当前目录下编译出fxx
go build /path/to/dxx 		//当前目录下编译出dxx

?非 main 包,编译后舍弃.什么叫舍弃?生成一些临时文件和 cache 又删了.可以加 -n 编译 main 包和非 main 包,比较发现 main 包最后多了一行类似 mv $WORK/b001/exe/a.out dxx,把 cache 里生成的可执行程序(a.out) 移到当前目录下并重命名 (dxx)

go clean

go clean 清除 go 工具和 makefile 产生的临时文件和各种 cache\

参数

  • -n 显示要执行的操作
  • -x 显示要执行的操作,并执行

例子

go clean

go fmt

格式
go fmt 格式化源码文件

参数

  • -n 显示但不执行当前操作
  • -x 显示并执行当前操作行

例子

go fmt fxx          //文件
go fmt dxx          //目录/包
go fmt dxx/...      //递归

?go fmt 调用 gofmt -l -w,了解更多请看 go doc gofmt.

go test

参数

  • -args 把之后的当成参数传给测试程序
  • -json 输出转成 json 格式
  • -c 把测试编译成可执行程序.程序名 包名.test
  • -i 安装测试依赖的包
  • -o 指定输出文件名

?go help testflag 查看更多参数

  • -bench 基准测试

  • -cover 测试覆盖分析

  • -coverprofile cover.out 输出覆盖分析文件

  • -cpuprofile cpu.out 输出cpu分析文件

  • -memprofile mem.out 输出内存分析文件

例子

go test             //测试当前包,禁止cache 
go test .           //测试 . 目录 
go test dxx/...     //递归测试 dxx 目录
go test dxx         //测试 dxx 目录
go test fxx         //测试 fxx 文件

go generate

格式
go generate //执行预先写在文档中的命令,格式 //go:generate command argument…

参数

  • -n 显示但不执行当前操作
  • -x 显示并执行当前操作

go vet

参数

  • -n 显示但不执行当前操作
  • -x 显示并执行当前操作

例子

go vet fxx  //文件的绝对路径或相对路径
go vet pkgxxx //包导入路径

go mod

格式
go mod [arguments]
参数

  • download 下载 mod 到本地缓存
  • edit 用工具或脚本编辑 go.mod
  • graph 打印 mod 依赖图
  • init 在当前目录初始化 mod
  • tidy 添加新的删除没用的 mod
  • vendor 复制依赖到 vendor 目录
  • verify 验证依赖有效
  • why 显示依赖的原因

例子

go mod init
go mod init /import/path/pkg
go mod vendor

go list

go list
go list pxx
go list …
go list pxx/…
go list -json pxx/…
gopath/to/import/pxx

go get

格式
go get /import/path/to/pxx

参数

  • -v 可视化处理过程和 bug 输出.
  • -u 通过网络更新包和依赖.默认通过网络检出缺失的包,但不会更新已经存在的包.
  • -d 只下载.
  • -t 下载后对包使用 test 工具.
  • -f 必须配合 -u 使用, 不验证下载的包.
  • -fix 下载后对包使用 fix 工具.
  • -insecure 允许通过不安全的协议( 如 HTTP )获取包.

例子

go tool

go tool                 //打印所有命令
go tool pprof           //执行 pprof 命令
go tool -n pprof        //显示但不执行 pprof 命令

go tool [-n] command [args…]

  • -n 显示但不执行 command

go doc

格式
go doc pkg/sym/field

参数

例子

go doc          //当前包
go doc Foo      //当前包符号 Foogo doc encoding/json    //encoding/json 包 
go doc json             //encoding/json 包简写go doc json.Number              //Number 文档和方法 
go doc json.Number.Int64        // Int64 方法的文档

go env

go env          // 打印 go 环境变量
go env GOPATH   // 打印 GOPATH 环境变量
go env -json    // json 格式显示 go 环境变量

go version

go version      //打印版本号

待续

这篇关于go tool 用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1065058

相关文章

Go Mongox轻松实现MongoDB的时间字段自动填充

《GoMongox轻松实现MongoDB的时间字段自动填充》这篇文章主要为大家详细介绍了Go语言如何使用mongox库,在插入和更新数据时自动填充时间字段,从而提升开发效率并减少重复代码,需要的可以... 目录前言时间字段填充规则Mongox 的安装使用 Mongox 进行插入操作使用 Mongox 进行更

Go语言利用泛型封装常见的Map操作

《Go语言利用泛型封装常见的Map操作》Go语言在1.18版本中引入了泛型,这是Go语言发展的一个重要里程碑,它极大地增强了语言的表达能力和灵活性,本文将通过泛型实现封装常见的Map操作,感... 目录什么是泛型泛型解决了什么问题Go泛型基于泛型的常见Map操作代码合集总结什么是泛型泛型是一种编程范式,允

深入解析Spring TransactionTemplate 高级用法(示例代码)

《深入解析SpringTransactionTemplate高级用法(示例代码)》TransactionTemplate是Spring框架中一个强大的工具,它允许开发者以编程方式控制事务,通过... 目录1. TransactionTemplate 的核心概念2. 核心接口和类3. TransactionT

数据库使用之union、union all、各种join的用法区别解析

《数据库使用之union、unionall、各种join的用法区别解析》:本文主要介绍SQL中的Union和UnionAll的区别,包括去重与否以及使用时的注意事项,还详细解释了Join关键字,... 目录一、Union 和Union All1、区别:2、注意点:3、具体举例二、Join关键字的区别&php

基于Go语言实现一个压测工具

《基于Go语言实现一个压测工具》这篇文章主要为大家详细介绍了基于Go语言实现一个简单的压测工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录整体架构通用数据处理模块Http请求响应数据处理Curl参数解析处理客户端模块Http客户端处理Grpc客户端处理Websocket客户端

Go中sync.Once源码的深度讲解

《Go中sync.Once源码的深度讲解》sync.Once是Go语言标准库中的一个同步原语,用于确保某个操作只执行一次,本文将从源码出发为大家详细介绍一下sync.Once的具体使用,x希望对大家有... 目录概念简单示例源码解读总结概念sync.Once是Go语言标准库中的一个同步原语,用于确保某个操

Go语言实现将中文转化为拼音功能

《Go语言实现将中文转化为拼音功能》这篇文章主要为大家详细介绍了Go语言中如何实现将中文转化为拼音功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 有这么一个需求:新用户入职 创建一系列账号比较麻烦,打算通过接口传入姓名进行初始化。想把姓名转化成拼音。因为有些账号即需要中文也需要英

Go语言使用Buffer实现高性能处理字节和字符

《Go语言使用Buffer实现高性能处理字节和字符》在Go中,bytes.Buffer是一个非常高效的类型,用于处理字节数据的读写操作,本文将详细介绍一下如何使用Buffer实现高性能处理字节和... 目录1. bytes.Buffer 的基本用法1.1. 创建和初始化 Buffer1.2. 使用 Writ

Go Gorm 示例详解

《GoGorm示例详解》Gorm是一款高性能的GolangORM库,便于开发人员提高效率,本文介绍了Gorm的基本概念、数据库连接、基本操作(创建表、新增记录、查询记录、修改记录、删除记录)等,本... 目录1. 概念2. 数据库连接2.1 安装依赖2.2 连接数据库3. 数据库基本操作3.1 创建表(表关

oracle中exists和not exists用法举例详解

《oracle中exists和notexists用法举例详解》:本文主要介绍oracle中exists和notexists用法的相关资料,EXISTS用于检测子查询是否返回任何行,而NOTE... 目录基本概念:举例语法pub_name总结 exists (sql 返回结果集为真)not exists (s