DeepEqual - рекурсивна релаксація оператора Go ==.
DeepEqual повідомляє, чи x і y "глибоко рівні", визначаються наступним чином. Два значення однакового типу глибоко рівні, якщо застосовується один із наступних випадків. Значення різних типів ніколи не є глибоко рівними.
Значення масиву глибоко рівні, коли їх відповідні елементи глибоко рівні.
Значення структури глибоко рівні, якщо відповідні їм поля, як експортовані, так і неекспортовані, глибоко рівні.
Значення функцій глибоко рівні, якщо обидва є нульовими; інакше вони не є глибоко рівними.
Значення інтерфейсу глибоко рівні, якщо вони мають глибоко рівні конкретні значення.
Значення карт глибоко рівні, якщо вони є одним і тим же об'єктом карти або якщо вони мають однакову довжину, а їхні відповідні ключі (відповідні за допомогою Go рівності) відображають на глибоко рівні значення.
Значення вказівника глибоко рівні, якщо вони рівні за допомогою оператора Go == або якщо вони вказують на глибоко рівні значення.
Значення зрізів глибоко рівні, коли всі наведені нижче дані є істинними: вони обоє нульові, або обидва ненульові, мають однакову довжину, або вони вказують на один і той же початковий запис того ж базового масиву (тобто & x [0 ] == & y [0]) або їх відповідні елементи (до довжини) глибоко рівні. Зауважте, що порожній зріз, який не є нульовим, і нульовий фрагмент (наприклад, [] байт {} і [] байт (нуль)) не є глибоко рівними.
Інші значення - числа, булі, рядки та канали - глибоко рівні, якщо вони рівні, використовуючи оператор Go's ==.
==
Оператор визначено в Go тільки для деяких типів, тому , крім того, це питання також є законним.