写点什么

Golang 工作区和 GOPATH

用户头像
escray
关注
发布于: 2021 年 05 月 12 日
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 的重要性可能有所下降了,如果实在看不明白,就先往下看吧

发布于: 2021 年 05 月 12 日阅读数: 12
用户头像

escray

关注

Let's Go 2017.11.19 加入

Let's Go,用 100 天的时间从入门到入职

评论

发布
暂无评论
Golang 工作区和 GOPATH