Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 如何在同一个包中的多个源之间共享聚合类型(例如自定义结构)_Go - Fatal编程技术网

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


在何处声明和包含此类常见类型?

可以执行以下操作:

  • 如果server.go和treatOne.go属于同一个包,则可以直接使用自定义结构
  • 如果server.go和treatOne.go不属于同一个包,则可以在任何文件中公开定义自定义结构(取决于结构的语义)。可以通过将第一个字母大写来定义公共自定义结构
  • 如果server.go和treatOne.go不属于同一个包,则可以使用第三个包来实现自定义结构,并在该包中定义自定义结构,并将其公开定义。这是一个更好的方法

  • 希望能有帮助

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