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

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

Компании, где спрашивали
Betera Group

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

sobes.tech AI

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

Например:

package user

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

func NewUser(name string, age int) *User {
    return &User{name: name, Age: age}
}

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

Здесь поле name скрыто от внешнего доступа, а доступ к нему можно получить через метод GetName(). Таким образом, Go использует уровень видимости на уровне пакетов и имен для инкапсуляции.