Heim > Backend-Entwicklung > Golang > Wie erreicht man eine dynamische Typrückgabe in Go?

Wie erreicht man eine dynamische Typrückgabe in Go?

Patricia Arquette
Freigeben: 2024-12-02 05:33:14
Original
636 Leute haben es durchsucht

How to Achieve Dynamic Type Return in Go?

Wie gehe ich mit dynamischer Typrückgabe in Golang um?

Szenario:

Bei der Golang Revel-Entwicklung entsteht repetitiver Code zu ähnlichen Datenrückgabetypen mit Typstruktur. Betrachten Sie die folgenden Funktionen:

func (c Helper) Brands() []*models.Brand {

    // Query rethinkdb and populate the Brand model
    var brands []*models.Brand
    rows.All(&brands)

    return brands

}

func (c Helper) BlogPosts() []*models.Post {

    // Query rethinkdb and populate the Post model
    var posts []*models.Post
    rows.All(&posts)

    return posts

}
Nach dem Login kopieren

In beiden Fällen ist der Rückgabetyp derselbe (*[]struct). Um Duplikate zu vermeiden, wird ein dynamischer Rückgabetyp-Ansatz vorgeschlagen:

func (c Helper) ReturnModels(modelName string) []*interface{} {

    // Query rethinkdb with modelName and return []*interface{}
}
Nach dem Login kopieren

Fragen:

  • Ist eine dynamische Typrückgabe möglich?
  • So implementieren Sie es es?

Antwort:

Ja, eine dynamische Typrückgabe ist möglich. Die Funktion sollte interface{} anstelle von []*interface{} zurückgeben. So kann es implementiert werden:

func (c Helper) ReturnModels(modelName string) interface{} {

    // Query rethinkdb with modelName and return interface{}
}
Nach dem Login kopieren

Um den zurückgegebenen Wert zu nutzen, werden Typschalter oder Typzusicherungen verwendet, um ihn in seinen ursprünglichen Typ zurückzusetzen:

Beispiel:

if brands, ok := ReturnModels("brands").([]Brand); ok {
    // ...
}

if posts, ok := ReturnModels("posts").([]Post); ok {
    // ...
}
Nach dem Login kopieren

Durch die Implementierung dieses Ansatzes kann die Codeduplizierung durch die Verwendung einer einzigen Hilfsfunktion für Daten erheblich reduziert werden Abruf.

Das obige ist der detaillierte Inhalt vonWie erreicht man eine dynamische Typrückgabe in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage