go语言常用命令详解,建议收藏

667 阅读4分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第11天,点击查看活动详情

Go语言自带有一套完整的命令操作工具,可以通过在命令行中执行go来查看它们,这篇文章主要整理一下go语言中常用的命令都有哪些,具体功能和用法是什么?需要的朋友可以参考以下内容,希望对大家有帮助。

go help

直接在终端中输入 go help 即可显示所有的 go 命令以及相应命令功能简介

The commands are:

        bug         start a bug report
        build       compile packages and dependencies
        clean       remove object files and cached files
        doc         show documentation for package or symbol
        env         print Go environment information
        fix         update packages to use new APIs
        fmt         gofmt (reformat) package sources
        generate    generate Go files by processing source
        get         add dependencies to current module and install them
        install     compile and install packages and dependencies
        list        list packages or modules
        mod         module maintenance
        run         compile and run Go program
        test        test packages
        tool        run specified go tool
        version     print Go version
        vet         report likely mistakes in packages

go build

go build命令主要是用于测试编译。在包的编译过程中,若有必要,会同时编译与之相关联的包,如果是普通包,当你执行go' build命令后,不会产生任何文件,如果是mian包,会在当前目录下生成一个可执行文件,如果需要在$GOPATH/bin下生成相应的exe文件,需要执行go install或者使用go build -o 路径/包名.exe。

如果某个文件夹下有多个文件,go build命令默认会编译当前目录下的所有go文件;而你只想编译其中一个文件,可以在go build之后加上文件名,例如go build 文件名.go。

go build 会忽略目录下以"_"或"."开头的文件。

go clean

go clean是用来移除当前源码包里面编译生成的文件和目录,go命令会在临时目录中构建对象,因此go clean主要关注其他工具或者手动调用build留下的对象文件。主要文件包括:

_obj/ 旧的object目录,由Makefiles遗留

_test/ 旧的test目录,由Makefiles遗留

_testmain.go 旧的gotest文件,由Makefiles遗留

test.out 旧的test记录,由Makefiles遗留

build.out 旧的test记录,由Makefiles遗留

*.[568ao] object文件,由Makefiles遗留

DIR(.exe) 由 go build 产生

DIR.test(.exe) 由 go test -c 产生

MAINFILE(.exe) 由 go build MAINFILE.go产生

*.so 由 SWIG 产生

在本机测试的时候这些编译文件都是和系统相关的,但是对于源码来说没有必要; 一般都是用这个命令清除编译文件,然后提交到git仓库。

常用参数介绍:

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

go fmt

由于每个人写代码的习惯和风格不同,所以代码会比较乱,这将为人们在阅读别人代码时添加不必要的负担,所以go强制了代码格式,为了减少浪费在排版的上的时间,go工具集提供了一个go fmt命令,他可以格式化写好的代码文件。

使用go fmt命令,其实是调用了gofmt,而且需要参数-w,否则格式化不会写入文件,所以go fmt是gofmt的上层一个包装的命令。

gofmt常用参数介绍:

-l 显示那些需要格式化的文件
-w 把格式化后的内容直接写到文件中,而不是作为结果打印到标准输出。
-r 添加形如“a[b:len(a)] -> a[b:]”的重写规则,方便做批量替换
-s 简化文件中的代码
-d 显示格式化前后的diff而不是写入文件,默认是false。
-e 打印所有的语法错误到标准输出,
-cpuprofile 支持调试模式,写入相应的cpufile到指定的文件。

go get

这个命令是用来动态获取远程代码包的,这个命令在内部实际上是分成了两部操作,第一步是下载源码包,第二步是执行go install。

常用参数介绍

-d 只下载不安装
-f 只有在包含了-u参数的时候才有效,不让-u去验证import中的每一个都已经获取了,这对于本地的fork的包特别有用
-fix 在获取源码之后先运行fix,然后再去做其他事情。
-u 强制使用网络去更新包和它的依赖包。
-v 显示执行的命令。

自Go1.16起,不推荐通过go get 来安装包(主要是说安装可执行文件),也就是说go get应该只是用来下载包,而且将来版本可能会给改命令始终加上-d标志。因此还需要手动执行安装。

go install

go install会将包编译成.a文件并安装到GOPATH/pkg/GOPATH/pkg/GOOS_GOARCH下,如果是main包,会编译并生成可执行文件安装到GOARCH下,如果是main包,会编译并生成可执行文件安装到GOPATH/bin目录下,如果设置了GOBIN,则会安装到GOBIN,则会安装到GOBIN下。

这个命令在内部实际上分成了两步操作,第一步是生成可执行文件或者.a包,第二步会把编译好的结果移到GOPATH/pkg或者GOPATH/pkg或者GOPATH/bin。

从 Go 1.16 起,go install 可以接受带有版本后缀的参数(例如 go install example.com/cmd@v1.0.0)。

注意:虽然 go install 一个普通的第三方包(不过必须带上版本后缀)也会下载对应的包,但不会修改 go.mod,这和 go get 是不同的。

go mod

包依赖管理工具集。

go mod 命令:

  • download:下载模块到本地缓存;
  • edit:从工具或脚本编辑go.mod;
  • graph:打印模块需求表;
  • init:在当前目录初始化一个新的模块
  • tidy:添加丢失的模块并删除未使用的模块;
  • vendor:制作依赖项的副本;
  • verify:验证依赖项是否有预期内容;
  • why:解释模块或包为什么需要;

go doc

go doc 命令其实就是一个很强大的文档工具。

如何查看相应package的文档呢? 例如builtin包,那么执行go doc builtin;如果是http包,那么执行go doc net/http;查看某一个包里面的函数,那么执行godoc fmt Printf;也可以查看相应的代码,执行godoc -src fmt Printf;

go test

执行这个命令,会自动读取源码目录下面名为*_test.go的文件,生成并运行测试用的可执行文件。

默认的情况下,不需要任何的参数,它会自动把源码包下面所有test文件测试完毕,当然也可以带上参数,详情请参考go help testflag

常用参数介绍:

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

go tool

go tool下面下载聚集了很多命令,这里只介绍两个,fix和vet

  • go tool fix . 用来修复以前老版本的代码到新版本,例如go1之前老版本的代码转化到go1,例如API的变化
  • go tool vet directory|files 用来分析当前目录的代码是否都是正确的代码,例如是不是调用fmt.Printf里面的参数不正确,例如函数里面提前return了然后出现了无用代码之类的。

其它命令

go fix 用来修复以前老版本的代码到新版本,例如go1之前老版本的代码转化到go1

go version 查看go当前的版本

go env 查看当前go的环境变量

go list 列出当前全部安装的package

go run 编译并运行Go程序

\

以上就是关于go语言中常用的命令有什么,具体功能是什么的介绍啦,需要的朋友可以参考上述内容,希望对大家有帮助。