Sobes.tech
Junior — Middle

Կարո՞ղ է տարբեր տվյալների կառուցվածքները համեմատել։

sobes.tech AI

Պատասխան AI-ից

Go-ում դուք կարող եք համեմատել տվյալների կառուցվածքները, եթե բոլոր նրանց դաշտերը համեմատելի են: Օրինակ, այն կառուցվածքները, որոնք բաղկացած են հիմնական տիպերից (int, string, bool և այլն), կարող են ուղղակի համեմատվել == օպերատորով:

Այնուամենայնիվ, եթե կառուցվածքը պարունակում է դաշտեր, որոնք չեն համեմատվում (օրինակ, slices, քարտեր, ֆունկցիաներ), ապա կառուցվածքի ուղղակի համեմատությունը կհանգեցնի կոդի սխալի:

Նմուշ կառուցվածքների համեմատության:

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
}

Եթե կառուցվածքը պարունակում է այնպիսի դաշտեր, որոնք չեն համեմատվում, օրինակ slices, ապա անհրաժեշտ է գրել սեփական համեմատական ֆունկցիա, որը կանցնի տարրերով և կհամեմատի նրանց մեկ առ մեկ։