在包中定义共享变量 - 去

时间:2017-11-16 21:34:31

标签: go

我有一个包含多个go文件的包,我正在寻找使用这些变量时要遵循的最佳实践

var print string

type someStruct struct {
  //some vars
}

考虑包文件中包含以下go文件

file1.go有一个字符串变量print

file2.go有一个struct someStruct

file3.go需要一个字符串变量print

file4.go需要一个struct someStruct

我应该在file3.go中访问/使用file1.go中的变量,还是创建一个新的字符串变量,即file3print

我应该以同样的方式从file4.go中的file2.go访问/使用someStruct 或创建一个新结构,即file3SomeStruct

1 个答案:

答案 0 :(得分:0)

不要创建特定于文件的类型,也不要创建变量la file3SomeStruct,只是为了避免在文件之间共享这些标识符,这种做法在我看来非常不合理,并且绝对会被认为是糟糕的做法。

在文件之间共享标识符是绝对可以的,您可以在标准库中找到无数的这种做法示例。

只需查看net/http package source files

如果您愿意,您可以将包视为代表单一概念,例如HTTP,以及表示其子概念的包的文件,如HTTP服务器,HTTP客户端或HTTP请求。但是为了使HTTP有用,它的子概念需要能够进行交互。 (这不是必需的标准,有些包装可能会因为不同的设计而变得更好。)