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不是自由的,它是限制性的。但这是一件好事。