Heim >Backend-Entwicklung >Golang >Wie gehe ich mit der Rückgabe von Nullwerten für generische Typen in Go um?

Wie gehe ich mit der Rückgabe von Nullwerten für generische Typen in Go um?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-31 16:05:11172Durchsuche

How to Handle Returning Nil Values for Generic Types in Go?

Standardwerte für generische Typen zurückgeben

In Go erscheint beim Versuch die Anweisung „Nil kann nicht als T-Wert in der Rückgabeanweisung verwendet werden“. Gibt Null für einen generischen Typ zurück. Dies liegt daran, dass Null nicht für alle Typen ein gültiger Wert ist. Zum Beispiel im bereitgestellten Code:

func (list *mylist[T]) pop() T {...}
func (list *mylist[T]) getfirst() T {...}

Wenn T vom Typ int ist, gibt es keinen sinnvollen Nullwert. Ebenso ist Null für Strukturen kein gültiger Wert.

Stattdessen sollten Sie den Nullwert für den angegebenen Typ verwenden. Der Nullwert ist:

  • Null für Zeiger und Slices
  • "" für Strings
  • 0 für Ganzzahlen und Gleitkommazahlen

So können Sie den Nullwert mit einer generischen Funktion zurückgeben:

func getZero[T any]() T {
    var result T
    return result
}

Diese Funktion gibt den zurück Nullwert für jeden Typ, der als Typargument verwendet wird.

Das Testen der Funktion liefert die folgenden Ergebnisse:

int 0
string ""
image.Point (0,0)
*float64 nil

Wie Sie sehen können, werden für verschiedene Typen entsprechende Nullwerte zurückgegeben, was eine sinnvoller Standardwert für generische Funktionen und Typen.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit der Rückgabe von Nullwerten für generische Typen in Go um?. 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