我有一个代码库,其中一个文件包含与函数相同的文件中的大量Structs
,Interfaces
和Variables
,我不确定是否需要单独使用到附加文件名的单独文件。例如,accounts.go
分别为accounts_struct.go
和accounts_interface.go
,分别为struct和interface。
当您为Structs,Variables和Interfaces增加代码库时,文件组织会有什么好方法?
答案 0 :(得分:17)
要检查的好模型是Go本身的源代码:http://golang.org/src/pkg/
您将看到这种方法(基于语言项如struct,interface,...分离)从未使用过。
所有文件都基于功能,最好使用接近原则方法,您可以在同一文件中找到您正在使用的定义。
通常,这些功能在每个程序包的一个文件中分组,大型文件除外,其中一个程序包由许多文件组成(net
,net/http
)
如果您要分开任何内容,请将来源(xxx.go
)与tests/benchmarks(xxx_test.go
)
答案 1 :(得分:16)
这是我设计包的心理模型。
一个。一揽子计划应包含一个想法或概念。 http是一个概念,http客户端或http消息不是。
湾包中的文件应包含一组相关类型,一个好的经验法则是,如果两个文件共享同一组导入,则合并它们。使用前面的示例,http/client.go
,http/server.go
是一个很好的粒度级别
℃。不要为每种类型做一个文件,这不是惯用的Go。