我有一个包含多个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
答案 0 :(得分:0)
不要创建特定于文件的类型,也不要创建变量la file3SomeStruct
,只是为了避免在文件之间共享这些标识符,这种做法在我看来非常不合理,并且绝对会被认为是糟糕的做法。
在文件之间共享标识符是绝对可以的,您可以在标准库中找到无数的这种做法示例。
只需查看net/http package source files。
如果您愿意,您可以将包视为代表单一概念,例如HTTP,以及表示其子概念的包的文件,如HTTP服务器,HTTP客户端或HTTP请求。但是为了使HTTP有用,它的子概念需要能够进行交互。 (这不是必需的标准,有些包装可能会因为不同的设计而变得更好。)