Golang: Guia sobre Structs e JSON
golang
Um dos conceitos fundamentais em Golang é o uso de structs, que permitem uma forma eficiente de organizar e manipular dados. Neste artigo, vamos explorar a criação e uso de structs em Golang, bem como a conversão de structs para JSON e vice-versa, uma prática comum em aplicações modernas que envolvem APIs.

O Que São Structs?

Structs são tipos de dados compostos que agrupam variáveis sob um único nome, permitindo que você trabalhe com dados relacionados de maneira mais estruturada. Diferentemente das classes em linguagens orientadas a objetos, structs em Golang não suportam herança, mas permitem a composição, o que pode ser visto como uma forma de reutilização de código.

Definindo uma Struct

Para definir uma struct em Golang, você utiliza a palavra-chave type seguida pelo nome da struct e a palavra struct. Veja um exemplo simples:
package main import "fmt" type Cliente struct { Nome string Email string CPF int } func main() { cliente := Cliente{ Nome: "Paulo", Email: "rst@rst.com", CPF: 123456789, } fmt.Println(cliente) }
Neste exemplo, definimos uma struct Cliente com três campos: Nome, Email e CPF. Criamos uma instância dessa struct e imprimimos seus valores.

Composição de Structs

Embora Golang não suporte herança, você pode utilizar composição para reutilizar structs. Vamos supor que queremos criar uma struct ClienteInternacional que possui os mesmos campos de Cliente, mas adiciona um campo Pais:
type ClienteInternacional struct { Cliente Pais string } func main() { clienteInternacional := ClienteInternacional{ Cliente: Cliente{ Nome: "Rodrigo", Email: "rodrigorst@rst.com.br", CPF: 987654321, }, Pais: "Canadá", } fmt.Println(clienteInternacional) }

Métodos em Structs

Em Golang, você pode definir métodos que operam em structs. Vamos adicionar um método Exibir à nossa struct Cliente:
func (c Cliente) Exibir() { fmt.Printf("Nome: %s, Email: %s, CPF: %d\\n", c.Nome, c.Email, c.CPF) } func main() { cliente := Cliente{ Nome: "Mayk Brito", Email: "maykbritorst@rst.com.br", CPF: 123456789, } cliente.Exibir() }

Trabalhando com JSON

Uma das operações mais comuns em aplicações web é a conversão de structs para JSON e vice-versa. Em Golang, isso é feito utilizando o pacote encoding/json.

Convertendo Struct para JSON

Para converter uma struct para JSON, utilizamos a função json.Marshal. Veja como fazer isso:
import ( "encoding/json" "fmt" ) func main() { cliente := Cliente{ Nome: "Mayk Brito", Email: "maykbritorst@rst.com.br", CPF: 123456789, } clienteJSON, err := json.Marshal(cliente) if err != nil { fmt.Println(err) } fmt.Println(string(clienteJSON)) }

Convertendo JSON para Struct

Para converter um JSON de volta para uma struct, utilizamos a função json.Unmarshal:
func main() { jsonData := `{"Nome":"Mayk Brito","Email":"maykbritorst@rst.com.bt","CPF":123456789}` var cliente Cliente err := json.Unmarshal([]byte(jsonData), &cliente) if err != nil { fmt.Println(err) } fmt.Println(cliente) }

Utilizando Tags JSON

Você pode controlar a representação JSON de campos individuais de uma struct utilizando tags JSON:
type Cliente struct { Nome string `json:"nome"` Email string `json:"email"` CPF int `json:"cpf"` } func main() { cliente := Cliente{ Nome: "Mayk Brito", Email: "maykbritorst@rst.com", CPF: 123456789, } clienteJSON, err := json.Marshal(cliente) if err != nil { fmt.Println(err) } fmt.Println(string(clienteJSON)) }
 
Structs são uma ferramenta poderosa em Golang para organizar e manipular dados de forma eficiente. Com a capacidade de converter structs para JSON e vice-versa, Golang se torna uma excelente escolha para o desenvolvimento de aplicações web modernas. Espero que este artigo tenha ajudado a entender melhor como trabalhar com structs e JSON em Golang.
 
Sendo assim, mãos ao código!

Aprenda programação do zero e DE GRAÇA

No Discover você vai descomplicar a programação, aprender a criar seu primeiro site com a mão na massa e iniciar sua transição de carreira.

COMECE A ESTUDAR AGORA