Sobes.tech
Back to questions
Junior — Middle
82

Как в языке Go достигается принцип инкапсуляции с помощью структур?

Answer from AI

sobes.tech AI

В Go инкапсуляция достигается с помощью правил видимости идентификаторов, основанных на регистре первой буквы имени:

  • Имена, начинающиеся с заглавной буквы, экспортируются и доступны из других пакетов (public).
  • Имена с маленькой буквы доступны только внутри пакета (private).

Таким образом, чтобы скрыть поля или методы структуры от внешнего доступа, их имена делают с маленькой буквы.

Пример:

package user

type User struct {
    name string // приватное поле
    Age  int    // публичное поле
}

func (u *User) GetName() string { // публичный метод
    return u.name
}

В этом примере поле name скрыто от внешнего мира, а доступ к нему осуществляется через публичный метод GetName(). Это реализует инкапсуляцию, контролируя доступ к внутренним данным структуры.