Go标准命令


1.bug 在浏览器中打开github的golang项目,可以提交bug报告。

$ go bug

2.build 编译项目和文件

  • 10种操作系统:darwin,freebsd,linux,windows,android,dragonfly,netbsd,openbsd,plan9,solaris
  • 9种处理器架构:arm,arm64,386,amd64,ppc64,ppc64le,mips64,mips64le,s390x
# 交叉编译
$ CGO_ENABLED=0 GOOS=darwin  GOARCH=amd64 go build -o demo.darwin.amd64
$ CGO_ENABLED=0 GOOS=linux   GOARCH=amd64 go build -o demo.linux.amd64

3.clean 清理生成的可执行文件和包(不支持自定义的编译文件名)



-i 清除关联的安装的包和可运行文件,也就是通过go install安装的文件   
-n 把需要执行的清除命令打印出来,但是不执行,这样就可以很容易的知道底层是如何运行的 
-r 循环的清除在import中引入的包 
-x 打印出来执行的详细命令,其实就是-n打印的执行版本

$ go clean -x    #查看会执行什么命令

4.doc 查看包结构源码注释。跟IDE中转到声明等效

$ go doc 包名.成员名    #成员可以是常量、变量、结构体、函数、方法...
$ go doc builtin             #查看内置包builtin的包结构
$ go doc http.Request        #http包的Request结构体
$ go doc repo.GetOrderbyId   #查看自定义成员信息

5.env 打印Go语言的环境信息

名称说明
CGO_ENABLED指明cgo工具是否可用的标识
GOARCH程序构建环境的目标计算架构
GOBIN存放可执行文件的目录的绝对路径
GOCHAR程序构建环境的目标计算架构的单字符标识
GOEXE可执行文件的后缀
GOHOSTARCH程序运行环境的目标计算架构
GOOS程序构建环境的目标操作系统
GOHOSTOS程序运行环境的目标操作系统
GOPATH工作区目录的绝对路径
GORACE用于数据竞争检测的相关选项
GOROOTGo语言的安装目录的绝对路径
GOTOOLDIRGo工具目录的绝对路径

6.fix 将指定代码包的旧代码修正为新代码。查看参考文章


7.fmt 格式化源码文件 查看参考文章

$ go fmt main.go

8.generate 扫描源码文件,找出"//go:generate"的特殊注释1,提取并执行该注释后面的命令。查看参考文章

有几点需要注意:
    该特殊注释必须在.go源码文件中。
    每个源码文件可以包含多个generate特殊注释时。
    显示运行go generate命令时,才会执行特殊注释后面的命令。
    命令串行执行的,如果出错,就终止后面的执行。
    特殊注释必须以"//go:generate"开头,双斜线后面没有空格。
应用
在有些场景下,我们会使用go generate:
    yacc:从 .y 文件生成 .go 文件。
    protobufs:从 protocol buffer 定义文件(.proto)生成 .pb.go 文件。
    Unicode:从 UnicodeData.txt 生成 Unicode 表。
    HTML:将 HTML 文件嵌入到 go 源码 。
    bindata:将形如 JPEG 这样的文件转成 go 代码中的字节数组。
再比如:
    string方法:为类似枚举常量这样的类型生成String()方法。
    宏:为既定的泛型包生成特定的实现,比如用于ints的sort.Ints。

9.getdownload and install packages and dependencies

-d 只下载不安装
-f 只有在你包含了-u参数的时候才有效,不让-u去验证import中的每一个都已经获取了,这对于本地fork的包特别有用
-fix 在获取源码之后先运行fix,然后再去做其他的事情
-t 同时也下载需要为运行测试所需要的包
-u 强制使用网络去更新包和它的依赖包
-v 显示执行的命令
$ go get github.com/garyburd/redigo/redis

10.install 编译安装

  • 第一步:生成结果文件(可执行文件或者.a包)。
  • 第二步:把编译好的结果移到 $GOPATH/pkg 或者 $GOPATH/bin。

11.list 查看包路径、名称、导入项、代码文件,测试文件,依赖项等信息。

$ go list -json net/http

12.mod 模块管理。查看参考文章


13.run 运行GO程序

-a:强制编译相关代码,无论是否编译过 
-v:列出被编译的代码包的名称 
-a -v:列出所有被编译的代码包的名称 
-p n:并行编译,其中n为并行的数量 如-p 2 
-n:打印编译过程中所需运行的命令,但并不执行这些命令 
-x:打印编译过程中所需运行的命令,并执行这些命令 
-work:显示编译时创建的临时工作目录的路径,并且不删除这个临时工作目录 
# -n 显示执行过程;-p:
$ go run showds.go -p ~/golang/goc2p

14.test 单元测试

-bench regexp 执行相应的benchmarks,例如 -bench=.
-cover 开启测试覆盖率
-run regexp 只运行regexp匹配的函数,例如 -run=Array 那么就执行包含有Array开头的函数
-v 显示测试的详细命令
$ go test demo_test.go demo.go           # 单元测试
$ go test --cover demo_test.go demo.go   # 单元测试覆盖率
$ go test -bench=. demo_test.go demo.go  # 性能测试

15.tool 运行指定的go工具, 如:go tool pprof


16.version 打印golang版本信息

17.vet 用于检查静态错误,即编译不易发现等错误。查看参考文章

$ go tool vet <directory|files>
func main() {
   // 1.可疑代码
   var i = 0
   fmt.Println(i != 0 || i != 1)
   fmt.Println(i == 0 && i == 1)

    2.格式化参数错误
   fmt.Printf("%d\n", "hello")

   // 3.除零错误
   fmt.Println(2 / 0)

   // 4. 读不到的代码
   goto OVER
   fmt.Println("hello")
OVER:

   // 5.竞态代码
   words := []string{"foo", "bar", "baz"}
   for _, word := range words {
      go func() {
         fmt.Println(word)
      }()
   }
}

18.godoc 用于展示指定代码包的文档

$ godoc fmt
$ godoc fmt Printf
$ godoc fmt Printf Println
$ godoc -src fmt Printf
$ godoc cmd/go
$ godoc -http=:9999  #启动$GOROOT\doc下的帮助站点

19.help 帮助命令

$ go help modules
$ go help vet

参考:
https://github.com/hyper0x/go_command_tutorial


  1. Go的注解只是特殊的注释约定,如 Deprecated表示代码已不被推荐使用;TODO可以快速定位到代办项; ↩︎

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值