Основы Go
Теория: Структуры и методы в Go
Go — язык со строгой типизацией и поддержкой объектного стиля, но без привычного class. Вместо этого используется сочетание структур (для хранения состояния) и методов (для поведения).
Это позволяет создавать объекты, инкапсулирующие данные и операции над ними — как в ООП, но проще и прямолинейнее.
Объявление структуры
Структура — это пользовательский тип, состоящий из набора полей:
Структура User описывает сущность с двумя полями: Name (строка) и Age (целое число). Теперь User — это новый тип данных, который можно использовать, как любой другой. Чтобы создать значение структуры, используют литерал структуры.
К полям структуры можно обращаться напрямую:
Методы
Go позволяет определять методы — это функции, привязанные к типу (например, к структуре). Они выглядят как обычные функции, но с особым параметром — приёмником (receiver), который указывается в скобках перед именем функции. Обращаться к нему можно так же как и любым другим параметрам:
Этот метод можно вызвать на экземпляре структуры:
Где описывать методы?
Методы определяются вне структуры, но обязательно в том же пакете. В теле самой структуры можно определить только поля. Вот правильная структура:
Порядок не имеет значения — метод может быть описан до или после использования структуры. Главное — чтобы тип, к которому он относится, был определён в том же пакете.
Передача структуры в функцию
Со структурами работают не только методы. Как и любой другой тип, структуру можно передавать в обычные функции. Это позволяет использовать её как единое значение, передавая сразу связанный набор данных.
Функция PrintAge() получает структуру User и работает с её полями. При этом структура передаётся по значению, то есть копируется. Если изменить ее внутри функции, то изменится копия — оригинал останется без изменений. Такая же логика действует и для методов.
Чтобы изменения применялись к оригинальной структуре, нужно передавать указатель. Это мы научимся делать в следующих уроках.





