Heim >Backend-Entwicklung >Golang >Wie können Generics in Go 1.18 das Problem der Erstellung typisierter Werte lösen, ohne dass es zu Programmabstürzen kommt?
So nutzen Sie Generics in Go 1.18 zum Erstellen typisierter Werte
In der Go-Programmierung ermöglichen Generics die Erstellung von Code, der mit verschiedenen Typen arbeitet ohne dass explizite Umwandlungen oder Typzusicherungen erforderlich sind. In diesem Artikel wird untersucht, wie Sie Generics in Go 1.18 verwenden, um neue Objekte mit typisierten Werten zu erstellen.
Hintergrund: Fruit Factory-Beispiel
Betrachten Sie das folgende vereinfachte „Fruit Factory“-Beispiel das versucht, generisch neue Instanzen von Früchten zu erstellen:
type FruitFactory[T any] struct{} func (f FruitFactory[T]) Create() *T { // How do we create a non-nil fruit here? // Returning nil crashes the example. return nil } type Apple struct { color string }
In diesem Beispiel besteht die Aufgabe darin, die Funktion „Erstellen“ abzuschließen Erstellen Sie eine neue Instanz vom Typ T (d. h. *Apple im Fall des Apple-Typs). Die einfache Rückgabe von Null reicht jedoch nicht aus und führt zum Absturz des Programms, wenn auf die Eigenschaften des Objekts zugegriffen wird.
Lösung: Typisierte Objekte erstellen
Es gibt zwei primäre Möglichkeiten, ein Objekt zu erstellen Neue Instanz eines typisierten Werts mit Generika in Go 1.18:
func (f FruitFactory[T]) Create() *T { var a T return &a }
func (f FruitFactory[T]) Create() *T { return new(T) }
Diese Lösungen ermöglichen es der Funktion, einen Nicht-Zeigerwert zu erstellen (a oder new(T)) und konvertieren Sie ihn bei Bedarf in einen Zeigertyp, indem Sie seine Adresse (&a) zurückgeben.
Beispielimplementierung
Im „ Beispiel „Fruit Factory“:
func (f FruitFactory[T]) Create() *T { var a T return &a } func example() { appleFactory := FruitFactory[Apple]{} apple := appleFactory.Create() apple.color = "red" // No panic now }
Diese Modifikation ermöglicht die Erstellung eines neuen Apple-Objekts und das Festlegen seiner Eigenschaften, ohne dass eine Segmentierung auftritt Fehler.
Fazit
Mit Generika in Go 1.18 wird die Programmierung mit typisierten Werten erheblich vereinfacht. Durch die Nutzung der deklarativen Zuweisung oder des Schlüsselworts new ist es möglich, nahtlos neue Instanzen jeglichen Typs zu erstellen, wodurch die Notwendigkeit einer manuellen Umwandlung und fehleranfälliger Typzusicherungen entfällt.
Das obige ist der detaillierte Inhalt vonWie können Generics in Go 1.18 das Problem der Erstellung typisierter Werte lösen, ohne dass es zu Programmabstürzen kommt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!