【发布时间】:2021-09-07 02:00:38
【问题描述】:
我是 Golang 新手,对包的概念掌握得相当好,但对它们与文件夹/目录位置的关系有疑问。
所以我正在处理一个相当大的项目,该项目在/pkg 目录中有多个子目录。可能声明了 30 多个不同的 package ___ 命名空间。
通常情况下,目录中的所有文件都将具有相同的包,例如/pkg/system/api-client;该目录中的所有文件都声明为package apiclient
当我注意到package config 的两个文件时,问题就出现了;一个在/pkg/config/config.go,另一个在/pkg/writer-job/pkg/config/config.go。
它们是同一个包的一部分吗?如果是这样,这个约定是什么(因为它看起来很分散)?如果不是,您如何在词法上将config 分隔为两个单独的包?我确实搜索了文档,但没有看到这个。
【问题讨论】:
-
golang.org/doc/code#Organization — 同样,两个包可能具有相同的名称但不同的导入路径
-
也许部分混淆来自于“命名空间”这个词的使用。 Go 没有命名空间。包可能有名称,但名称本身并不是代码的组织:包是。