DeepEqual, Go'nun == operatörünün yinelemeli bir gevşemesidir.
DeepEqual, x ve y'nin “derinden eşit” olup olmadığını bildirir ve aşağıdaki gibi tanımlanır. Aşağıdaki durumlardan biri geçerliyse, aynı türdeki iki değer tamamen eşittir. Farklı türlerin değerleri asla derinden eşit değildir.
Dizi değerleri, karşılık gelen öğeleri derin eşit olduğunda eşittir.
Yapı değerleri, hem dışa aktarılan hem de dışa aktarılan karşılık gelen alanları derinden eşitse, derinden eşittir.
Her ikisi de sıfırsa işlev değerleri derinden eşittir; aksi halde derinden eşit değildirler.
Arayüz değerleri, derinden eşit beton değerlerine sahiplerse derinden eşittir.
Eşleme değerleri aynı eşleme nesnesi olmaları veya aynı uzunluklara sahip olmaları ve karşılık gelen anahtarları (Git eşitliği kullanılarak eşleştirildikleri) eşleme değerleriyle eşleştirmek için eşleme değerleri çok eşittir.
İşaretçi değerleri, Go'nun == işleci kullanılarak eşitse veya derinden eşit değerlere işaret ediyorsa eşittir.
Aşağıdakilerin tümü doğru olduğunda dilim değerleri derinden eşittir: her ikisi de nil veya her ikisi de nil değil, aynı uzunluğa sahipler ve ya aynı temel dizinin aynı ilk girişini gösteriyorlar (yani, & x [0) ] == & y [0]) veya karşılık gelen öğeleri (en fazla) derinden eşittir. Sıfır olmayan boş bir dilim ile sıfır dilim (örneğin, [] byte {} ve [] byte (nil)) derinden eşit değildir.
Diğer değerler - sayılar, bools, dizeler ve kanallar - Go'nun == işleci kullanılarak eşitlerse derinden eşittir.
==
Operatör böylece dahası, bu soru da meşru bir tanesidir, sadece bazı türleri için Go tanımlanmıştır.