DeepEqual est une relaxation récursive de l'opérateur == de Go.
DeepEqual indique si x et y sont «profondément égaux», définis comme suit. Deux valeurs de type identique sont profondément égales si l'un des cas suivants s'applique. Les valeurs de types distincts ne sont jamais profondément égales.
Les valeurs de tableau sont profondément égales lorsque leurs éléments correspondants sont profondément égaux.
Les valeurs de structure sont profondément égales si leurs champs correspondants, à la fois exportés et non exportés, sont profondément égaux.
Les valeurs de Func sont profondément égales si les deux sont nulles; sinon, ils ne sont pas profondément égaux.
Les valeurs d'interface sont profondément égales si elles contiennent des valeurs concrètes profondément égales.
Les valeurs de carte sont profondément égales si elles sont le même objet de carte ou si elles ont la même longueur et leurs clés correspondantes (appariées en utilisant l'égalité Go) correspondent à des valeurs profondément égales.
Les valeurs du pointeur sont profondément égales si elles sont égales à l'aide de l'opérateur Go == ou si elles pointent vers des valeurs profondément égales.
Les valeurs de tranche sont profondément égales lorsque toutes les conditions suivantes sont vraies: elles sont toutes les deux nulles ou non nulles, elles ont la même longueur, et soit elles pointent vers la même entrée initiale du même tableau sous-jacent (c'est-à-dire, & x [0 ] == & y [0]) ou leurs éléments correspondants (jusqu'à la longueur) sont profondément égaux. Notez qu'une tranche vide non nulle et une tranche nulle (par exemple, [] octet {} et [] octet (nul)) ne sont pas profondément égales.
D'autres valeurs - nombres, bools, chaînes et canaux - sont profondément égales si elles sont égales en utilisant l'opérateur == de Go.
==
opérateur n'est défini dans Go que pour certains types, de plus, cette question est également légitime.