Menu
Coddy logo textTech

Методы против функций

Часть раздела Логика и управление потоком путешествия по 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
}

Ключевое различие заключается в том, как вы их вызываете. Функции вызываются напрямую по имени, в то время как методы вызываются для экземпляров связанного с ними типа с использованием точечной нотации. Эта связь делает методы идеальными для определения поведения, которое естественным образом относится к вашим пользовательским типам, в то время как функции хорошо подходят для операций общего назначения, которые не нужно привязывать к конкретным структурам данных.

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Шпаргалка

Функция является автономной и независимой:

func calculateArea(width, height float64) float64 {
    return width * height
}

Метод привязан к определенному типу через получатель (receiver):

func (r Rectangle) area() float64 {
    return r.Width * r.Height
}

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

Попробуйте сами

В этом уроке нет задания по программированию.

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком