Schnelle Erkennung leerer Werte durch Reflexion in Go
Beim Umgang mit Schnittstellen, die int, string, bool oder andere Werte speichern, ist dies der Fall Dies ist häufig erforderlich, um festzustellen, ob der gespeicherte Wert nicht initialisiert ist. Dies bedeutet, dass überprüft wird, ob es einem der folgenden Werte entspricht:
Lösung:
Um dies in Go effizient zu überprüfen, können Sie Reflection und die Funktion „reflect.Zero()“ verwenden:
func IsZeroOfUnderlyingType(x interface{}) bool { return x == reflect.Zero(reflect.TypeOf(x)).Interface() }
Erklärung:
Hinweis:
Die ursprüngliche Lösung verwendete == zum Vergleich, was möglicherweise nicht für Typen funktioniert, die nicht vergleichbar sind. Um eine universelle Kompatibilität sicherzustellen, können Sie stattdessen „reflect.DeepEqual()“ verwenden:
func IsZeroOfUnderlyingType(x interface{}) bool { return reflect.DeepEqual(x, reflect.Zero(reflect.TypeOf(x)).Interface()) }
Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von Reflection schnell leere Werte in Go-Schnittstellen erkennen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!