Golang 工作区和 GOPATH
极客时间《Go 语言核心 36 讲》学习笔记 02
01 | 工作区和 GOPATH
很久以前看过这一篇,现在再看还是有一点懵圈,也许应该先看隔壁的《Go 语言从入门到实战》。
…… 我是分割线,看完了隔壁的《Go 语言从入门到实战》然后又回到这里 ……
…… 其实我是从 Go 进阶训练营回到这里来的,因为那边有点难 ……
GOPATH 可以包括多个目录路径,每个目录都代表 Go 语言的一个工作区。
Go 语言的源码以代码包为基本组织单位(代码包与目录一一对应)。
命令源码文件:包含 main 入口函数的原码文件
src 源码文件
pkg 归档文件,程序编译后生成的静态库文件。
bin 可执行文件
go guild 构建,go install 安装,安装操作会先执行构建,然后链接,并且把结果文件搬运到指定目录。
go get 从代码仓库中下载代码包,并且安装到环境变量 GOPATH 包含的第 1 工作区的相应目录中。
我之前似乎就卡在这里,因为修改过 GOPATH 的定义,所以导致第 1 工作区的目录发生了变化,然后一些之前已经下载的代码包就找不到了。
对于思考题,不知道怎么去做实验,尝试着回答一下:
Go 语言在多个工作区中查找依赖包的顺序,应该是现在本地代码文件,然后是按照 GOPATH 的定义,从第 1 工作区一直找到最后一个工作区,如果没有的话再去 GOROOT 目录查找(也可能 GOROOT 的优先级在 GOPATH 之前?)。
多个工作区中存在导入路径相同的代码我觉得不会产生冲突,只要按照查找的优先级,优先使用最先找到的代码包即可。
学习专栏的时间晚了两年多,现在 GO 语言包管理又增加了 go mod,还需要进一步学习。
看了所有老师回复过的留言,从中也学到了不少内容。
看了推荐的那篇 How to Write Go Code,相见恨晚。
最后顺便说,因为版本升级的原因,GOPATH 的重要性可能有所下降了,如果实在看不明白,就先往下看吧
版权声明: 本文为 InfoQ 作者【escray】的原创文章。
原文链接:【http://xie.infoq.cn/article/d811bb2606fb7f2af1a8d6d4e】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论