Junior — Middle
Je možné porovnať dva úseky poľa alebo zoznamu medzi sebou?
sobes.tech AI
Odpoveď od AI
V jazyku Go nie je možné priamo porovnávať dva rezy (slice) pomocou operátora ==, okrem porovnania s nil. Na porovnanie obsahu rezu je potrebné napísať vlastnú funkciu alebo použiť balík reflect.
Príklad funkcie na porovnanie dvoch rezu celých čísel:
func slicesEqual(a, b []int) bool {
if len(a) != len b {
return false
}
for i := range a {
if a[i] != b[i] {
return false
}
}
return true
}
Tiež môžete použiť reflect.DeepEqual(a, b), ale je to menej efektívne a vhodné pre všeobecné prípady.
Porovnanie rezu je teda možné, ale vyžaduje explicitnú implementáciu porovnania prvkov.