Golang - 具有结构,变量和接口的代码组织

时间:2014-10-07 05:01:26

标签: go

我有一个代码库,其中一个文件包含与函数相同的文件中的大量StructsInterfacesVariables,我不确定是否需要单独使用到附加文件名的单独文件。例如,accounts.go分别为accounts_struct.goaccounts_interface.go,分别为struct和interface。

当您为Structs,Variables和Interfaces增加代码库时,文件组织会有什么好方法?

2 个答案:

答案 0 :(得分:17)

要检查的好模型是Go本身的源代码:http://golang.org/src/pkg/

您将看到这种方法(基于语言项如struct,interface,...分离)从未使用过。

所有文件都基于功能,最好使用接近原则方法,您可以在同一文件中找到您正在使用的定义。
通常,这些功能在每个程序包的一个文件中分组,大型文件除外,其中一个程序包由许多文件组成(netnet/http

如果您要分开任何内容,请将来源(xxx.go)与tests/benchmarksxxx_test.go

分开

答案 1 :(得分:16)

这是我设计包的心理模型。

一个。一揽子计划应包含一个想法或概念。 http是一个概念,http客户端或http消息不是。

湾包中的文件应包含一组相关类型,一个好的经验法则是,如果两个文件共享同一组导入,则合并它们。使用前面的示例,http/client.gohttp/server.go是一个很好的粒度级别

℃。不要为每种类型做一个文件,这不是惯用的Go。