GoLang 命令

查看可用命令

直接在终端中输入 go help 即可显示所有的 go 命令以及相应命令功能简介,主要有下面这些:

build: 编译包和依赖

clean: 移除对象文件

doc: 显示包或者符号的文档

env: 打印go的环境信息

bug: 启动错误报告

fix: 运行go tool fix

fmt: 运行gofmt进行格式化

generate: 从processing source生成go文件

get: 下载并安装包和依赖

install: 编译并安装包和依赖

list: 列出包

run: 编译并运行go程序

test: 运行测试

tool: 运行go提供的工具

version: 显示go的版本

vet: 运行go tool vet

命令的使用方式为: go command [args], 除此之外,可以使用go help <command> 来显示指定命令的更多帮助信息。

在运行 go help 时,不仅仅打印了这些命令的基本信息,还给出了一些概念的帮助信息:

c: Go和c的相互调用

buildmode: 构建模式的描述

filetype: 文件类型

gopath: GOPATH环境变量

environment: 环境变量

importpath: 导入路径语法

packages: 包列表的描述

testflag: 测试符号描述

testfunc: 测试函数描述

同样使用 go help <topic>来查看这些概念的的信息。

build 和 run 命令

就像其他静态类型语言一样,要执行 go 程序,需要先编译,然后在执行产生的可执行文件。go build 命令就是用来编译 go程序生成可执行文件的。但并不是所有的 go 程序都可以编译生成可执行文件的, 要生成可执行文件,go程序需要满足两个条件:

该go程序需要属于main包

在main包中必须还得包含main函数

也就是说go程序的入口就是 main.main, 即main包下的main函数, 例子(hello.go):

package main import "fmt" func main() { fmt.Println("Hello World!") }

编译hello.go,然后运行可执行程序:

$ go run hello.go # 将会生成可执行文件 hello $ ./hello # 运行可执行文件 Hello World!

go build+文件列表:

go build file1.go file2.go……

可编译同目录的多个源码文件,go build 会编译这些源码,输出可执行文件

go build编译时的附加参数

go build 还有一些附加参数,可以显示更多的编译信息和更多的操作,详见下表所示。

附加参数 备 注
-v   编译时显示包名  
-p n   开启并发编译,默认情况下该值为 CPU 逻辑核数  
-a   强制重新构建  
-n   打印编译时会用到的所有命令,但不真正执行  
-x   打印编译时会用到的所有命令  
-race   开启竞态检测  

上面就是 go build 的基本用法,另外如果使用 go build 编译的不是一个可执行程序,而是一个包,那么将不会生成可执行文件。

而 go run 命令可以将上面两步并为一步执行(不会产生中间文件)。

$ go run hello.go Hello World!

注意:go run 不会在运行目录下生成任何文件,可执行文件被放在临时文件中被执行,工作目录被设置为当前目录。在 go run 的后部可以添加参数,这部分参数会作为代码可以接受的命令行输入提供给程序。

go run 不能使用“go run+包”的方式进行编译,如需快速编译运行包,需要使用如下步骤来代替:

使用 go build 生成可执行文件。

运行可执行文件。

clent命令

这个命令是用来移除当前源码包和关联源码包里面编译生成的文件。这些文件包括

_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 产生

我一般都是利用这个命令清除编译文件,然后github递交源码,在本机测试的时候这些编译文件都是和系统相关的,但是对于源码管理来说没必要。

$ go clean -i -n cd /Users/astaxie/develop/gopath/src/mathapp rm -f mathapp mathapp.exe mathapp.test mathapp.test.exe app app.exe rm -f /Users/astaxie/develop/gopath/bin/mathapp 附加参数 备注
-i   清除关联的安装的包和可运行文件,也就是通过go install安装的文件  
-n   把需要执行的清除命令打印出来,但是不执行,这样就可以很容易的知道底层是如何运行的  
-r   循环的清除在import中引入的包  
-x   打印出来执行的详细命令,其实就是-n打印的执行版本  
fmt 和 doc 命令

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpyspj.html