Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗goPmSrEq 233 of 350 menu
◀ ▶

Сравнение в 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" по правилу урока.

Скажите, почему в примерах раздела в полях структуры нет среза или карты, если речь идет о ==.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить