我有一个包含多个 go 文件的包,我正在寻找使用这些变量时要遵循的最佳实践
var print string
type someStruct struct {
//some vars
}
考虑包文件中包含以下 go 文件
file1.go 有一个字符串变量print
file2.go 有一个结构体 someStruct
file3.go 需要一个字符串变量打印
file4.go 需要一个结构体 someStruct
我应该在 file3.go 中访问/使用 file1.go 中的变量还是创建一个新的字符串变量,即 file3print
我应该以同样的方式访问/使用 file4.go 中的 file2.go 中的 someStruct 或者创建一个新结构,即 file3SomeStruct
最佳答案
不要创建特定于文件的类型,也不要创建变量,a la file3SomeStruct
,只是为了避免在文件之间共享这些标识符,这样的做法在我看来是非常不合理的,而且大多数绝对被认为是不好的做法。
在文件之间共享标识符是绝对可以的,您可以在标准库中找到无数这种做法的示例。
只需浏览一下 net/http package source files .
如果需要,您可以将包视为代表单一概念,例如HTTP,以及表示其子概念的包文件,如 HTTP 服务器、HTTP 客户端或 HTTP 请求。但是要使 HTTP 有用,它的子概念需要能够交互。 (这不是必需的标准,某些包装采用不同的设计可能会更好。)
关于go - 在包中定义共享变量 - go,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47339471/