可以简单理解为:
$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。

如何理解Go语言的GOROOT/GOPATH相关推荐

  1. 小议并实战go包------顺便说说go中的GOROOT,GOPATH和src,pkg,bin

    前些天带爸妈去上海.杭州玩了一下, 感觉很久没写博客了. "协程"在手, 说go就go. 以后尽量少扯C++, 多说go, 本文来说说go中的一些基本概念,如包,import, G ...

  2. AI 真的能够理解人类语言吗?

    作者 | Melanie Mitchell 译者 | 弯月 出品 | CSDN(ID:CSDNnews) 2011年,IBM 的人工智能系统沃森参加综艺节目<危险边缘>,并获得了冠军,当时 ...

  3. 理解C语言中指针的声明以及复杂声明的语法

    昨天刚把<C程序设计语言>中"指针与数组"章节读完,终于把心中的疑惑彻底解开了.现在记录下我对指针声明的理解,顺便说下如何在C语言中创建复杂声明以及读懂复杂声明. 本文 ...

  4. Google发布了能理解人类语言的云服务

    原文地址:Google launches cloud service for understanding human language 作者:Blair Hanley Frank 翻译:赖信涛 责编: ...

  5. 深入理解C语言的函数调用过程

    深入理解C语言的函数调用过程 本文主要从进程栈空间的层面复习一下C语言中函数调用的具体过程,以加深对一些基础知识的理解.     先看一个最简单的程序: 点击(此处)折叠或打开 /*test.c*/ ...

  6. html是大部分计算机都可以理解的语言,关于胃的静脉回流,哪项错误()。A、胃左静脉汇入门静脉或脾静脉B、胃右静脉汇入门静脉主干C、胃短...

    关于胃的静脉回流,哪项错误().A.胃左静脉汇入门静脉或脾静脉B.胃右静脉汇入门静脉主干C.胃短 更多相关问题 HTML是大部分计算机都可以理解的语言.() 多个人相互可以交换信息,包括计算机.通信线 ...

  7. 怎么理解python语言_Python语言入门1-理解Python语言

    本文主要向大家介绍了Python语言入门的理解Python语言,通过具体的内容向大家展现,希望对大家学习Python语言入门有所帮助. python是解释型的脚本语言 解释型语言 与C/C++等编译型 ...

  8. 能被计算机硬件理解的语言,(计算机原理综合练习一含答案.doc

    (计算机原理综合练习一含答案 计算机原理综合练习一 一.填空题: 1.计算机中的主机分为 和 . 2.计算机软件系统分为 和 . 3.计算机与其它计算工具最大的区别是 . 4.(23.75)10=( ...

  9. D1net阅闻:Google发布了能理解人类语言的云服务

    Google发布了能理解人类语言的云服务 Google智能云开发工具加入了一种云端自然语言API.这项服务可以帮助开发者的应用理解人类语言. 微软已成为iPhone应用重要开发商 推出最新应用Pix ...

最新文章

  1. 北理工计算机学院专业确认,北理工 2021 强基计划报名增加确认环节,限报 1 校 1 专业...
  2. SaaS加速器II 能力中心:互利互补 共享商业红利 1
  3. 天翼云centos7.5系统挂载磁盘
  4. Java MySql 连接数据库
  5. 【渝粤教育】国家开放大学2018年春季 0599-21T工程造价管理基础理论与相关法规 参考试题
  6. Guava常用工具类的使用
  7. ios 可以为空声明_iOS开发中使用OC和swift的对比(2)
  8. Hash算法中的CRC
  9. 【英语学习】【English L06】U03 House L2 Let's look for an apartment online
  10. “头腾大战”烧至在线办公:微信封禁飞书做错了吗?
  11. cad在线转换低版本_别再傻瓜式操作了,工作效率上不去?这6个小技巧带你玩转CAD...
  12. 作为大数据开发中最重要技术,spark需要掌握哪些技能呢
  13. 筑墙——只需一点点安全常识就能阻止网络犯罪
  14. Filco圣手二代双模蓝牙机械键盘的连接方法
  15. 为湖北带货,1.2亿人围观!朱广权联手李佳琦隔空直播卖出4014万
  16. MySql定期备份数据到历史表的解决方案
  17. 炉石一直显示连接服务器,炉石传说无法连接战网服务器怎么办 处理方法详解...
  18. python的openpyxl模块合并单元格,浅谈openpyxl库,遇到批量合并单元格的问题
  19. 【机器视觉】工业传统视觉和3D视觉算法
  20. python 深度学习源码_「深度学习」用TensorFlow实现人脸识别(附源码,快速get技能)...

热门文章

  1. Anaconda的下载和安装(保姆级别教程)
  2. 优思学院|六西格玛和ISO9000可否结合一起实施?
  3. FileTracker : error FTK1013: 在以下文件跟踪日志文件中,未能找到 unicode 字节顺序标记: E:\HT-Mobile\cocos2d-project\MobileP
  4. STM32--解析GPS数据包代码
  5. linux 服务器之间共享目录
  6. 串口控制直流电机程序 80C51单片机 L298N 普中51-单核-A4
  7. uniapp签到页面
  8. 解决谷歌浏览器不能播放音乐的问题
  9. VR场景会对普通场景的摄像机有影响
  10. 当单片机遇上状态机(二) 为什么QP难以入门?