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!