DeepEqual adalah relaksasi rekursif dari operator Go's ==.
DeepEqual melaporkan apakah x dan y “sama dalam,” didefinisikan sebagai berikut. Dua nilai dari jenis yang identik sangat sama jika salah satu dari kasus berikut ini berlaku. Nilai dari tipe yang berbeda tidak pernah sama dalam.
Nilai-nilai array sangat sama ketika elemen-elemen terkaitnya sangat sama.
Nilai-nilai Struct sangat sama jika bidang yang sesuai, baik yang diekspor maupun yang tidak diekspor, sangat sama.
Nilai fungsi sangat sama jika keduanya nol; kalau tidak mereka tidak sederajat.
Nilai antarmuka sangat sama jika mereka memegang nilai konkrit yang sangat sama.
Nilai peta sangat sama jika mereka adalah objek peta yang sama atau jika mereka memiliki panjang yang sama dan kunci yang sesuai (cocok dengan menggunakan kesetaraan Go) memetakan ke nilai yang sangat sama.
Nilai pointer sangat sama jika mereka sama dengan menggunakan operator Go == atau jika mereka menunjuk ke nilai yang sangat sama.
Nilai slice sangat sama ketika semua hal berikut ini benar: keduanya nihil atau keduanya bukan nihil, keduanya memiliki panjang yang sama, dan keduanya menunjuk ke entri awal yang sama dari array mendasar yang sama (yaitu, & x [0 ] == & y [0]) atau elemen yang sesuai (hingga panjang) sangat sama. Perhatikan bahwa irisan kosong non-nil dan irisan nil (misalnya, [] byte {} dan [] byte (nil)) tidak sama dalam.
Nilai lain - angka, bools, string, dan saluran - sangat sama jika mereka sama dengan menggunakan operator Go ==.
==
Operator didefinisikan dalam Go hanya beberapa jenis, jadi apalagi, pertanyaan ini juga merupakan salah satu yang sah.