Инкапсуляция в Go?

Junior
933 просмотров
AFK Offer AI

В Go инкапсуляция реализуется через регистр первой буквы:

  • Заглавная (exported): User, GetName() — доступно из других пакетов
  • Строчная (unexported): user, getName() — только внутри пакета
type User struct {
    Name  string // exported
    email string // unexported — доступ только внутри пакета
}

Уровень инкапсуляции — пакет, а не структура. Все файлы одного пакета видят unexported поля друг друга. Это проще чем private/protected/public в Java, но требует грамотной декомпозиции по пакетам.

Следующий вопрос

Паттерн Singleton?