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, трябва да реализирате собствена функция за сравнение, която преминава през елементите и ги сравнява поотделно.