Heim >Backend-Entwicklung >Golang >Wie ermöglichen Generics echte generische Funktionen in Go?

Wie ermöglichen Generics echte generische Funktionen in Go?

DDD
DDDOriginal
2024-12-18 15:08:13412Durchsuche

How Do Generics Enable True Generic Functions in Go?

Generische Funktionen in Go

Schnittstellentypen in Go können jeden Typ enthalten, ohne dass implementierte Methoden erforderlich sind, wodurch der Eindruck entsteht, dass sie als dienen Form generischer Funktionen. Dies ist jedoch nicht der Fall. Echte generische Funktionen, bei denen der Typ zur Kompilierzeit unbekannt ist, wurden in Go vor Version 1.18 nicht unterstützt.

In Go 1.18 wurden Generika eingeführt, die die Erstellung generischer Funktionen ermöglichten. Eine generische Funktion kann mit dem Schlüsselwort func gefolgt von in eckigen Klammern eingeschlossenen Typparametern definiert werden. Die Typparameter geben die von der generischen Funktion akzeptierten Typen an. Zum Beispiel:

func Print[T any](s []T) {
    for _, v := range s {
        fmt.Print(v)
    }
}

In diesem Beispiel ist T ein Typparameter, der jeden Typ darstellen kann. Die Funktion Print akzeptiert ein Slice vom Typ []T und druckt die Elemente des Slice.

Um die generische Funktion zu verwenden, können Sie ein Slice des gewünschten Typs als Argument übergeben:

// Passing a list of strings
Print([]string{"Hello, ", "world\n"})

// Passing a list of integers
Print([]int{1, 2})

Die Ausgabe des Programms wird sein:

Hello, world
12

Generische Funktionen bieten eine prägnante und sichere Möglichkeit, Code zu schreiben, der auf verschiedenen Typen ohne funktionieren kann Einbußen bei der Typensicherheit.

Das obige ist der detaillierte Inhalt vonWie ermöglichen Generics echte generische Funktionen in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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