DeepEqual - это рекурсивная релаксация оператора Go's ==.
DeepEqual сообщает, являются ли x и y «глубоко равными», определяется следующим образом. Два значения одинакового типа глубоко равны, если применяется один из следующих случаев. Значения различных типов никогда не бывают глубоко равными.
Значения массива глубоко равны, когда их соответствующие элементы глубоко равны.
Значения структуры глубоко равны, если их соответствующие поля, как экспортированные, так и не экспортированные, глубоко совпадают.
Значения Func глубоко равны, если оба равны нулю; в противном случае они не глубоко равны.
Значения интерфейса глубоко равны, если они содержат глубоко равные конкретные значения.
Значения карты глубоко равны, если они являются одним и тем же объектом карты или имеют одинаковую длину, и их соответствующие ключи (соответствующие с помощью равенства Go) отображаются на глубоко равные значения.
Значения указателя глубоко равны, если они равны с помощью оператора Go's == или если они указывают на глубоко равные значения.
Значения среза глубоко равны, когда все из следующих условий являются истинными: они оба равны нулю или оба не равны нулю, имеют одинаковую длину и либо указывают на одну и ту же начальную запись одного и того же базового массива (то есть & x [0 ] == & y [0]) или соответствующие им элементы (вплоть до длины) глубоко равны. Обратите внимание, что ненулевой пустой слайс и нулевой слайс (например, [] byte {} и [] byte (nil)) не являются глубоко равными.
Другие значения - числа, числа, строки и каналы - очень равны, если они равны с помощью оператора Go ==.
==
Оператор определен в Go только для некоторых типов, поэтому , кроме того, этот вопрос также является законным.