我有一个其他两个对象实现的结构.在这种情况下,键入A和B repo.有一些初始化代码,在这里表示为省略号.初始化代码在两个构造函数之间完全重复,并且不是什么大问题,而我只有两个dbRepo,但是当我创建更多时,我会更担心不好的做法.有没有办法用界面来概括这个?
type dbRepo struct { foo string bar string } type typeARepo dbRepo type typeBRepo dbRepo func newTypeARepo(foo,bar string) { ... } func newTypeBRepo(foo,bar string) { ... }
解决方法
我个人在Go中观察到的这种做法(也是有效的Go或者Go教程入门中推荐的那种做法)就是定义一个NewdbRepo函数并将其用于所有瞬时.它的实现看起来像;
func NewdbRepo(f,b string) *dbRepo { return &dbRepo{ foo:f,bar:b} }
您无法像在大多数C语言中那样实际定义构造函数,因此您只需提供一个包作用域的方法来为您构建.此外,如果您没有使用复合文字(我在NewdbRepo实现中使用的启动样式),那么您可能会发现它足够简洁以满足您的需求.