Go 工具

概念 : go 工具将不同种类的工具集合并未一个命名集。

  • 它是一个包管理器,可以查询包的作者,计算它们之间的依赖,从远程版本控制系统下载它们。
  • 它是一个构建系统,可计算文件依赖,调用编译器,汇编器,和链接器,尽管它没有标准的UNIX make命令完备。
  • 它还是一个测试驱动程序。

go help //查询go工具的命令集

GO环境变量

go env //输出与工具链相关的已经设置有效值的环境变量及其所设置的值。

GOPATH

表示工作空间的根,当需要切换不同工作空间时,更新GOPTH变量的值即可。

export GOPATH=$HOME/gobook

GOPATH有三个子目录:
src子目录包含源文件
pkg子目录是构建工具存储编译后的包的位置
bin子目录放置可执行程序

GOROOT

指定go发行的根目录,提供所有标准库的包,结构类似与GOPATH,例如:fmt包的源代码放在$GOROOT/src/fmt下面,用户无需设置GOROOT。

GOOS

指定目标操作系统,例如:android,linux,darwin,windows

GOARCH

指定目标处理器架构,比如:amd64,386,arm。

包的下载go get

go get 命令可以下载单一的包,也可以使用 ... 符号来下载子树或仓库。
支持多个流行的代码托管站点,如Github,Bitbucket,Launchpad,并且可以向版本控制系统发出合适的请求。
对于不知名的网站,也许需要指出导入路径使用的是哪种版本的控制协议,比如Git,Mercurial。执行go help importpath来获取更多的细节。
go get创建的目录是远程仓库的真是客户端,而不仅仅是文件的副本,这样可以使用版本控制命令查看本地编辑的查一或者更新到不同的版本。
注意:包导入路径中的明显的域名不同于Git服务器的实际域名。包可以在其导入路径中使用兹定于域名。它里面重定向go工具到实际托管地址的Git仓库。
go get -u 命令通常获得每个包的最新版本,生产环境不推荐使用。
通常是加一层vendor目录,构建一个关于所有必须依赖的本地副本,然后非常小心的更新这个副本。
go help gopath 可以查看vendor目录的详细信息。

包的构建

go build 命令构建所有需要的包以及它们所有的依赖性,然后丢弃除了最终可执行程序之外的所有编译后的代码。
go install 跟 go build 非常相似,区别是它会保存每一个包的编译代码和命令,而不是把它们丢弃。
因为编译包根据操作系统平台和CPU体系不同而不同,所以go install 将保存它们的目录命名为于GOOS和GOARCH变量的值相关。
例如,为了处理底层的可移植问题,或为重要的例程提供优化版本,有一些包需要为特定的平台或者处理器编译不同版本的代码。如果一个文件名包含操作系统或处理器体系结构名字,go工具智慧在构建指定规格的目标文件的时候进行编译。叫做构建标签的特殊注释,提供更细粒度的控制。例如,一个文件包含下面注释:

+build linux darwin

注释在包的声明之前,go build 只会在构建Linux 或 Mac OS X系统应用时编译。
下面的指任何时候都不要编译:

+build ignore

更多细节可以

go doc go/build

包的注释

go doc //输出在命令行上指定内容的声明,整个文档注释,也许是一个包,也许是一个包成员,也需要是一个方法。

go doc time
go doc time.Since
godoc time.Duration.Seconds

在https://golang.org/pkg中提供来数千个可搜索的开源包索引

如果想浏览自己的包,你可以在你的工作空间中运行一个godoc实例,在执行下面的命令后,在浏览器中访问http://localhost:8000/pkg

godoc -http :8000
//加上 -analysis=type 和 analysis=pointer标记使文档内容丰富,同时提供源代码高级静态分析结果。

包的查询

go list ...
用来枚举go 工作空间的所有包.
go list gopl.io/ch3/...
列举指定子树的所有包
go list ...xml...
列举一个具体的主题,包含xml的包

你可能感兴趣的:(Go 工具)