Ich mag würde so etwas wie die folgenden Funktionen ausführen:eine Schnittstelle erstellen, die eine Scheibe eine andere Schnittstelle ist
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)
}
Damit die Struktur Models
ist auch eine Schnittstelle und durch eine Scheibe der structs bekommen umgesetzt würden das implementieren Model
. Etwa wie folgt:
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
}
Offensichtlich wirft der obige Code Fehler und ist nicht möglich. Aber gibt es einen Code, der im Prinzip die gleiche Funktionalität erzeugt? Ohne reflect
oder etwas teures so zu verwenden?
Ihre Frage ist ziemlich unklar. Bitte klären Sie, was "dies" in "Offensichtlich ist das nicht möglich" bedeutet. – nos
"dies" bedeutet, dass der Code, den ich oben habe, Fehler für mich warf. Frage bearbeitet, um klarer zu sein. – Benjam