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

Основы Golang

Контрольные операторы в Golang

Функции и методы в Golang

Структуры в Golang

Срезы и массивы в Golang

Строки (String) в Golang

Понятные в Golang

Интерфейсы в Golang

Конкурентоспособность в Golang

Ошибка (Error) в Golang

Другие темы Golang

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

Структура или struct в Golang - это пользовательский тип, который позволяет создавать в одном блоке набор элементов различных типов. Любой реальный объект, обладающий набором свойств или полей, можно представить в виде структуры. Этот концепт часто сравнивают с классами в面向 объектном программировании. Его можно назвать легковесным классом, который не поддерживает наследование, но поддерживает комбинирование.

В Go языке можно использоватьоператор ==илиМетод DeeplyEqual()Сравнение двух структур, имеющих одинаковые поля и значения полей. Если структуры равны между собой (по значению полей), то оператор и метод возвращают true; в противном случае, возвращается false. Кроме того, если переменные, сравниваемые между собой, принадлежат к различным структурам, компилятор выдаст ошибку. Давайте рассмотрим этот концепт на примере:

注意: Внимание:

Метод DeeplyEqual() определен в пакете "reflect".

Сравнение структур с помощью оператора ==
//Концепция равенства структур
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()

//Использование метода 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