Heim >Backend-Entwicklung >Golang >Verwendet Go leere Schnittstellen oder Typparameter für generische Funktionen?

Verwendet Go leere Schnittstellen oder Typparameter für generische Funktionen?

Linda Hamilton
Linda HamiltonOriginal
2025-01-01 01:21:10472Durchsuche

Does Go Use Empty Interfaces or Type Parameters for Generic Functions?

Generische Funktionen in Go

In Go findet das Konzept der generischen Funktionen seine Umsetzung durch die Verwendung einer leeren Schnittstelle. Da keine zusätzlichen Methodenimplementierungen erforderlich sind, kann eine leere Schnittstelle jede Art von Wert speichern. Dies führt zu der Frage, ob dies Gos Ansatz zur Implementierung generischer Funktionen ist oder ob es eine geeignetere Alternative gibt.

Seit Go 1.18 wurde eine modernere und explizitere Methode zur Definition generischer Funktionen eingeführt. Es nutzt Typparameter, um die Typen anzugeben, mit denen die Funktion arbeiten kann. Betrachten Sie beispielsweise die folgende generische Funktion Drucken:

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})
}

Ausgabe:

Hello, world
12

Diese Methode bietet eine sauberere und explizitere Deklaration generischer Funktionen, wodurch sie einfacher zu verstehen und zu warten sind die Codebasis.

Das obige ist der detaillierte Inhalt vonVerwendet Go leere Schnittstellen oder Typparameter für generische Funktionen?. 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