Heim >Backend-Entwicklung >Golang >Wie kann ich „interface{}'-Werte auf Gleichheit in Go vergleichen, insbesondere mit benutzerdefinierten Strukturen?

Wie kann ich „interface{}'-Werte auf Gleichheit in Go vergleichen, insbesondere mit benutzerdefinierten Strukturen?

Linda Hamilton
Linda HamiltonOriginal
2024-12-01 22:49:101026Durchsuche

How Can I Compare `interface{}` Values for Equality in Go, Especially with Custom Structs?

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!

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