English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Структура или struct в Golang - это пользовательский тип, который позволяет создавать в одном блоке набор элементов различных типов. Любой реальный объект, обладающий набором свойств или полей, можно представить в виде структуры. Этот концепт часто сравнивают с классами в面向 объектном программировании. Его можно назвать легковесным классом, который не поддерживает наследование, но поддерживает комбинирование.
В Go языке можно использоватьоператор ==илиМетод DeeplyEqual()Сравнение двух структур, имеющих одинаковые поля и значения полей. Если структуры равны между собой (по значению полей), то оператор и метод возвращают true; в противном случае, возвращается false. Кроме того, если переменные, сравниваемые между собой, принадлежат к различным структурам, компилятор выдаст ошибку. Давайте рассмотрим этот концепт на примере:
注意: Внимание:
Сравнение структур с помощью оператора == //Концепция равенства структур package main //Использование оператора == //Создание структуры type Author struct { name string branch string language string Particles int } func main() { //Создание переменных //Структура автора a1 := Author{ name: "Moana", branch: "CSE", language: "Python", Particles: 38, } a2 := Author{ name: "Moana", branch: "CSE", language: "Python", Particles: 38, } a3 := Author{ name: "Dona", branch: "CSE", language: "Python", Particles: 38, } //Проверка равенства a1 и a2 с помощью оператора == if a1 == a2 { fmt.Println("Переменная a1 равна переменной a2") } fmt.Println("Переменная a1 не равна переменной a2") } if a2 == a3 { fmt.Println("Переменная a2 равна переменной a3") } fmt.Println("Переменная a2 не равна переменной a3") } }
Вывод:
Переменная a1 равна переменной a2 Переменная a2 не равна переменной a3
//Использование метода DeepEqual() package main import ( "fmt" "reflect" } //Создание структуры type Author struct { name string branch string language string Particles int } func main() { //Определение переменных //Структура автора a1 := Author{ name: "Soana", branch: "CSE", language: "Perl", Particles: 48, } a2 := Author{ name: "Soana", branch: "CSE", language: "Perl", Particles: 48, } a3 := Author{ name: "Dia", branch: "CSE", language: "Perl", Particles: 48, } //Сравнение a1 и a2, использование метода DeepEqual() fmt.Println("a1 равен a2? ", reflect.DeepEqual(a1, a2)) //Сравнение a2 и a3, использование метода DeepEqual() fmt.Println("a2 равен a3? ", reflect.DeepEqual(a2, a3)) }
Вывод:
a1 равен a2? true a2 равен a3? false