English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

고락런 기본 튜토리얼

고락런 제어문

고락런 함수 & 메서드

고락런 구조체

고락런 슬라이스 & 배열

고락런 문자열(String)

고락런 포인터

고락런 인터페이스

고락런 동기

Исключения (Error) в Golang

Другие вопросы Golang

Go 구조체 비교

Структуры или 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() 메서드로 구조체가 같은지 비교

//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