Sobes.tech
Назад к вопросам
Junior — Middle
102

Каким образом в языке Go реализуется принцип инкапсуляции данных?

Компании, где спрашивали
WildberriesWildberries
Betera Group
Российский центр оборота прав
СБЕР дейвайсыСБЕР дейвайсы

Ответ от нейросети

sobes.tech AI

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

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

Пример:

package user

type User struct {
    name string // приватное поле
}

func NewUser(name string) *User {
    return &User{name: name}
}

func (u *User) GetName() string {
    return u.name
}

func (u *User) SetName(name string) {
    u.name = name
}
}

Здесь поле name скрыто от внешнего доступа, а методы GetName и SetName предоставляют контролируемый доступ к нему.