HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Go - язык со строгой типизацией и поддержкой объектного стиля, но без привычного class. Вместо этого используется сочетание структур (для хранения состояния) и методов (для поведения).</p>
1 <p>Go - язык со строгой типизацией и поддержкой объектного стиля, но без привычного class. Вместо этого используется сочетание структур (для хранения состояния) и методов (для поведения).</p>
2 <p>Это позволяет создавать объекты, инкапсулирующие данные и операции над ними - как в ООП, но проще и прямолинейнее.</p>
2 <p>Это позволяет создавать объекты, инкапсулирующие данные и операции над ними - как в ООП, но проще и прямолинейнее.</p>
3 <h2>Объявление структуры</h2>
3 <h2>Объявление структуры</h2>
4 <p>Структура - это пользовательский тип, состоящий из набора полей:</p>
4 <p>Структура - это пользовательский тип, состоящий из набора полей:</p>
5 <p>Структура User описывает сущность с двумя полями: Name (строка) и Age (целое число). Теперь User - это новый тип данных, который можно использовать, как любой другой. Чтобы создать значение структуры, используют литерал структуры.</p>
5 <p>Структура User описывает сущность с двумя полями: Name (строка) и Age (целое число). Теперь User - это новый тип данных, который можно использовать, как любой другой. Чтобы создать значение структуры, используют литерал структуры.</p>
6 <p>К полям структуры можно обращаться напрямую:</p>
6 <p>К полям структуры можно обращаться напрямую:</p>
7 <h2>Методы</h2>
7 <h2>Методы</h2>
8 <p>Go позволяет определять методы - это функции, привязанные к типу (например, к структуре). Они выглядят как обычные функции, но с особым параметром - приёмником (receiver), который указывается в скобках перед именем функции. Обращаться к нему можно так же как и любым другим параметрам:</p>
8 <p>Go позволяет определять методы - это функции, привязанные к типу (например, к структуре). Они выглядят как обычные функции, но с особым параметром - приёмником (receiver), который указывается в скобках перед именем функции. Обращаться к нему можно так же как и любым другим параметрам:</p>
9 <p>Этот метод можно вызвать на экземпляре структуры:</p>
9 <p>Этот метод можно вызвать на экземпляре структуры:</p>
10 <h2>Где описывать методы?</h2>
10 <h2>Где описывать методы?</h2>
11 <p>Методы определяются вне структуры, но обязательно в том же пакете. В теле самой структуры можно определить только поля. Вот правильная структура:</p>
11 <p>Методы определяются вне структуры, но обязательно в том же пакете. В теле самой структуры можно определить только поля. Вот правильная структура:</p>
12 <p>Порядок не имеет значения - метод может быть описан до или после использования структуры. Главное - чтобы тип, к которому он относится, был определён в том же пакете.</p>
12 <p>Порядок не имеет значения - метод может быть описан до или после использования структуры. Главное - чтобы тип, к которому он относится, был определён в том же пакете.</p>
13 <h2>Передача структуры в функцию</h2>
13 <h2>Передача структуры в функцию</h2>
14 <p>Со структурами работают не только методы. Как и любой другой тип, структуру можно передавать в обычные функции. Это позволяет использовать её как единое значение, передавая сразу связанный набор данных.</p>
14 <p>Со структурами работают не только методы. Как и любой другой тип, структуру можно передавать в обычные функции. Это позволяет использовать её как единое значение, передавая сразу связанный набор данных.</p>
15 <p>Функция PrintAge() получает структуру User и работает с её полями. При этом структура передаётся<strong>по значению</strong>, то есть копируется. Если изменить ее внутри функции, то изменится копия - оригинал останется без изменений. Такая же логика действует и для методов.</p>
15 <p>Функция PrintAge() получает структуру User и работает с её полями. При этом структура передаётся<strong>по значению</strong>, то есть копируется. Если изменить ее внутри функции, то изменится копия - оригинал останется без изменений. Такая же логика действует и для методов.</p>
16 <p>Чтобы изменения применялись к оригинальной структуре, нужно передавать указатель. Это мы научимся делать в следующих уроках.</p>
16 <p>Чтобы изменения применялись к оригинальной структуре, нужно передавать указатель. Это мы научимся делать в следующих уроках.</p>