Answers:
有一些准则可以遵循。
_test.go
只能由该go test
工具编译和运行。name_linux.go
仅在linux上构建,name_amd64.go
仅在amd64上构建。这//+build amd64
与文件顶部有一行相同有关go build
更多详细信息,请参阅该工具的文档:https : //golang.org/pkg/go/build/
unix
和建造我应该做些什么others
。例如,我可以制作两个文件file_windows.go
和file_others.go
。它工作正常。但是file_unix.go
,file_others.go
这是行不通的。我不想创建八个文件darwin freebsg linux openbsd netbsd dragonfly solaris android
。
除了JimB提供的答案外,常规文件名还使用小写字母,简短且没有任何下划线或空格。通常,文件名遵循与程序包名称相同的约定。请参阅有效Go的“ 程序包名称”部分。
参见strconv软件包中的一个很好的例子。
mycommandsub1command.go
或my_command_sub1command.go
,以及如何处理mycommandVO
就如何在一个程序包中组织代码而言,Go是相当自由的,通常它可以提高可读性和对代码的理解。学习如何做到这一点的最好方法是学习大师,即浏览标准库:
但是我可以想到2条规则。指定要为不同平台编译的代码时,请使用平台名称作为后缀:
mypkg_linux.go // only builds on linux systems
mypkg_windows_amd64.go // only builds on windows 64bit platforms
另外,如果您有一个名为的文件server.go
,则对该文件的测试将在中server_test.go
。
_front
,_writer
或_bits
作为未来显著后缀呢!
go
工具对程序包的结构有严格的限制(这是我最喜欢的语言之一)。它支持某些非常特定的约定(每个文件夹一个软件包(至少有一个例外),文件夹的软件包与文件夹共享相同的名称(至少有一个例外),完整的软件包导入路径与中的相对路径匹配$GOPATH
,有些文件是根据名称格式等进行不同的处理)
Go is quite liberal in terms of how you organise your code within a package
。Go不是自由的,它是限制性的。但这是一件好事。