Heim >Backend-Entwicklung >Golang >Wie kann ich „interface{}'-Werte auf Gleichheit in Go vergleichen, insbesondere mit benutzerdefinierten Strukturen?
Gleichheitsprüfung für Schnittstelle{}
In Go kann der Vergleich von Schnittstellen{}-Werten etwas schwierig sein, insbesondere wenn es um benutzerdefinierte Strukturen geht . Ziel dieses Artikels ist es, diesen Aspekt zu beleuchten und eine prägnante und umfassende Antwort auf die folgende Frage zu geben:
Wie überprüfe ich effektiv die Gleichheit von Schnittstellen{}-Werten, insbesondere in Fällen, in denen es um benutzerdefinierte Werte geht? Strukturen?
Interface{} Gleichheit
Erstens ist es wichtig zu verstehen Diese Interface{}-Werte unterstützen den Gleichheitsvergleich. Zwei interface{}-Werte sind gleich, wenn sie identische dynamische Typen und gleiche dynamische Werte haben oder wenn beide einen Nullwert haben.
Strukturen und Schnittstellen
Beim Vergleich von a Wenn Sie einen Strukturwert mit einem Interface{}-Wert vergleichen, gilt die Gleichheit nur dann, wenn die Werte des Typs der Struktur vergleichbar sind und die Struktur die Schnittstelle implementiert. Darüber hinaus muss der dynamische Typ der Struktur mit dem dynamischen Typ der Schnittstelle übereinstimmen und ihr dynamischer Wert muss gleich dem dynamischen Wert der Schnittstelle sein.
Beispiel
Betrachten wir ein Beispiel dafür Veranschaulichen Sie dieses Verhalten:
type MyStruct struct { Name string Age int } var v interface{} = MyStruct{Name: "John", Age: 30} var A = []interface{}{MyStruct{Name: "Alice", Age: 25}, MyStruct{Name: "Bob", Age: 35}} for i := 0; i < len(A); i++ { if A[i] == v { fmt.Println("Found") break } }
In diesem Szenario ist die Gleichheitsprüfung zwischen A[i] und v erfolgreich, da beide Werte vorliegen sind vom Typ MyStruct mit identischen Feldern.
Fazit
Die Gleichheitsprüfung in Go wird überschaubar, sobald Sie die Konzepte der Interface{}-Gleichheit und die Beziehung zwischen Strukturen und Schnittstellen verstanden haben . Wenn Sie diese Prinzipien verstehen, können Sie Interface{}-Werte, einschließlich benutzerdefinierter Strukturen, effektiv und zuverlässig vergleichen.
Das obige ist der detaillierte Inhalt vonWie kann ich „interface{}'-Werte auf Gleichheit in Go vergleichen, insbesondere mit benutzerdefinierten Strukturen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!