Go 中文件名的约定是什么?

我可以在 Go 中找到命名包的惯例: 单词之间没有下划线,所有的都是小写。

这个约定也适用于文件名吗?

你是否也把一个结构放在一个文件中,就像你放在一个 java 类中一样,然后用这个结构命名这个文件?

目前,如果我有一个 struct WebServer,我将它放在一个文件 web _ server. go 中。

111777 次浏览

文件名中的下划线通常用于分配平台/拱门代码,例如:

➜ 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,等等。

它可以是 GOOS和/或 GOARCH(裁判的任何有效值。

file_windows_amd64.go只能在 win64上编译。

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中进行。

有一些准则可以遵循。

  1. 以“ .”或“ _”开头的文件名将被 Go 工具忽略
  2. 后缀为 _test.go的文件只能由 go test工具编译和运行。
  3. 具有 OS 和体系结构特定后缀的文件自动遵循这些相同的约束,例如,name_linux.go将只构建在 linux 上,name_amd64.go将只构建在 amd64上。这与在文件顶部使用 //+build amd64行是相同的

有关更多细节,请参见 go文档: https://pkg.go.dev/cmd/go

除了 答案由 JimB 提供之外,常规文件名是小写的、短的,没有任何下划线或空格。通常,文件名与包名遵循相同的约定。请参阅 现在开始包名部分。

参见 Strconv 软件包获得一个很好的例子。

所有文件名的大写字母都很长,这是一个糟糕的主意!

文件名没有语义意义-它们没有导入或引用。在去的代码文件被编译成包,它们被分配到一个单位。

因为这篇文章实际上不包括对多词文件名的限制,除了下划线(用于构建、忽略、测试和编译目的)之外,MixedCaps 是多词文件名约定的最佳选择。同一篇文章还推荐“有效行动”

博士:

- smallallcupspackagename
|- veryLongFileName.go
|- veryLongFileName_test.go
|- veryLongFileName_amd64_windows.go

除了所有其他建议之外,命名约定应该包括(.).它的意思是,如果您将一个模块作为“ User”,那么您正在使用路由,并且模型是在用户模块中定义的。他们的名字应该像 user.mods.go,user.route.go,user.service.go。 这样更清楚,也更容易读懂。