Heim >Backend-Entwicklung >Golang >Wie vergleicht Go Interface{}-Werte, einschließlich Strukturen?

Wie vergleicht Go Interface{}-Werte, einschließlich Strukturen?

DDD
DDDOriginal
2024-12-03 10:34:11519Durchsuche

How Does Go Compare Interface{} Values, Including Structs?

Interface{}-Werte vergleichen

In Go können die Gleichheitsoperatoren (== und !=) zum Vergleichen von Interface{}-Werten verwendet werden. Da Schnittstellen{}-Werte jedoch Werte unterschiedlichen Typs enthalten können, ist es wichtig zu verstehen, wie diese Werte verglichen werden.

Gleichheit der Schnittstellenwerte

Schnittstellenwerte sind vergleichbar. Zwei Schnittstellenwerte gelten als gleich, wenn:

  • Sie identische dynamische Typen und gleiche dynamische Werte haben oder
  • Beide haben den Wert Null.

Gleichheit von Schnittstellenwerten mit Strukturen

Für den Fall, dass Schnittstellen{}-Werte benutzerdefinierte Strukturwerte enthalten, gelten die Vergleichsregeln von Go. Strukturwerte gelten als vergleichbar, wenn alle ihre Felder vergleichbar sind. Zwei Strukturwerte gelten als gleich, wenn ihre nicht leeren Felder gleiche Werte haben.

Codebeispiel

Betrachten Sie den folgenden Codeausschnitt:

type MyStruct struct {
    Field1 int
    Field2 string
}

var A = []interface{}{}
v := MyStruct{1, "Test"}

for _, i := range A {
    if i == v {
        fmt.Println("Gotcha!")
        break
    }
}

In diesem Beispiel ist der Der ==-Operator wird verwendet, um einen Interface{}-Wert (v) mit Werten in einem Slice von Interface{} (A) zu vergleichen. Da MyStruct-Werte vergleichbar sind, gibt der Vergleich „true“ zurück, wenn die entsprechenden Felder in v und die Elemente in A gleich sind.

Schlussfolgerung

Durch Verständnis der Go-Gleichheitsregeln für Interface{}-Werte und -Strukturen können Entwickler diese Werte sicher in ihrem Code vergleichen. Das klare und flexible System von Go stellt sicher, dass Gleichheitsprüfungen wie erwartet funktionieren, unabhängig von den zugrunde liegenden Datentypen.

Das obige ist der detaillierte Inhalt vonWie vergleicht Go Interface{}-Werte, einschließlich 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