Wie können Sie generische Programmierung mit variadischen Funktionen in Go erreichen?

Barbara Streisand
Freigeben: 2024-10-26 12:21:29
Original
795 Leute haben es durchsucht

How Can You Achieve Generic Programming with Variadic Functions in Go?

Generische Programmierung mit variadischen Funktionen in Go

Trotz des Fehlens von Vorlagen oder der Funktionsüberladung in Go ist es möglich, ein gewisses Maß an generischer Programmierung für variadische Funktionen zu erreichen.

Berücksichtigen Sie die folgenden redundanten Codeausschnitte:

<code class="go">func (this Document) GetString(name string, defaults ...string) string {
    v, ok := this.GetValueFromDb(name)
    if !ok {
        if len(defaults) >= 1 {
            return defaults[0]
        } else {
            return ""
        }
    }
    return v.asString
}

func (this Document) GetInt(name string, defaults ...int) int {
    v, ok := this.GetValueFromDb(name)
    if !ok {
        if len(defaults) >= 1 {
            return defaults[0]
        } else {
            return 0
        }
    }
    return v.asInt
}</code>
Nach dem Login kopieren

Um diese Redundanz zu beseitigen, können wir den Typ interface{} verwenden:

<code class="go">func (this Document) Get(name string, defaults ...interface{}) interface{} {
    v, ok := this.GetValueFromDb(name)
    if !ok {
        if len(defaults) >= 1 {
            return defaults[0]
        } else {
            return nil
        }
    }
    return v
}</code>
Nach dem Login kopieren

Diese allgemeine Funktion kann dann mit Typ verwendet werden Behauptung im Client-Code:

<code class="go">value := document.Get("index", 1).(int)  // Panics if the value is not an int</code>
Nach dem Login kopieren

oder

<code class="go">value, ok := document.Get("index", 1).(int)  // `ok` is false if the value is not an int</code>
Nach dem Login kopieren

Dieser Ansatz führt jedoch zu einem Laufzeit-Overhead. In manchen Fällen kann es effizienter sein, die einzelnen Funktionen beizubehalten und eine Umstrukturierung des Codes in Betracht zu ziehen.

Das obige ist der detaillierte Inhalt vonWie können Sie generische Programmierung mit variadischen Funktionen in Go erreichen?. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!