golang 标准命令

栏目: IT技术 · 发布时间: 6年前

内容简介:go build: 用于编译指定的源码文件或者代码包以及它们的依赖包,默认不会编译目标代码包所依赖的那些代码包。当然如果依赖的代码包的归档文件不存在,后者源码文件有了变化,那它还是会被编译。go buildgo build 既不能编译包含多个命令源码文件的代码包,也不能同时编译多个命令源码文件。因为如果把多个命令源码文件作为一个整体看待,那么每个文件中的main函数都属于重名函数,在编译时会抛出重复定义错误。

go源码文件:

  1. 命令源码文件:总是作为可执行的程序的入口

  2. 库源码文件:一般用于集中放置各种待被使用的程序实体(全局常量、全局变量、接口、结构体、函数等等)

go build

go build: 用于编译指定的源码文件或者代码包以及它们的依赖包,默认不会编译目标代码包所依赖的那些代码包。当然如果依赖的代码包的归档文件不存在,后者源码文件有了变化,那它还是会被编译。

go build

  1. 在编译只包含库源码文件的代码包时,只会检查性的编译,不会输出任何结果文件

  2. 在编译命令源码文件时,生成可执行包

go build 既不能编译包含多个命令源码文件的代码包,也不能同时编译多个命令源码文件。因为如果把多个命令源码文件作为一个整体看待,那么每个文件中的main函数都属于重名函数,在编译时会抛出重复定义错误。

go build 常用标记:

  1. -a: 强行对所有设计到的代码包进行重新构建,不但目标代码包总会被编译,依赖的代码包也会被编译,即使依赖的是标准库中的代码包也是如此;
  2. -n: 打印编译期间所用到的其他命令,但是并不真正执行它们
  3. -p n: 制定编译过程中执行各任务的并行数量。
  4. -race: 开启竞态条件的检测。
  5. -v: 打印出那些被编译的代码包的名字
  6. -work: 打印出编译时生成的临时工作目录的路径,并在编译结束时保留。
  7. -x: 打印编译期间所用到的其他命令。可以看到具体执行了那些操作

go install

go install: 用于编译并安装指定的代码包及它们的依赖包。当指定的代码包的依赖包还没有被编译和安装时,该命令会先去处理依赖包。

go install 比 go build 多做一件事,安装编译后的结果文件到指定目录。

go install 安装代码包:

  1. 如果为库源码文件,会把编译后的结果文件保存在源码文件所在工作目录pkg下。对于仅包含库源码文件的代码包来说,这个结果文件就是对应的代码包归档文件,也叫静态链接库,以.a结尾

  2. 如果为命令源码文件,将生成的二进制文件放到当前目录或GOBIN目录下

go get

go get: 自动从主流公用代码仓库下载代码包,并把它们安装到环境变量GOPATH包含的第一个工作区的相应目录中,如果存在环境变量GOBIN,那么仅包含命令源码文件的代码包会被安装到GOBIN指向的那个目录

go get 标记:

  1. -d: 让命令只执行下载动作,而不执行安装动作
  2. -f: 仅在使用-u标记时才有效。该标记会让命令程序忽略对已下载代码包的导入路径的检查。
  3. -fix: 让命令程序在下载代码包之后执行修正动作,而后进行编译和安装
  4. -insecure: 允许通过非安全的网络协议下载和安装代码包。eg: http
  5. -t: 同时下载测试所需代码包
  6. -u: 下载并安装代码包,不论工作区中是否已存在它们。

go get突出特性智能下载;

  1. 在使用它检出或更新代码包之后,它会寻找与本地已安装 go 语言的版本相对应的标签或分支。如:本地安装Go语言版本1.x,那么go get命令会在该代码包的远程仓库中寻找名为“go1”的标签或者分支。如果找到,则将本地代码包的版本切换到此标签或者分支。如果没有找到,则将本地代码包的版本切换到主干的最新版本。
  2. go get通过git fetch将所有远程分支更新到本地,而后用git show-ref命令列出本地与远程仓库中记录的代码包的所有分支和标签。
  3. 最后,当确定没有名为"go1",go get使用git checkout origin/master命令将代码包版本切换到主干最新版本。

go clean

go clean: 删除掉执行其他命令时产生的一些文件和目录

包括:

  1. 使用go build 命令在当前包下生成的与包名同名或者与go源码文件同名的可执行文件

  2. 执行go test命令并加入-c标记时在当前代码包下生成的以包名为后缀的“.test”文件

  3. 如果执行go clean命令时带有-i,则会同时删除安装当前代码包时所产生的结果文件。如果当前代码包中只包含库源码文件,则结果文件指的就是在工作区的pkg目录的相应目录下的归档文件。如果当前代码包中只包含一个命令源码文件,则结果文件指的就是工作区的bin目录下的可执行文件。

  4. 还有一些目录和文件在编译Go或C源码文件时留在相应目录中的。

  5. 如果执行go clean命令时带有-r,则包括当前代码包的所有依赖包的上述目录和文件

go doc

go doc:可以打印赋与Go语言程序实体(程序实体:变量、常量、函数、结构体以及接口)的文档。

go doc 标识符:

  1. -c: 加入此标识符会使go doc命令区分参数重字母的大小写。
  2. -cmd: 加入此标识符,会使go doc命令同时打印出main包中的可导出的程序实体的文档。默认情况下,这部分文档不会被打印出来的
  3. -u: 加入此标记后,会是go doc命令同时打印出不可导出的程序实体的文档。默认情况下,这部分文档是不会被打印出来的

godoc

godoc: 一个很强大的工具,用于展示指定代码包的文档。

>> godoc fmt
PACKAGE DOCUMENTATION

package fmt
import "fmt"

    Package fmt implements formatted I/O with functions analogous to C's
    printf and scanf. The format 'verbs' are derived from C's but are
    simpler.
    Printing
    The verbs:
    General:
    ........
>> godoc -src fmt   // 查看文档和源码
>> godoc -http=:6060      // 启动端口6060的文档web服务器
复制代码

go run

go run 编译并运行命令源码文件。只接受一个go源码文件以及若干个库源码文件作为参数,且不接受代码包以及不能接受测试源码文件。也不允许多个命令源码文件作为参数,即使它们在同一个代码包中也是如此。在执行时会检查源码文件的类型。如果包含多个或者没有源码文件,那么go run命令只会打印错误提示信息并退出,而不会继续运行

通过检查之后,go run命令会将编译参数中的命令源码文件,并把编译后的可执行文件存放到临时目录中。

go run 命令标识符

-n: 打印相关命令而不实际执行。

go test

go test: 用于对go语言编写的程序进行测试。这种测试一代码包为单位。

go test 命令标记符:

  1. -c: 生成用于运行测试的可执行文件,但不执行它。
  2. -i: 安装/重新安装运行测试所需的依赖包,但不编译和运行测试代码
  3. -o: 执行用于运行测试的可执行文件。追加该标记不会影响测试代码的运行,除非同时追加标记 -c 或 -i

go list

go list: 列出指定的代码包的信息。

go list 标识符:

  1. -e: 以容错模式加载和分析指定的代码包。命令模式如果加载或分析过程中遇到错误指挥在内部记录一下,而不会直接把错误信息打印出来
  2. -json: 把代码包的结构体实力用json样式打印出来
>> go list -e net
net
>> go list -json net
{
	"Dir": "/Users/wan/go/src/net",
	"ImportPath": "net",
	"Name": "net",
	"Doc": "Package net provides a portable interface for network I/O, including TCP/IP, UDP, domain name resolution, and Unix domain sockets.",
	"Target": "/Users/wan/go/pkg/darwin_amd64/net.a",
	"Root": "/Users/wan/go",
	"Match": [
		"net"
	],
    ......
}复制代码

go vet 和 go tool vet

vet: 代码静态检查发现可能的bug或可疑的构造;是go tool套件的一部分,和go编译器一起发布;在编译阶段和运行阶段发现bug;

go vet: 只在一个单独的包内可用,不能使用flag选项(来激活指定的检测)

go tool vet: 可用于文件和目录。目录递归遍历来找到包。

>> go vet file.go
>> go tool vet dir/file or file.go复制代码

可通过 go tool vet --help  查询文档


以上所述就是小编给大家介绍的《golang 标准命令》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Art and Science of CSS

The Art and Science of CSS

Jonathan Snooks、Steve Smith、Jina Bolton、Cameron Adams、David Johnson / SitePoint / March 9, 2007 / $39.95

Want to take your CSS designs to the next level? will show you how to create dozens of CSS-based Website components. You'll discover how to: # Format calendars, menus and table of contents usin......一起来看看 《The Art and Science of CSS》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具