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.
Schnittstellenwerte sind vergleichbar. Zwei Schnittstellenwerte gelten als gleich, wenn:
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.
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.
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!