Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana Anda Menguji Kesetaraan Peta di Golang?

Bagaimana Anda Menguji Kesetaraan Peta di Golang?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-17 06:31:03719semak imbas

How Do You Test the Equivalence of Maps in Golang?

Ujian Kesetaraan Peta di Golang

Dalam ujian dipacu jadual, adalah penting untuk menegaskan kesamaan dua peta. Walaupun pelaksanaan tersuai dan penukaran rentetan boleh menyusahkan, Golang menawarkan penyelesaian terbina dalam.

Menggunakan reflect.DeepEqual

Pakej reflect menyediakan fungsi DeepEqual yang membandingkan nilai secara rekursif, termasuk peta. Ia menyemak:

  • Nilai sifar
  • Panjang peta
  • Pasangan nilai kunci
import "reflect"

eq := reflect.DeepEqual(m1, m2)

Perbandingan komprehensif ini memastikan kesaksamaan yang tepat ujian untuk peta daripada sebarang jenis (cth., map[string]bool, map[struct{}]antara muka{}). Ambil perhatian bahawa ia memerlukan jenis antara muka sebagai argumen.

Butiran Pelaksanaan

Kod sumber untuk reflect.DeepEqual's Map case mendedahkan:

if p, ok := v1.(reflect.Map); ok && q, ok := v2.(reflect.Map) {
    if p.Len() != q.Len() {
        return false
    }
    for _, k := range p.Keys() {
        if !q.Has(k) || !DeepEqual(p.Elem(k).Interface(), q.Elem(k).Interface()) {
            return false
        }
    }
    return true
}

Ia mengesahkan nilai nol, panjang peta , dan pasangan nilai kunci. Dengan menghantar jenis antara muka, ia memastikan keserasian dengan pelbagai pelaksanaan peta.

Kesimpulan

Menggunakan reflect.DeepEqual untuk menguji kesamaan peta di Golang ialah penyelesaian idiomatik dan cekap. Ia mengendalikan semua kes tepi dan memastikan perbandingan yang tepat untuk sebarang jenis peta. Ini memudahkan ujian dipacu jadual dan meningkatkan kebolehpercayaan kod anda.

Atas ialah kandungan terperinci Bagaimana Anda Menguji Kesetaraan Peta di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn