Методы против функций
Часть раздела Логика и управление потоком путешествия по GO на Coddy — урок 10 из 68.
Хотя и методы, и функции выполняют операции в Go, они служат разным целям и имеют различные шаблоны объявления. Понимание этого различия имеет решающее значение для написания чистого, организованного кода.
Функция является автономной и независимой. Она не принадлежит к какому-либо конкретному типу:
func calculateArea(width, height float64) float64 {
return width * height
}Метод привязан к конкретному типу через получатель (receiver). Он принадлежит этому типу и может обращаться к его данным:
func (r Rectangle) area() float64 {
return r.Width * r.Height
}Ключевое различие заключается в том, как вы их вызываете. Функции вызываются напрямую по имени, в то время как методы вызываются для экземпляров связанного с ними типа с использованием точечной нотации. Эта связь делает методы идеальными для определения поведения, которое естественным образом относится к вашим пользовательским типам, в то время как функции хорошо подходят для операций общего назначения, которые не нужно привязывать к конкретным структурам данных.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Шпаргалка
Функция является автономной и независимой:
func calculateArea(width, height float64) float64 {
return width * height
}Метод привязан к определенному типу через получатель (receiver):
func (r Rectangle) area() float64 {
return r.Width * r.Height
}Функции вызываются напрямую по имени, в то время как методы вызываются у экземпляров с использованием точечной нотации.
Попробуйте сами
В этом уроке нет задания по программированию.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Продвинутое управление потоком выполнения
Switch с использованием `fallthrough`Выход из вложенных цикловПродолжение конкретного циклаОператор `goto`Итоги: Продвинутое управление циклами4Проект: Простой список задач
Настройка проектаДобавление задачи2Структуры и методы
Определение методов для структурПолучатели по значениюПолучатели по указателюВыбор типа получателяМетоды против функцийИтоги: поведение структур5Карты: подробный разбор
Карты структурУказатели как значения картПроверка карт на nilСравнение картИтоги: счетчик частоты слов3Интерфейсы (Основы)
Что такое интерфейс?Определение интерфейсаРеализация интерфейсаИспользование интерфейсных типовПустой интерфейсУтверждение типаПереключатель типовИтоги: Фигуры и поведение