Heim > Backend-Entwicklung > Golang > Sind die leeren Schnittstellen von Go oder die Generics von Go 1.18 die wahre Implementierung generischer Funktionen?

Sind die leeren Schnittstellen von Go oder die Generics von Go 1.18 die wahre Implementierung generischer Funktionen?

Patricia Arquette
Freigeben: 2024-12-29 04:36:10
Original
314 Leute haben es durchsucht

Are Go's Empty Interfaces or Go 1.18 Generics the True Implementation of Generic Functions?

Generische Funktionen in Go: Ein umfassender Leitfaden

Beim Erkunden von Go stoßen Sie möglicherweise auf das Konzept einer leeren Benutzeroberfläche. Es ist ein leistungsstarkes Tool, das jeden Typ speichern kann und keine zusätzlichen Methoden erfordert.

Betrachten Sie dieses Beispiel:

func describe(i interface{}) {
    fmt.Printf("Type: %T | Value: %v\n", i, i)
}
Nach dem Login kopieren

Wenn Sie verschiedene Typen zur Beschreibung übergeben, werden Typ und Wert ausgegeben:

"Type: int | Value: 5" // for i := 5
"Type: string | Value: test" // for i := "test"
Nach dem Login kopieren

Ist das also Gos Art, generische Funktionen zu implementieren? Nicht ganz. Ab Go 1.18 können Sie nun echte generische Funktionen schreiben. Hier ist ein Beispiel:

package main

import (
    "fmt"
)

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

func main() {
    // Passing list of string works
    Print([]string{"Hello, ", "world\n"})

    // You can pass a list of int to the same function as well
    Print([]int{1, 2})
}
Nach dem Login kopieren

Ausgabe:

Hello, world
12
Nach dem Login kopieren

Diese generische Funktion Print kann Slices jeden Typs verarbeiten und bietet einen vielseitigeren und typsichereren Ansatz für die generische Programmierung.

Das obige ist der detaillierte Inhalt vonSind die leeren Schnittstellen von Go oder die Generics von Go 1.18 die wahre Implementierung generischer Funktionen?. 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