一、环境变量配置
-
$GOROOT
: go环境变量 -
$GOPATH
: 工作目录
1). Linux环境
- 解压go的压缩包到喜欢的路径,比如
$HOME/app
下 vim $HOME/.profile
export GOROOT=$HOME/app/go/
export GOPATH=$HOME/workspace/go:$HOME/other/go/
export PATH=$PATH:$GOROOT/bin:${GOPATH//://bin:}/bin
GOPATH 可以配置多个,但是 包管理默认是下载到第一个目录下,建议把$GOPATH 第一个值设置为常用的全局工作目录,例如以后安装一些Go 语言工具时,它们的bin执行文件可以在这里找到
- 如果向让所有用户使用
- 将 go 安装到
/usr/local
下
- 将 go 安装到
vim /etc/profile
export GOROOT=/usr/local/go/
export GOPATH=$HOME/workspace/go/:$HOME/other/go/
export PATH=$PATH:$GOROOT/bin:${GOPATH//://bin:}/bin
2). Win环境
- 配置系统环境变量
GOROOT="c:\go"
- 将环境变量添加到PATH
;%GOROOT%\bin
- 检查 cmd
go version
二、GO常用命令
1). GO安装文件
-
$GOROOT
文件- api文件夹:存放了包含公开的变量、常量、函数等API的列表,用于Go语言API检索
- bin文件夹:主要用于存储标准命令执行文件,例如默认的go、godoc、gofmt三件套
- doc文件夹:存放了标准库的文档,使用
godoc-http=:6060
(?) 命令可以启动文档服务,通过本地6060端口即可访问。 - pkg文件夹:用于存放编译Go语言标准库生成的文件,这个文件夹里面的文件根据不同系统与架构会有所不同,在$GOROOT这个文件中的pkg一般只有标准库的编译缓存文件,这些文件编译 Go 程序时起到很大作用,例如 pkg/tool/linux_amd64/目录下就有很多go tool命令的执行文件
- src文件夹:存放的是 Go 语言自己的源代码(包括标准库),阅读源码时就是看这里面的内容
-
$GOPATH
(工作空间结构)- bin: 存放go install生成的可执行文件
- pkg: 存放go编译生成的文件
- src: 开发的Go项目的源代码,不同工程项目的代码以包名区分
$GOPATH
可以有很多个,如果有两个Go 语言开发工作区,可以使用冒号分隔两个变量路径,但是第一个$GOPATH会被作为默认的go get存放目录。
2). 常用命令
- 格式
go command [arg]
- 常见command命令
command | 功能 |
---|---|
build | 编译源代码包和依赖 |
clean | 删除对象文件 |
doc | 显示Go包或程序实体的文档 |
env | 打印输出Go语言环境的变量信息 |
bug | bug提交程序 |
fix | 修复程序 |
fmt | 格式化源码包中的代码 |
generate | 通过扫描Go源码中的go:generate注释来识别要运行的常规命令 |
get | 下载并安装指定的包与依赖 |
install | 编译并安装指定的包与依赖 |
list | 打印指定源码包的信息 |
run | 编译并运行Go程序 |
test | 测试一个源码包 |
tool | 运行一个指定的go tool |
version | 打印输出Go环境版本 |
vet | 检查源码包中可能出现的错误 |
go help [command] |
查看帮助命令 |
3). Go语言命令行参数
-
源代码分类
命令源代码文件:可执行程序的入口
库源代码文件:集中放置各种程序实体(全局常量、全局变量、接口、结构体、函数等)
测试源代码文件:对前两种源代码文件中的程序实体的功能和性能进行测试,或者展现前两者中程序的使用方法。 -
程序编译
-
go build
: 尝试编译当前目录的代码包,如果只有 库源码文件 和 测试源码文件 则不会生成文件。 -
go build hello.go
: 编译指定文件 -
go install
: 将可执行文件移动到$GOPATH/bin
让其成为全局命令 -
go run hello.go
: 只运行,不会输出任何结果
-
-
编译命令常用参数选项
参数选项 | 作用 |
---|---|
-a |
这个选项用于强制重新编译所有相关的Go语言源代码包,包括标准库中的包。默认Go语言的依赖包如果已经构建过了,第二次就不会再构建,但如果需要对底层源码做出修改,就需要使用这个选项从头编译一次。 |
-n |
用于检查执行命令过程中实际会用到的命令,这个选项只输出要执行的命令,实际上并不会执行。 |
-p |
构建或测试时指定并行运行的程序数量,默认值是可用的CPU数量。 |
-race |
检查数据竞争问题,并发编程中会用到,只支持AMD 64架构。 |
-v |
打印被编译的包。 |
-work |
指定编译缓存工作目录,Linux 系统默认在/tmp 文件夹中。指定工作目录时,编译结束后不会自动删除缓存目录。 |
-x |
与上面的-n类似,打印编译过程中执行的命令,但这个选项会执行这些编译命令。除了上面这些选项 |
--help
或者go help
查看帮助信息。使用go tool
可以查看Go语言默认携带的一些工具
go tool [command] -h
3). Go语言包安装
-
go get
: Go自带的的包获取工具。
go get github.com/example/go-cache
执行这句命令之后,可以在
$GOPATH
的第一个路径的src/github.com
目录中找到这个代码包的源代码。
-
目前go get命令所支持的VCS
- Git
- SVN
- Mercurial
- Bazaar
-
go get [-?]
:-
-h
: 显示帮助信息, -
-d
:只执行下载动作,不执行安装动作 -
-f
:不检查已下载代码包的导入路径,需要与-u选项配合使用 -
-fix
:下载代码包后先执行fix动作(修复代码兼容问题),然后再进行编译和安装。 -
-insecure
:允许get命令使用不安全的HTTP协议下载代码包 -
-t
:让get命令同时下载安装指定的代码包的测试源码文件中的依赖代码包 -
-u
:更新已有代码包与依赖包。在默认情况下,get 命令不会下载本地已经存在的代码包,需要使用此选项更新代码包。 -
-v
:打印要下载安装的代码包名称。 -
-x
: 显示下载安装要执行的具体命令。
-
4). 代码格式化
-
go fmt ?.go
: 格式化工具强制格式化 - 格式化选项
-
-l
:显示需要格式化的文件。 -
-w
:不将格式化结果打印到标准输出,而是直接保存到文件中。 -
-r
:添加形如<原始内容>-><替换内容>
的重写规则,方便批量替换。 -
-s
:简化文件中的代码。 -
-d
:显示格式化前后的不同(不写入文件),默认是false。 -
-e
:打印所有的语法错误。默认打印每行的前10个错误。 -
-cpuprofile
:支持调试模式,将相应的cpufile写入指定的文件- 替换栗子
-
# 替换没有意义的括号
$ gofmt -r "(a) -> " -w *.go
# 去除多余的len(a)
$ gofmt -r "a[n:len(a)] -> a[n:]" -w *.go
# 调换两个参数位置a
$ gofmt -r 'A.Func1(a,b) -> A.Fun2(b,a)' -w *.go
一、语法规范
1). 常用语法规范
- Go语言要求只有用到的包才能导入,如果导入一个代码包又不使用,那么编译时会报错。
- Go语言默认不需要分号结束每行代码,如果两行代码写在一行时才需要使用分号分隔,但是不建议这样书写代码。
- 编译之后使用go install就可以将这个简单的Go语言程序安装到本地
$PATH
中,这样这个程序就可以全局使用了。
三、环境变量
- 显示环境变量
go evn
-
$GOOS
: 目标操作系统,目前支持10种- Linux、Freebsd、Darwin、Windows、Android、Dragonfly、Netbsd、Openbsd、Plan 9和Solaris
-
$GOARCH
: 目前处理器架构,目前支持9种- ARM、ARM64、386、AMD64、PPC64、PPC64le、MIPS64、MIPS64le 和S390X
在构建时指定上述两者就可以指定构建相应的Go语言程序。在任意环境编译任意平台的都能支持
- 案例:生成Win64的Go程序
# 设置当前Shell会话变量
$ GOOS=windows GOARCH=amd64 go build main.go
网友评论