去新手提醒:
我已经创建了一个我想要分成几个单独文件的包,但是我想要这样的布局:
\--src
|---myLib.go
|---myLib
|--- file1.go
|--- file2.go
| ...
|--- fileN.go
每个.go文件顶部都有“package myLib”,但我不确定如何让路径工作。 主文件“myLib.go”包含“package globals”和高级函数调用(导出),而file1,...,fileN文件基本上包含导出函数内部使用的“私有”非导出函数。
不确定如何设置导入,我试过的每个组合都得到了消息: 当我尝试将文件包含在myLib文件夹中时,“没有这样的文件或目录”。如果我把所有文件放在同一级别,那么它工作正常。从组织的角度来看,我更喜欢将导出函数的一个文件分开,并将所有未导出的函数/文件合并到子文件夹中。有什么建议/例子吗?
THX
答案 0 :(得分:3)
你不能这样做。你必须这样做:
文件myLib.go必须放在myLib文件夹中。 (但你可以随意调用文件夹。)
了解标准lib的组织方式。
答案 1 :(得分:0)
关键部分是:同一目录中的所有.go和_test.go文件都应以相同的package <packagename>
语句开头。包含具有main函数的文件的目录中的.go文件应该都具有package main
语句 - 它们用于创建可执行文件(使用目录名称命名)。
file1,...,fileN文件基本上包含导出函数内部使用的“私有”非导出函数。
只有大写的函数和类型名称才能用于其他包(包括package main
)。只要同一目录中的所有.go文件共享相同的package <pkgname>
语句,您所拥有的设置就应该有效 - 例如,如果您将package mylib
放在file1.go,file2.go中...... fileN.go(我还建议避免使用大写目录名称以避免混淆)。
还应该查看“如何编写Go代码”文档https://golang.org/doc/code.html或从中链接的截屏视频,这应该有助于Go代码库布局约定。