Bagaimana Anda Menguji Kesetaraan Peta di Golang?

Mary-Kate Olsen
Lepaskan: 2024-11-17 06:31:03
asal
721 orang telah melayarinya

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)
Salin selepas log masuk

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
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan