GO语言工作空间和GOPATH环境变量


go语言 不强制使用工作空间和项目结构 小型go程序 依靠go run等命令 直接编译运行
但保持良好的工作空间 和 文件结构 对于管理源代码 和 发布程序 非常有帮助 大型的go项目工作空间则必要

go语言工作空间 就是一个文件目录 目录包含
src目录 存放go源代码
pkg目录 package对象
bin目录 存放可执行对象三个目录
使用go的编译命令 将源代码或package编译后的二进制输出对应存储到bin和pkg目录中
src目录中的源代码 根据package名分类到对应的子目录中 使用各种版本控制工具
go 工作空间目录结构 大致
bin/
  Mode                LastWriteTime     Length Name
  -a---        2019-07-15      3:22    8146944 gomobile.exe
  -a---        2019-07-29     13:05   11080704 gopm.exe
  -a---        2019-07-30     18:46   13467648 nats-server.exe
pkg/
  Mode                LastWriteTime     Length Name
  d----        2019-06-13     20:41            mod
  d----        2019-07-30     13:27            windows_amd64
src/
  Mode                LastWriteTime     Length Name
  d----        2019-07-30     21:18            github.com
  d----        2019-06-15     16:20            golang.org
  d----        2019-07-30     13:20            gopkg.in
一个工作空间中通常都会包含多个仓库

GOPATH环境变量
GOPATH是go语言 工作空间 的环境变量 指定go语言的工作空间位置
建立工作空间目录 需要把工作空间目录 路径
添加GOPATH环境变量  支持多个值  有多个工作空间 把多个工作空间值都添加到这个环境变量中
window系统使用分号 ; 分隔不同值
控制面板\\所有控制面板项\\系统\\环境变量\\系统变量
Linux或Unix系统使用冒号 : 分隔不同值
将所有工作空间bin路径  添加到PATH环境变量中 在Linux系统下可以在~/.profile文件末尾添加如下内容
$ export GOPATH=你的工作空间路径
$ export PATH=$PATH:$GOPATH/bin
$ export GOROOT=/usr/local/go

go设置多个GOPATH
linux
GOPATH="/home/www/go:/home/www/goTwo"
windows
GOPATH=F:/Administrator/go;F:/Administrator/goTwo;
go get 时默认安装到第一个GOPATH路径
go build时 报同一种类型或方法不匹配 由于多个是GOPATH路径顺序不对导致的 调换一下顺序即可解决
重新开启cmd 重新输入 go env 回车 验证结果

需要注意的是 GOPATH环境变量的值不能与安装的go目录相同
go目录中同样有src pkg bin等类似工作空间的目录结构
包含的是go的标准模块
查看go环境命令 go env

GOROOT 就是golang 的安装路径
GOBIN 是在project目录下执行go build

go get会做两件事
1. 从远程下载需要用到的包
2. 执行 #go install

go install 会生成可执行文件
编译的是可执行文件 放到bin目录下
如果是一个普通的包 编译生成到pkg目录下 文件是.a结尾