Uma feature pouco comentada porém muito útil na linguagem Go, pelo menos no meu ponto de vista, é a tag.
As tags são marcações que colocamos nas propriedades de uma struct. Essas marcações funcionam como metadata para outros packages poderem realizar operações.
Para ficar mais claro, vamos criar um struct comum.
type Pessoa struct {
Nome string
Documento string
Idade uint8
}
Utilizando o package encoding/json, que é nativo do Go, vamos escrever um pequeno programa que vai nos retornar a struct em formato json.
func main() {
p := Pessoa{"Tiago Temporin", "000.000.000-00", 32}
r, err := json.Marshal(p)
if err != nil {
panic(err)
}
fmt.Println(string(r))
}
Após executar o programa com go run main.go, o seguinte resultado é exibido no terminal.
{"Nome":"Tiago Temporin","Documento":"000.000.000-00","Idade":32}
Cada uma das propriedades da struct foi “traduzida” para um campo no json. Ok, mas como eu faço para que os campos sejam todos em letras minúsculas? E se eu quiser mudar o nome de uma propriedade?
Bem simples, em cada propriedade, vamos colocar uma tag json seguida do nome que queremos que apareça na “tradução” para o json.
type Pessoa struct {
Nome string `json:"nome"`
Documento string `json:"cpf"`
Idade uint8 `json:"idade"`
}
Ao executar o mesmo programa, os atributos passaram a ser os valores que colocamos na tag json.
{"nome":"Tiago Temporin","cpf":"000.000.000-00","idade":32}
Se você quiser omitir algum campo, é só adicionar um - como valor da tag. Caso você queira omitir o campo somente quando ele estiver vazio, adicione um omitempty ao valor do campo.
type Pessoa struct {
ID int32 `json:"-"` // sempre omitido
Nome string `json:"nome"`
SobreNome string `json:"sobrenome,omitempty"` // omitido caso esteja vazio
Documento string `json:"cpf"`
Idade uint8 `json:"idade"`
}
Existe um outro package que faz validação dos atributos através de tags, mas essa vai ficar para outro post 😉.
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.





[…] O que são e como utilizar tags em structs […]