知识卡片

用域名路径隔离包命名空间

专业/工作 · 486

内容

在[[Go包系统的组织方式]]的基础上,Go早期查找包的路径规则很直接:先找GOROOT(标准库所在处),再找GOPATH下各个路径的src目录,包名就是目录名。这个规则天然带来一个风险——如果两个不相关的第三方包恰好都叫omap,路径查找会产生冲突。发散:这是”复用已有的全局唯一标识系统解决新问题”的典型思路——域名系统的唯一性是DNS几十年运转的产物,Go的包路径设计直接。

参考来源

- 位置:《Go语言程序设计》第9章《包》(源文件:_epub-src/OEBPS/text00043.html) - 结论依据:原文在该章节围绕“在[[Go包系统的组织方式]]的基础上,Go早期查找包的路径规则很直接:先找`GOROOT`(标准库所在处),…”给出定义、示例或限制条件;摘录中的术语、代码片段或对比关系直接支撑本卡片的结论。 - 原始内容:个目录,因为Go语言的工具链就是要求这样做的。我们的程序和包都应该在这个 src 目录下的子目录里。 我们也可以将我们自己的包安装到Go语言包目录树下,也就是 GOROOT 下,但是这样没有什么好处而且可能会不太方便,因为有些系统是通过包管理系统来安装Go语言的,有些是通过安装包,有些是手动编译的。 9.1.1 创建自定义的包 我们创建的…