我是 Golang 的新手,并且很好地掌握了包的概念,但对它们与文件夹/目录位置的关系有疑问。
所以我正在处理一个相当大的项目,/pkg目录中有多个子目录。可能package ___声明了30 多个不同的命名空间。
通常,目录中的所有文件当然都具有相同的包,例如/pkg/system/api-client;声明了该目录中的所有文件package apiclient
当我注意到两个文件时,问题就出现了package config;一个在/pkg/config/config.go,另一个在/pkg/writer-job/pkg/config/config.go。
它们是同一个包的一部分吗?如果是这样,这个约定是什么(因为它看起来很分散)?如果没有,您如何在词法上将其分离config为两个独立的包?我确实搜索了文档,但没有看到这个。
Bur*_*dar 10
有两个概念:包名和导入路径。
包名称是您package在 go 文件中使用 a作为第一个语句声明的名称。一个目录最多可以包含一个包。
导入路径是您导入该包的方式,并显示包的位置。导入后,声明的package名称将用于限定从该包中导出的标识符。
如果包名称冲突,您可以为其中之一定义别名。
import (
"someproject/pkg/config"
writerconfig "someproject/pkg/writer-job/config"
)
Run Code Online (Sandbox Code Playgroud)
然后,config.X引用第一个包,再writerconfig.X引用第二个。