> Приведите пример инкапсуляции (Go)

Уровень: senior · Роль: backend · Категория: Технические вопросы

Компании: Aston

Стек: Go

> Пример ответа

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

GO
package account
type Account struct {
owner string // приватное поле
balance float64 // приватное поле
}
// Конструктор - экспортируемая функция
func NewAccount(owner string) *Account {
return &Account{owner: owner, balance: 0}
}
// Экспортируемый метод для безопасного доступа к балансу
func (a *Account) Balance() float64 {
return a.balance
}
// Экспортируемый метод для изменения баланса с проверкой
func (a *Account) Deposit(amount float64) {
if amount > 0 {
a.balance += amount
}
}

Здесь поля owner и balance скрыты от внешнего кода, а доступ к ним возможен только через методы Balance() и Deposit(). Это защищает данные от некорректного изменения и скрывает внутреннюю реализацию.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью