Go 如何在同一个包中的多个源之间共享聚合类型(例如自定义结构)
假设我的Go 如何在同一个包中的多个源之间共享聚合类型(例如自定义结构),go,Go,假设我的server.go接收聚合数据,提供相应的结构实例,并将if传递给treatOne.go 在何处声明和包含此类常见类型?可以执行以下操作: 如果server.go和treatOne.go属于同一个包,则可以直接使用自定义结构 如果server.go和treatOne.go不属于同一个包,则可以在任何文件中公开定义自定义结构(取决于结构的语义)。可以通过将第一个字母大写来定义公共自定义结构 如果server.go和treatOne.go不属于同一个包,则可以使用第三个包来实现自定义结构,并
server.go
接收聚合数据,提供相应的结构实例,并将if传递给treatOne.go
在何处声明和包含此类常见类型?可以执行以下操作:
希望能有帮助 你想在哪里申报就在哪里申报。(只要是顶级声明)很难说,因为Go中的重要单元是包,而不是文件。如果这些文件在同一个包中,那么这并不重要。如果它们在不同的包中,您可能需要第三个包,其他两个包都可以导入。非常感谢,所以在同一个包中,您只需在您想要的任何唯一源中声明您的自定义类型,并且您可以在所有源中使用它,这对初学者来说更清楚:)“称为commons或utils”-尽量避免“垃圾抽屉”像这样的包裹。每个包应该有不同的用途,不应该有这样的“杂项”包。例如,根据结构是什么,它可能属于“模型”包。它取决于项目,但配置结构通常位于
config
包中,错误结构通常位于生成错误的包中(如果是非常特定的错误),或者如果在整个项目中使用,则可以位于模型中(因为那时它是共享域模型的一部分)。我建议了第三个包,但它不应该是“杂项”包,它应该是有目的的包(就像所有包一样)@Adrian:我同意你的理念,我可以说我今天学到了一些有价值的东西。谢谢。我会更新我的答案。这在每种语言中都是一个共同的想法,甚至在Go博客中都明确指出:“避免无意义的包名。名为util、common或misc的包为客户提供了不知道包中包含什么的信息。”