Sobes.tech
Назад к вопросам
Junior — Middle
81

Чем отличается метод от функции, и в чем особенности их использования?

Компании, где спрашивали
Flant

Ответ от нейросети

sobes.tech AI

В Go функция — это независимый блок кода, который можно вызвать по имени и который может принимать параметры и возвращать значения.

Метод — это функция, связанная с определённым типом (например, структурой). Метод объявляется с указанием приёмника (receiver), который определяет, к какому типу он принадлежит.

Особенности использования:

  • Метод позволяет работать с данными конкретного типа, используя приёмник внутри тела метода.
  • Методы помогают организовать код и реализовать поведение для типов, что приближает Go к объектно-ориентированному стилю.

Пример:

package main
import "fmt"

type Person struct {
    Name string
}

// Метод с приёмником типа Person
func (p Person) Greet() {
    fmt.Println("Привет, меня зовут", p.Name)
}

// Обычная функция
func Add(a, b int) int {
    return a + b
}

func main() {
    p := Person{Name: "Иван"}
    p.Greet() // вызов метода
    fmt.Println(Add(2, 3)) // вызов функции
}