我想這樣做如下:創建一個接口,其他接口的片
type Model interface {
EntityType() string
GetKey() *datastore.Key
SetKey(*datastore.Key) error
PreSave(context.Context) error
PostSave(context.Context) error
PostLoad(context.Context) error
}
type Models []Model interface {
Prepare(int) ([]Model, error)
}
因此struct Models
也是一個接口,將由結構的片得到實現實施Model
。類似以下內容:
type Foo struct {
key *datastore.Key `datastore:"_"`
// ... other things here
}
// assume all Model interface funcs are here and valid
type Foos []Foo
func (f *Foos) Prepare (num int) ([]Model, error) {
// do the preparations for Foo slice
}
顯然,上面的代碼會引發錯誤並且不可能。但是有沒有一些代碼可以產生基本相同的功能?沒有使用reflect
或任何昂貴的東西?
你的問題還不太清楚。請澄清「很明顯,這是不可能的」的意思。 – nos
「this」表示我上面的代碼爲我拋出錯誤。編輯的問題更清晰。 – Benjam