Sobes.tech
Junior — Middle

Kas on võimalik võrrelda kahe massiivi või nimekirja lõiku omavahel?

sobes.tech AI

Vastus AI-lt

Go keeles ei ole võimalik otse võrrelda kahte viilu (slice) == operaatoriga, välja arvatud võrdlus nil-iga. Viilude sisu võrdlemiseks tuleb kirjutada oma funktsioon või kasutada reflect paketti.

Näide funktsioonist, mis võrdleb kahte täisarvude viilu:

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
}

Samuti saab kasutada reflect.DeepEqual(a, b), kuid see on vähem tõhus ja sobib üldjuhtudel.

Seega on viilude võrdlemine võimalik, kuid nõuab elementide võrdlemise selget rakendamist.