- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一个由另外两个对象实现的结构。在这种情况下,typeA 和 B repo 。有一些初始化代码,在这里用省略号表示。初始化代码在两个构造函数之间完全重复,当我只有两个 dbRepo
时这没什么大不了的,但随着我创建更多,我会更加担心不良做法。有什么方法可以用接口(interface)概括它吗?
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 实现中使用的初始化样式),那么您可能会发现它本身就足够简洁,足以满足您的需求。
关于Golang struct 构造通用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29685755/
我想使用JOGL图书馆,我想在linux和windows上使用它......在linux上编译的项目可以在windows上运行吗?如果我想为 Windows 编译它,我是否必须更改包含的库? 问候,彼
在用 C++ 实现一个简单的玩具事件循环时,我遇到了一个问题。我有一个接口(interface)(抽象类)Event它由不同类型的事件(键盘、异步调用……)实现。在我的示例中 SomeEvent是Ev
这些列表之间有什么区别。 ArrayList test = new ArrayList(); ArrayList test2= new ArrayList(); 或者在这两类之间。 class tes
对于我的 JavaFX UI,我实现了一个类 ObservableProperties延伸 java.util.Properties并能够监听某些属性的变化(特别是 UI 的本地化文本)。 它工作得很
我是一名优秀的程序员,十分优秀!