понедельник, 17 февраля 2020 г.

Создание, инициализация и сравнение структур в Golang

Структура (struct) - это типизированная коллекция полей, полезная для группировки данных в записи.

type Student struct {
    Name string
    Age  int
}

var a Student    // a == Student{"", 0}
a.Name = "Ivan"  // a == Student{"Ivan", 0}

Чтобы определить новый тип структуры, вы должны перечислить имена и типы каждого поля.

Нулевое значение структуры по умолчанию задает нулевыми значениями соответствующих типов все ее поля.

Вы можете получить доступ к отдельным полям с точечной нотацией.

Два способа создания и инициализации новой структуры

Ключевое слово new может быть использовано для создания новой структуры. Возвращает указатель на вновь созданную структуру.

var pa *Student   // pa == nil
pa = new(Student) // pa == &Student{"", 0}
pa.Name = "Ivan"  // pa == &Student{"Ivan", 0}

Вы также можете создать и инициализировать структуру с помощью литерала структуры.

b := Student{ // b == Student{"Anton", 0}
    Name: "Anton",
}
    
pb := &Student{ // pb == &Student{"Anton", 8}
    Name: "Anton",
    Age:  8,
}

c := Student{"Kate", 5}    // c == Student{"Kate", 5}
d := Student{}             // d == Student{"", 0}

Список элементов, содержащий ключи, не обязательно должен иметь элемент для каждого поля структуры. Пропущенные поля получают нулевое значение для этого поля.

Список элементов, который не содержит ключей, должен перечислять элемент для каждого поля структуры в порядке, в котором поля объявлены.

Литерал может опускать список элементов; такой литерал дает нулевое значение для своего типа.

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

Вы можете сравнивать значения структуры с операторами сравнения == и !=. Два значения равны, если их соответствующие поля равны.

d1 := Student{"Albert", 1}
d2 := Student{"Albert", 2}
fmt.Println(d1 == d2) // false


Читайте также:


Комментариев нет:

Отправить комментарий