Nem private, nem public… Como trabalhar com visibilidade

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!


Subscreva

Fique por dentro de tudo o que acontece no mundo Go.

Deixe uma resposta