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.