Sobes.tech
Junior — Middle

Как се реализира принципът за инкапсулация на данните в езика Go?

sobes.tech AI

Отговор от 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 предоставят контролирана достъп до него.