Sobes.tech
Junior — Middle

Обяснете концепцията за инкапсулация на данните в обектно-ориентираното програмиране.

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
}

Този подход позволява да контролирате достъпа до данните, да гарантирате тяхната цялост и да променяте вътрешната реализация без да влияете на външния код.