Сравнение в Go
Две структуры равны, когда совпадают все их поля.
Оператор == сравнивает поля по очереди;
результат true только если каждое поле
парное равно. Это работает, когда тип каждого
поля сам допускает сравнение на равенство.
Сравним двух пользователей с одинаковыми данными и с разным возрастом:
type User struct {
Name string
Age int
}
a := User{Name: "ann", Age: 20}
b := User{Name: "ann", Age: 20}
c := User{Name: "ann", Age: 21}
fmt.Println(a == b)
fmt.Println(a == c)
Первый вывод true, второй false.
Имена совпали в обоих случаях, но во второй паре
разошелся возраст. Достаточно одного отличия
в любом поле, чтобы структуры считались разными.
Сравнение с нулевой структурой тоже идет по полям:
type User struct {
Name string
Age int
}
var z User
also := User{}
fmt.Println(z == also)
Даны переменные:
type User struct {
Name string
Age int
}
p := User{Name: "bob", Age: 30}
q := User{Name: "bob", Age: 30}
Выведите результат p == q.
Дана структура:
type User struct {
Name string
Age int
}
u := User{Name: "ann", Age: 20}
v := User{Name: "ann", Age: 21}
Выведите "same" или "diff"
по правилу урока.
Скажите, почему в примерах раздела в полях
структуры нет среза или карты, если речь
идет о ==.