В чем разница между методами, названными с большой и с маленькой буквы

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

Ответ

В Go методы и поля, начинающиеся с заглавной буквы, экспортируются (доступны из других пакетов). С строчной буквы — не экспортируются (видны только внутри текущего пакета).

type Person struct {
    name string // неэкспортируемое поле
    Age  int    // экспортируемое поле
}

// Неэкспортируемый метод (доступен только в этом пакете)
func (p *Person) sayHello() {
    fmt.Println("Hello!")
}

// Экспортируемый метод (доступен из других пакетов)
func (p *Person) GetName() string {
    return p.name
}

Важно:

  • Это правило применяется ко всем идентификаторам (типы, функции, переменные).
  • Внутри пакета разницы в доступе нет.