Sobes.tech
Junior — Middle

Kas on võimalik võrrelda erinevaid andmestruktuure?

sobes.tech AI

Vastus AI-lt

Go keeles saab andmestruktuureid võrrelda, kui kõik nende väljad on võrreldavad. Näiteks, struktuure, mis koosnevad põhiliikidest (int, string, bool jne), saab otse võrrelda == operaatoriga.

Kuid, kui struktuur sisaldab välju, mida ei saa võrrelda (näiteks slices, kaardid, funktsioonid), siis otsene struktuuri võrdlus põhjustab kompileerimisvea.

Näide struktuuride võrdlusest:

package main
import "fmt"

type Person struct {
    Name string
    Age  int
}

func main() {
    p1 := Person{Name: "Alice", Age: 30}
    p2 := Person{Name: "Alice", Age: 30}
    p3 := Person{Name: "Bob", Age: 25}

    fmt.Println(p1 == p2) // true
    fmt.Println(p1 == p3) // false
}

Kui struktuur sisaldab välju, mida ei saa võrrelda, siis tuleb kirjutada oma võrdlusfunktsioon, mis läbib elemendid ja võrdleb neid üksikult.