本篇主要介绍go的生态。包括安装,ide,go命令三部分。随着作者的持续学习,内容可能会有所更新。
安装
截止到本文撰写,go的版本更新到了1.7.3.通常来说,安装go只需要到https://golang.org/dl/ 官网去下载对应的包安装即可。mac用户也可以通过homebrew,至于ubuntu用户也可以通过apt-get方式,这一点与寻常软件一致。
安装完成后,在控制台输入go version
,控制台返回类似
go version go1.7.1 darwin/amd64
即表示成功。
验证完毕之后,还需要开发者配置几个环境变量:
对于macOS,作者配置在~/.zshrc中(通过官网下载的安装包安装):
export GOROOT=/usr/local/go
export GOPATH=$HOME/goworkspace
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
GOROOT:类似于Java中的JAVA_HOME,配置到go的安装目录,取决于安装方式和操作系统的不同,位置也不尽相同。
GOPATH:这个变量在其他语言中不常见,相当于是workspace,要存放代码,打包后的模块,可执行文件。配置之后配合后面讲到的go命令十分方便,可以看出go语言是一门工程化至上的语言。这里只要自定义一个目录即可。
PATH中加入这两个路径含义是可以直接在任何地方执行go生成的可执行文件。
至此,安装工作就全部结束了。
开发工具
总的来说go的开发工具相对Java较弱,主要有:
- LiteIDE
- Sublime
- Vim
- Eclipse
- IntelliJ IDEA
5种选择,只有用LiteIDE可以比较方便的进行调试,其他工具都需要配置GDB,并且不是专门为go写的ide。而LiteIDE目前的版本还比较粗糙,作者选择的是Sublime。
安装GoSublime插件后可以执行代码跳转,代码提示。调试基本靠print,当做锻炼自己的语言熟悉程度了。详细的ide安装步骤建议另行谷歌。
go命令
go命令是go中十分有特色的一个部分,通过go命令,可以很方便的实现其他语言需要第三方工具来做到的一些功能(如包管理)。
先来个汇总:
Go is a tool for managing Go source code.
Usage:
go command [arguments]
The commands are:
build compile packages and dependencies
clean remove object files
doc show documentation for package or symbol
env print Go environment information
fix run go tool fix on packages
fmt run gofmt on package sources
generate generate Go files by processing source
get download and install packages and dependencies
install compile and install packages and dependencies
list list packages
run compile and run Go program
test test packages
tool run specified go tool
version print Go version
vet run go tool vet on packages
这是所有支持的命令。常用解释如下:
build: 将一个.go格式的源文件编译成可执行文件或模块,这取决于代码中的package,如果是package main,一般编译为可执行文件并生成到当前的目录。
install: build的同时,安装到(即拷贝到)GOPATH/bin目录下,这样在任何地方都可以执行了。
get: 相当于Java中的maven, gradle 做的事情了,如代码中使用到了一个第三方包github.com/go-sql-driver/mysql
, 我们需要在build之前执行 go get github.com/go-sql-driver/mysql
。系统将会把代码下载到GOPATH/src/github.com/go-sql-driver/mysql�
目录结构之下,这个目录结构是一个约定。之后,通过build命令就可以将这个包包含的代码一并编译。从这里可以看出go高度自由的包管理,同时对开源十分友好,工程化便捷没有多余操作。
fmt:执行go fmt xxx.go之后,将对目标文件的代码风格统一化,如大括号{}不另起一行,删除多余的空行等。在协作中统一所有人的编码风格是很好的。
run: 直接运行一个.go文件,不生成可执行文件。如 go run test.go
doc:doc命令现在被godoc命令所替代,需要安装godoc:
go get -v golang.org/x/tools/cmd/godoc
这里也许需要翻墙,安装好之后,成为一个查看代码文档的简便工具。比如查询fmt.Println函数用法:
[~]$ godoc fmt Println
use 'godoc cmd/fmt' for documentation on the fmt command
func Println(a ...interface{}) (n int, err error)
Println formats using the default formats for its operands and writes to
standard output. Spaces are always added between operands and a newline
is appended. It returns the number of bytes written and any write error
encountered.
另外,通过命令在命令行执行 godoc -http=:端口号 比如godoc -http=:8080。然后在浏览器中打开127.0.0.1:8080,你将会看到一个golang.org的本地copy版本,真是欲罢不能。
另外的一些命令:
go version 查看go当前的版本
go env 查看当前go的环境变量
go test 执行这个命令,会自动读取源码目录下面名为*_test.go的文件,生成并运行测试用的可执行文件。
go list 列出当前全部安装的package