English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Структуры или struct в Golang — это пользовательские типы, которые позволяют создавать набор различных элементов в одном блоке. Любой реальный объект, обладающий набором свойств или полей, можно представить как структуру. Этот концепт часто сравнивают с классами в объектно-ориентированном программировании. Его можно назвать легким классом, который не поддерживает наследование, но поддерживает комбинирование.
в Go языке можно определить черезоператор ==илиметод DeeplyEqual()Сравнение двух структур одного и того же типа, содержащих одни и те же поля значений. Если структуры彼此 равны (по значению полей), то оператор и метод возвращают true; в противном случае, возвращается false. И если сравниваемые переменные принадлежат к разным структурам, то компилятор выдает ошибку. Давайте рассмотрим этот концепт на примере:
Примечание: метод DeeplyEqual() определен в пакете "reflect".
//концепция равенства структуры //проверка структуры с помощью оператора == package main import "fmt" //구조를 생성 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, } //проверить a с помощью оператора ==1с a2равны ли if a1 == a2 { fmt.Println("변수 a1변수 a와 같습니다2) } else { fmt.Println("변수 a1변수 a와 다릅니다2) } if a2 == a3 { fmt.Println("변수 a2변수 a와 같습니다3) } else { fmt.Println("변수 a2변수 a와 다릅니다3) } }
출력:
변수 a1변수 a와 같습니다2 변수 a2변수 a와 다릅니다3
//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, } //a와 비교1와 a2, Deep Equal() 메서드를 사용 fmt.Println("a1equal to a2문의해요: ", reflect.DeepEqual(a1, a2)) //a와 비교2와 a3, Deep Equal() 메서드를 사용 fmt.Println("a2equal to a3문의해요: ", reflect.DeepEqual(a2, a3)) }
출력:
a1equal to a2문의해요: true a2equal to a3도: false