Eli*_*Lie 13 packages structure go
我在Go中有一个简短的程序,其中包含以下文件.程序目录结构:
myprogram/
main.go
server.go
routines.go
structs.go
Run Code Online (Sandbox Code Playgroud)
这些不同的文件包含不同的功能 该structs.go文件包含一个定义的结构类型列表,并在我的程序的几个文件中使用.我想要做的,现在是将我的程序拆分为包,如下例所示:
main/
main.go // the main program
server/
server.go // a package imported in main
routines/
routines.go // a package imported in main
Run Code Online (Sandbox Code Playgroud)
我的问题是,我不知道放在哪里,structs.go因为它包含在几个包中使用的结构,如'main.go'代码.
如何有效地分享这个structs.go文件?我应该包括它(通过一个符号链接到文件)在每个I中定义的包,即,server和routines以及在主?
我的方法可能很尴尬,因为我是Go的初学者,一般是编程.
icz*_*cza 13
不要跨包来链接文件,这是不好的做法.首先,代码将被复制.另一方面,标识符将被复制,意味着表示相同的实体(例如类型或功能),但它们将是不同的.例如,如果链接并且structs.go将包含type Response定义,您将有2种不同的类型server.Response并且routines.Response给出更多的混淆.
一种解决方案是放入structs.go自己的包中,例如model,依赖它的所有其他包可以导入它(例如你的main,server和routines).
在一个理论示例中:如果包A导入包B并且structs.go两者都需要,那么它也可以添加到包中B.如果C只需要一个软件包structs.go,那么创建自己的软件包会更明智model(因此软件包C不需要导入/了解软件包B,只需要新model软件包).
此外,如果没有其他人将使用您的包,并且它不是太复杂,可能不值得麻烦将其组织到多个包中.
| 归档时间: |
|
| 查看次数: |
4224 次 |
| 最近记录: |