Sobes.tech
Junior — Middle

Como é que o princípio de encapsulação de dados é implementado na linguagem Go?

sobes.tech IA

Resposta da IA

Em Go, a encapsulação é alcançada através da regra de visibilidade dos identificadores: se o nome de uma variável, função, método ou campo de estrutura começa com uma letra maiúscula, ela é exportada e acessível de outros pacotes; se começa com uma letra minúscula, só está acessível dentro do pacote atual.

Assim, para esconder dados, basta fazer os campos da estrutura começarem com uma letra minúscula, e implementar métodos com uma letra maiúscula (getters e setters) para acessá-los.

Exemplo:

package user

type User struct {
    name string // campo privado
}

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

Aqui, o campo name está oculto do acesso externo, e os métodos GetName e SetName fornecem acesso controlado a ele.