Что описывает принадлежность метода к структуре

«Что описывает принадлежность метода к структуре» — вопрос из категории Golang, который задают на 24% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Принадлежность метода к структуре в Go определяется получателем (receiver) в объявлении метода. Получатель указывается перед именем функции и может быть как значением, так и указателем на тип структуры.

type User struct {
    Name string
}

// Метод с получателем по значению
func (u User) GetName() string {
    return u.Name
}

// Метод с получателем по указателю
func (u *User) SetName(name string) {
    u.Name = name
}

Ключевые моменты:

  1. Метод с получателем по значению работает с копией структуры
  2. Метод с получателем по указателем может модифицировать оригинальную структуру
  3. Go автоматически преобразует между вызовами методов для значений и указателей