我可以在 Go 中找到命名包的惯例: 单词之间没有下划线,所有的都是小写。
这个约定也适用于文件名吗?
你是否也把一个结构放在一个文件中,就像你放在一个 java 类中一样,然后用这个结构命名这个文件?
目前,如果我有一个 struct WebServer,我将它放在一个文件 web _ server. go 中。
文件名中的下划线通常用于分配平台/拱门代码,例如:
➜ cd $GOROOT/src/pkg/math/ ➜ ls sqrt*s sqrt_386.s sqrt_amd64p32.s sqrt_amd64.s sqrt_arm.s
编译器只能在32位处理器上读取 sqrt_386.s,在 amd64上读取 sqrt_amd64.s,等等。
sqrt_386.s
sqrt_amd64.s
它可以是 GOOS和/或 GOARCH(裁判的任何有效值。
GOOS
GOARCH
file_windows_amd64.go只能在 win64上编译。
file_windows_amd64.go
Go 在如何在包中组织代码方面非常自由,通常是提高代码的可读性和理解性。学习如何做到这一点的最好方法是学习硕士学位,也就是浏览一下标准图书馆:
Http://golang.org/src/pkg/
不过我能想到两条规则。在指定要为不同平台编译的代码时,可以使用平台名作为后缀:
mypkg_linux.go // only builds on linux systems mypkg_windows_amd64.go // only builds on windows 64bit platforms
另外,如果您有一个名为 server.go的文件,那么该文件的测试将在 server_test.go中进行。
server.go
server_test.go
有一些准则可以遵循。
_test.go
go test
name_linux.go
name_amd64.go
//+build amd64
有关更多细节,请参见 go文档: https://pkg.go.dev/cmd/go
go
除了 答案由 JimB 提供之外,常规文件名是小写的、短的,没有任何下划线或空格。通常,文件名与包名遵循相同的约定。请参阅 现在开始的 包名部分。
参见 Strconv 软件包获得一个很好的例子。
所有文件名的大写字母都很长,这是一个糟糕的主意!
文件名没有语义意义-它们没有导入或引用。在去的代码文件被编译成包,它们被分配到一个单位。
因为这篇文章实际上不包括对多词文件名的限制,除了下划线(用于构建、忽略、测试和编译目的)之外,MixedCaps 是多词文件名约定的最佳选择。同一篇文章还推荐“有效行动”
博士:
- smallallcupspackagename |- veryLongFileName.go |- veryLongFileName_test.go |- veryLongFileName_amd64_windows.go
除了所有其他建议之外,命名约定应该包括(.).它的意思是,如果您将一个模块作为“ User”,那么您正在使用路由,并且模型是在用户模块中定义的。他们的名字应该像 user.mods.go,user.route.go,user.service.go。 这样更清楚,也更容易读懂。