如何理解Go语言的GOROOT/GOPATH
可以简单理解为:
$GOPATH 是go的工程目录
/home/guest/gocode
├── bin
├── pkg
└── src
$GOROOT 是go的安装目录
/home/guest/tools/go
├── api
├── AUTHORS
├── bin
├── blog
├── CONTRIBUTING.md
├── CONTRIBUTORS
├── doc
├── favicon.ico
├── lib
├── LICENSE
├── misc
├── PATENTS
├── pkg
├── README.md
├── robots.txt
├── src
├── test
└── VERSION
1. GOROOT
简而言之,GOROOT在GO语言中表示的是go语言编译、工具、标准库等的安装路径,在Linux系统中一般安装在
/usr/go 或者 /usr/local/go
这样Linux系统中的PATH变量一般都包含了这两个目录,所以就可以直接运行go命令,而Windows系统中一般默认安装在C:\go中。
如果自定义安装go的话,需要设置GOROOT的值,比如在Linux系统中用户如有root用户权限时,想安装go至自己的工作目录中,就要设置GOROOT为自己的HOME目录中,假设安装在/home/目录中的go目录,则需要这样设置GOROOT:
export GOROOT=$HOME/go
最好将这条命令放到.bashrc中,这样每次登录就可以自动配置GOROOT。
为了确定GOROOT值,可以使用go env命令显示当前的值
2. GOPATH
GOPATH环境变量则表示go的工作目录,这个目录指定了需要从哪个地方寻找GO的包、可执行程序等,这个目录可以是多个目录表示,go编译或者运行时会从这个环境变量中去对应查找,可能还不够清晰,工作目录或者如官方文档中说的workspace,可以这么理解为GO源码目录,在这个目录进行编译、链接最后生成所需要的库、可执行文件,我们对比C程序的目录,也许更能方便理解,一般在C的工程项目中包含三个文件,一个include目录、src目录、Makefile文件。
include目录存放了所有的头文件可供其他地方包含
src目录则存放所有的.c后缀的源文件
Makefile则是该项目的编译,在编译整个工程时需要执行make命令,这里就发现GO就不需要去写什么Makefile了,执行build命令就可以自动编译。
3. GOROOT和GOPATH必须设置正确,且对于GO标准库而言,import的时候不需要写全路径,而对于GOPATH中的包而言需要根据目录层次写清楚包的path。
上一篇: Eclipse设置内存大小