我有一个其他两个对象实现的结构.在这种情况下,键入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实现中使用的启动样式),那么您可能会发现它足够简洁以满足您的需求.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。