DeepEqual ist eine rekursive Entspannung des Operators == von Go.
DeepEqual gibt an, ob x und y "zutiefst gleich" sind, wie folgt definiert. Zwei Werte identischen Typs sind zutiefst gleich, wenn einer der folgenden Fälle zutrifft. Werte unterschiedlicher Typen sind niemals zutiefst gleich.
Array-Werte sind tief gleich, wenn ihre entsprechenden Elemente tief gleich sind.
Strukturwerte sind zutiefst gleich, wenn die entsprechenden Felder, sowohl exportiert als auch nicht exportiert, sehr gleich sind.
Funktionswerte sind zutiefst gleich, wenn beide Null sind; sonst sind sie nicht zutiefst gleich.
Schnittstellenwerte sind zutiefst gleich, wenn sie zutiefst gleiche konkrete Werte enthalten.
Kartenwerte sind zutiefst gleich, wenn sie dasselbe Kartenobjekt sind oder wenn sie dieselbe Länge haben und ihre entsprechenden Schlüssel (mit Go-Gleichheit abgeglichen) sehr gleichen Werten zugeordnet sind.
Zeigerwerte sind zutiefst gleich, wenn sie mit dem Operator == von Go gleich sind oder wenn sie auf tief gleiche Werte verweisen.
Slice-Werte sind zutiefst gleich, wenn alle der folgenden Bedingungen erfüllt sind: Sie sind beide null oder beide nicht null, sie haben dieselbe Länge und entweder zeigen sie auf denselben Anfangseintrag desselben zugrunde liegenden Arrays (dh & x [0) ] == & y [0]) oder ihre entsprechenden Elemente (bis zur Länge) sind zutiefst gleich. Beachten Sie, dass ein nicht-Null-Leer-Slice und ein Null-Slice (z. B. [] Byte {} und [] Byte (Null)) nicht tief gleich sind.
Andere Werte - Zahlen, Bools, Strings und Kanäle - sind zutiefst gleich, wenn sie mit dem Operator == von Go gleich sind.
==
Operator ist in Go nur für einige Typen definiert, daher ist diese Frage auch legitim.