Найти в Дзене
Golang с 0

Go (Golang) с нуля. Урок 9 - Структуры

Структура — фундамент практически любой программы на Go. В этом уроке посмотрим как использовать их для написания структурированных программ. В прошлом уроке мы узнали о существовании срезов в языке Go. Они позволяют хранить однотипные данные и добавлять в себя новые элементы. Таким образом, мы можем работать с набором (рядом) значений с помощью похожей логики обработки. Это сокращает объем кода и его понимание. Сегодня познакомимся с одним из важных строительных блоков программы — структуры. Можно воспринимать структуру как описание определенного объекта в программе. Например, если мы хотим написать игру на языке Go, то можно придумать несколько типов объектов в игре. Например, возьмем игру крестики — нолики. В ней могут существовать следующие объекты: У игрока должно быть имя. У карты должны быть размер и клетки, которые могут быть заполнены крестиком или ноликом. Состояние хода должно хранить имя или номер игрока, чей сейчас ход. Дом Дом - родной дом Возьмем другой пример, который
Оглавление

Структура — фундамент практически любой программы на Go. В этом уроке посмотрим как использовать их для написания структурированных программ.

Уроки по Go | Golang с 0 | Дзен

В прошлом уроке мы узнали о существовании срезов в языке Go. Они позволяют хранить однотипные данные и добавлять в себя новые элементы. Таким образом, мы можем работать с набором (рядом) значений с помощью похожей логики обработки. Это сокращает объем кода и его понимание.

Сегодня познакомимся с одним из важных строительных блоков программы — структуры.

Можно воспринимать структуру как описание определенного объекта в программе.

Например, если мы хотим написать игру на языке Go, то можно придумать несколько типов объектов в игре. Например, возьмем игру крестики — нолики.

В ней могут существовать следующие объекты:

  • Игрок
  • Карта
  • Состояние хода

У игрока должно быть имя.

У карты должны быть размер и клетки, которые могут быть заполнены крестиком или ноликом.

Состояние хода должно хранить имя или номер игрока, чей сейчас ход.

Дом

Дом - родной дом

Возьмем другой пример, который мы использовали в предыдущем уроке — Улица и дома. Сегодня сосредоточимся на домах, а не на улице.

В примере дом имел только номер. Допустим, мы хотим кроме номера сохранить в срезе для улицы еще и год постройки. Для такого случая структура будет идеальным решением.

Итак, давайте теперь посмотрим как определить структуру в Go.

Структура

Определение структуры состоит из нескольких блоков:

  • Ключевое слово type
  • Название структуры
  • Ключевое слово struct
  • Определение структуры — ее свойства
Описание структуры House
Описание структуры House
The Go Play Space

В приведенном коде определяется структура House. Определение структуры заключено в фигурные скобки, где перечисляются поля. Она имеет 2 поля:

Number - номер дома

BuildYear - строка, содержащая год постройки

Описание структуры само по себе бесполезно (без реализации), как и чертеж дома без его постройки.

Для того чтобы структура приносила пользу, нужно создать объект.

В коде на 15 строчке мы создаем переменную h, которая имеет тип House. Также, мы сразу заполняем начальные значения для полей Number, BuildYear.

Чтение и запись полей структуры

Значения полей структуры можно читать и записывать подобно значениям переменных.

-3

На 21 строке кода, мы записываем новое значение в поле Number, равное 2.

На 23 строке, читаем обновленное значение Number и выводим на экран.

Улица

Теперь давайте усложним пример, и построим улицу с домами.

Улица и дома в виде структур House
Улица и дома в виде структур House

На 15 строке определяется срез (slice) типа House, который заполняется двумя объектами типа House. Или по-другому улица, содержащая два дома с номером 1 и 2.

Подведем итоги

Структуры описывают объекты. Описание состоит из свойств или по-другому полей.

Структура позволяет объединить несколько свойств в одном объекте.

В программировании такой подход называют абстракцией. Объектами гораздо проще оперировать, чем отдельным набором переменных. Объект содержит набор определенных значений для полей структуры.

Если при инициализации структуры мы не указываем для поля значение, оно будет заполнено значением по умолчанию для этого типа.

Для числа - 0, для строки — пустая строка, для булева типа - false.

Практика

Переходи по ссылке и пройди практику по данному уроку в обучающей онлайн — платформе Stepik.

Структуры

В следующем уроке узнаем, что такое указатели и как использовать их вместе со структурами.

До новых встреч!