Se você trabalha ou já trabalhou com alguma linguagem com suporte a orientação a objetos, você com certeza está familiarizado com os termos public, private e protected. Se você está iniciando e nunca ouviu falar, vou explicar rapidamente.
Esses termos são usados para definir a visibilidade dos métodos e atributos de uma classe, sendo que:
public – usado para que qualquer um possa utilizar o método ou atributo.
private – somente a própria classe pode utilizar.
protected – a classe e suas classes filhas podem utilizar.
Fácil não?!
Pois é, só que em Go esses termos não existem 🙂. Mas calma, o conceito de private e public (exported) existem sim, só é um pouco diferente.
Em Go, quando queremos deixar uma função, variável, struct ou atributo da struct privados, tudo que precisamos fazer é colocar a primeira letra do seu nome minúscula.
var connection
type pessoa struct {
nome string
sobrenome string
idade int8
}
func newPessoa(nome, sobrenome string, idade int8) *pessoa {
return &pessoa{
nome: nome,
sobrenome: sobrenome,
idade: idade,
}
}
Quando queremos deixar algo público ou exportado, o nome da função, variável, struct ou atributo devem ter a sua primeira letra maiúscula.
var Connection
type Pessoa struct {
Nome string
Sobrenome string
Idade int8
}
func NewPessoa(nome, sobrenome string, idade int8) *Pessoa {
return &pessoa{
Nome: nome,
Sobrenome: sobrenome,
Idade: idade,
}
}
Não existe nenhuma forma de utilizar o protected, pois como já falamos em outro post, o conceito de orientação a objetos não existe em Go.
Deixem suas dúvidas nos comentários.
Até a próxima!
Faça parte da comunidade!
Receba os melhores conteúdos sobre Go, Kubernetes, arquitetura de software, Cloud e esteja sempre atualizado com as tendências e práticas do mercado.
Livros Recomendados
Abaixo listei alguns dos melhores livros que já li sobre GO.

