Wie implementiert man eine Funktionsüberladung in Golang?

WBOY
Freigeben: 2024-04-29 17:21:01
Original
460 Leute haben es durchsucht

Die Go-Sprache unterstützt keine herkömmliche Funktionsüberladung, aber ähnliche Effekte können erzielt werden durch: Verwendung benannter Funktionen: Erstellen eindeutiger Namen für Funktionen mit unterschiedlichen Parametern oder Rückgabetypen mithilfe von Generika (Go 1.18 und höher): Erstellen eindeutiger Namen für verschiedene Typen von Parametern Eine einzelne Version der Funktion.

Wie implementiert man eine Funktionsüberladung in Golang?

Golang-Funktionsüberladungsimplementierung

In Golang wird Funktionsüberladung im herkömmlichen Sinne nicht unterstützt, d. h. derselbe Funktionsname hat mehrere Versionen mit unterschiedlichen Parameterlisten oder Rückgabetypen. Wir können jedoch etwas Ähnliches wie das Überladen von Funktionen erreichen, indem wir:

1 benannte Funktionen verwenden.

Wir können eindeutige Namen für Funktionen mit unterschiedlichen Parameterlisten oder Rückgabetypen erstellen, zum Beispiel:

func Sum(a, b int) int {
    return a + b
}

func SumFloat(a, b float64) float64 {
    return a + b
}
Nach dem Login kopieren

2. >= Go 1.18)

Go 1.18 führte Generika ein, die es uns ermöglichen, zur Kompilierungszeit eine einzelne Version einer Funktion für verschiedene Arten von Argumenten zu erstellen. Zum Beispiel:

func Sum[T numeric](a, b T) T {
    return a + b
}
Nach dem Login kopieren

Praktischer Fall

Angenommen, wir müssen zwei Funktionen zur Berechnung der Länge erstellen, eine Funktion wird zur Berechnung der Zeichenfolgenlänge und die andere Funktion zur Berechnung der Array-Länge verwendet.

Verwenden Sie benannte Funktionen

func StringLength(str string) int {
    return len(str)
}

func ArrayLength(arr []int) int {
    return len(arr)
}
Nach dem Login kopieren

Verwenden Sie Generika (>= Go 1.18)

func Length[T any](data T) int {
    return len(data)
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie implementiert man eine Funktionsüberladung in Golang?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage