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
软件包).
此外,如果没有其他人将使用您的包,并且它不是太复杂,可能不值得麻烦将其组织到多个包中.