Sobes.tech
Junior — Middle

Kaip įgyvendinamas duomenų inkapsuliacijos principas programavimo kalboje Go?

sobes.tech AI

Atsakymas iš AI

Go kalboje inkapsuliacija pasiekiama naudojant identifikatorių matomumo taisyklę: jei kintamojo, funkcijos, metodo ar struktūros lauko pavadinimas prasideda didžiąja raide, jis eksportuojamas ir prieinamas iš kitų paketų; jei mažąja raide, jis prieinamas tik dabartiniame pakete.

Kad paslėpti duomenis, pakanka, kad struktūros laukai prasidėtų mažąja raide, o prie jų prieigai įgyvendinti metodus su didžiąja raide (getterius ir setterius).

Pavyzdys:

package user

type User struct {
    name string // privačias laukas
}

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
}
}

Čia laukas name yra paslėptas nuo išorės prieigos, o GetName ir SetName metodai suteikia kontroliuojamą prieigą prie jo.