Можно ли сделать приватные методы в Go

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

Ответ

В Go нет ключевого слова private, но приватность достигается через соглашение об именовании. Если идентификатор (метод, поле, функция) начинается с строчной буквы, он доступен только внутри текущего пакета.

Пример:

type myStruct struct {
    privateField int // недоступен вне пакета
}

func (s *myStruct) privateMethod() { // недоступен вне пакета
    fmt.Println("Это приватный метод")
}

func (s *myStruct) PublicMethod() { // доступен везде
    fmt.Println("Это публичный метод")
}

Важно:

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