Senior
Hogyan hasonlítjuk össze a térképen lévő elemeket? Hogyan ellenőrizzük, hogy két térkép egyezik-e?
sobes.tech MI
Válasz az MI-től
Go nyelvben a térképek közvetlen összehasonlítása a == operátorral nem lehetséges, kivéve a nil-lel való összehasonlítást. Annak ellenőrzéséhez, hogy két térkép egyezik-e kulcsokban és értékekben, manuálisan kell összehasonlítani őket.
Példa egy függvényre, amely két map[string]int-t hasonlít össze:
func mapsEqual(a, b map[string]int) bool {
if len(a) != len(b) {
return false
}
for k, v := range a {
if bv, ok := b[k]; !ok || bv != v {
return false
}
}
return true
}
A térkép belsejében lévő elemek összehasonlásához figyelembe kell venni az érték típusát. Ha az értékek összetett struktúrák, akkor rekurzív összehasonlítás vagy a reflect.DeepEqual csomag használata szükséges:
import "reflect"
func mapsEqualGeneric(a, b map[string]interface{}) bool {
if len(a) != len(b) {
return false
}
for k, v := range a {
bv, ok := b[k]
if !ok || !reflect.DeepEqual(v, bv) {
return false
}
}
return true
}
Ezért, két térkép egyezőségét az alábbi módon lehet ellenőrizni:
- Ellenőrizze a hosszúság egyezőségét.
- Minden kulcs esetében ellenőrizze a létezést és az értékek egyezőségét.
Ez egy univerzális megközelítés a térképek összehasonlítására Go nyelven.