РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
467 of 1593 menu

Сравнение структур

В Go структуры можно сравнивать с помощью операторов == и !=. Оператор == возвращает true, если все соответствующие поля двух структур равны, и false в противном случае. Оператор != работает противоположным образом. Сравнивать можно только структуры одинакового типа. Важно, что сравнение возможно только если все поля структуры являются сравниваемыми типами (такими как числа, строки, булевы значения, указатели, каналы и интерфейсы).

Синтаксис

struct1 == struct2 struct1 != struct2

Пример

Давайте создадим две структуры с одинаковыми значениями полей и сравним их:

package main import "fmt" type Person struct { name string age int } func main() { p1 := Person{name: "John", age: 30} p2 := Person{name: "John", age: 30} res := p1 == p2 fmt.Println(res) }

Результат выполнения кода:

true

Пример

Теперь создадим две структуры с разными значениями полей и сравним их:

package main import "fmt" type Person struct { name string age int } func main() { p1 := Person{name: "John", age: 30} p2 := Person{name: "Jane", age: 25} res := p1 == p2 fmt.Println(res) }

Результат выполнения кода:

false

Пример

Структуры с несравниваемыми полями (например, слайсами) нельзя сравнивать с помощью ==:

package main type Data struct { numbers []int } func main() { d1 := Data{numbers: []int{1, 2, 3}} d2 := Data{numbers: []int{1, 2, 3}} // Ошибка компиляции: слайсы нельзя сравнивать res := d1 == d2 _ = res }

Результат выполнения кода:

"cannot compare d1 == d2 (struct containing []int cannot be compared)"

Пример

Для сравнения структур с несравниваемыми полями можно использовать пакет reflect:

package main import ( "fmt" "reflect" ) type Data struct { numbers []int } func main() { d1 := Data{numbers: []int{1, 2, 3}} d2 := Data{numbers: []int{1, 2, 3}} res := reflect.DeepEqual(d1, d2) fmt.Println(res) }

Результат выполнения кода:

true

Смотрите также

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