Методы (methods) и интерфейсы (interfaces)
Часть курса Go
В прошлом уроке вы научились складывать связанные поля в структуру, но структура сама по себе держит только данные, поведения у неё нет. Если вы хотите, чтобы Rectangle умел сам считать свою площадь, у вас два пути: либо написать обычную функцию, которая принимает Rectangle аргументом, либо прикрепить поведение к самому типу, чтобы оно ездило вместе с данными.
Метод, это обычная функция с одной добавкой: у него есть получатель (receiver), то есть именованная переменная определённого типа, которая стоит в собственных скобках между словом func и именем метода. Именно получатель позволяет писать r.Area() вместо Area(r), примерно как пульт, привязанный к одному конкретному телевизору, всегда управляет только этим телевизором, какую кнопку на нём ни нажми.
Хочешь изучать Go Методы (methods) и интерфейсы (interfaces) в реальной среде?
Нажми ниже, получи Linux-машину с Go наготове и пройди Методы (methods) и интерфейсы (interfaces) на практике вместе с AI-наставником, который знает твой код.
Начать этот урокМетоды (methods) и интерфейсы (interfaces)Чему вы научитесь
- Method declaration
- Receiver types
- Pointer vs value receivers
- Interface definition
- Implicit interface satisfaction
- Small interfaces
- Io.Writer example
Читай этот урок на своём языке
Все уроки этого курса
20 уроков- 1Привет, Go25 мин
- 2Переменные и типы25 мин
- 3Управление потоком: if и for30 мин
- 4Функции30 мин
- 5Срезы (slices) и карты (maps)35 мин
- 6Структуры (structs) и указатели (pointers)35 мин
- 7Методы (methods) и интерфейсы (interfaces)35 мин
- 8Обработка ошибок35 мин
- 9Модули (modules) и структура проекта35 мин
- 10Мини-проект на основе CLI40 мин
- 11Обзор стандартной библиотеки40 мин
- 12Тестирование и бенчмарки (benchmarks)40 мин
- 13Горутины (goroutines) и каналы (channels)40 мин
- 14Паттерны параллелизма45 мин
- 15Дженерики (generics)35 мин
- 16HTTP-серверы45 мин
- 17Базы данных с database/sql45 мин
- 18Производительность и профилирование40 мин
- 19Паттерны проектирования в Go40 мин
- 20Развёртывание и эксплуатация45 мин
