Sobes.tech
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.