栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

我可以在多个源目录中开发go软件包吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

我可以在多个源目录中开发go软件包吗?

无论如何都不要这样做,因为语言规范允许编译器实现拒绝此类构造。引用Spec:Package子句:

共享相同PackageName的一组文件构成了一个包的实现。 一个实现可能要求包的所有源文件都驻留在同一目录中。

而是“结构化”您的文件名以模仿文件夹结构;例如代替文件

foo/foo1.gofoo/bar/bar1.gofoo/bar/bar2.go

您可以简单地使用:

foo/foo1.gofoo/bar-bar1.gofoo/bar-bar2.go

同样,如果您的程序包太大,甚至需要多个文件夹来“托管”该程序包实现的文件,那么您应该真正考虑不将其作为单个程序包实现,而是将其分成多个程序包。

另请注意,Go
1.5
引入了内部软件包。如果

internal
在包文件夹中创建特殊的子文件夹,则可以在其中创建任意数量的子包(即使使用多个级别)。您的软件包将能够导入和使用它们(或更确切地说,所有植根于您的软件包文件夹的软件包),但是外面没有其他人能够这样做,这将是编译时错误。

例如,您可以创建一个

foo
程序包,一个
foo/foo.go
文件和一个
foo/internal/bar
程序包。
foo
将能够导入
foo/internal/bar
,但例如
boo
不会。此外
foo/baz
还可以导入和使用
foo/internal/bar
,因为它是植根于
foo/

因此,您可以使用内部软件包将大软件包分解为较小的软件包,从而将源文件有效地分组为多个文件夹。您唯一需要注意的就是将您的程序包要导出的所有内容放入该程序包中,而不是放入内部程序包中(因为这些程序包是不可导入的,或者从“外部”可见)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/447980.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号