Mah*_*oni 4 inheritance struct interface go
如何在结构中嵌入两种类型的同名?例如:
type datastore {
*sql.Store
*file.Store
}
Run Code Online (Sandbox Code Playgroud)
结果在duplicate field Store. 我知道这是有道理的,因为您将无法引用嵌入式字段,ds.Store但无论如何您如何完成此操作?
澄清一下,我想用datastore. 为此,需要两个结构体,因为它们的方法相互补充以创建接口。我有什么替代品?
使用类型别名,例如:
type sqlStore = sql.Store // this is a type alias
type datastore {
*sqlStore
*file.Store
}
Run Code Online (Sandbox Code Playgroud)
类型别名不会创建与创建它的类型不同的新的不同类型。它只是sqlStore为由 表示的类型引入了一个别名,一种替代拼写sql.Store。
您可以尝试首先将您的包装whatever.Store成不同名称的类型:
import (
"os"
"whatever/sql"
)
type SqlStore struct {
*sql.Store
}
type FileStore struct {
*os.File
}
type DataStore struct {
SqlStore
FileStore
}
Run Code Online (Sandbox Code Playgroud)
请注意,Go 1.9 可能会获得对类型别名的支持:请参阅this和this。我不确定这对你的情况有帮助,但了解一下可能会很有趣。