O que é uma Struct no Go?

Olá, pessoal! Vamos dar continuidade ao nosso treinamento no canal Ralf Lima. Hoje vamos dar um passo gigantesco no curso e aprender sobre as Structs (Estruturas).

Até agora, trabalhamos com tipos de dados simples (como string e int) e coleções focadas em um único tipo de dado por vez (como vetores e slices). Uma Struct nos permite criar **o nosso próprio tipo de dado customizado**, agrupando diferentes informações dentro de um único molde. Podemos enxergar a struct como uma ficha de cadastro ou uma coleção de campos que definem as propriedades de um objeto real.

Go não possui Classes? Entenda o paralelo técnico

Uma dúvida muito comum de quem está dando os primeiros passos e já estudou outras linguagens é procurar pela palavra-chave class. **O Go não possui classes e não é uma linguagem orientada a objetos tradicional**. No entanto, as Structs cumprem com maestria o papel de modelar nossos dados. Veja o paralelo na tabela abaixo:

Conceito no Go Equivalente em Outras Linguagens O que representa na prática?
type Nome struct Classe (class) O molde, a estrutura ou a planta baixa que define como um objeto deve ser criado.
Campos (nome, idade) Atributos ou Propriedades As características específicas que aquele molde vai guardar na memória.
Variável instanciada (pessoa1) Objeto ou Instância O dado real e concreto preenchido no sistema a partir do molde original.

A Sintaxe de Criação e Inicialização

A criação de uma struct acontece fora da nossa função principal main, utilizando a palavra-chave type seguida do nome da estrutura (geralmente com a primeira letra maiúscula) e da palavra struct. Dentro das chaves, listamos os campos e seus respectivos tipos de dados. Quando vamos instanciar esse molde dentro da função, nós preenchemos esses campos associando cada chave ao seu respectivo valor.

Exemplo Prático Completo

Veja abaixo como fica o código estruturado para criar o molde de uma pessoa e gerar dois cadastros independentes na memória:

package main

import "fmt"

// Struct (Modelo que serve como planta baixa)
type Pessoa struct {
    nome  string
    idade int
}

func main() {
    // 1º Objeto criado a partir do molde Pessoa
    pessoa1 := Pessoa{
        nome:  "Ralf",
        idade: 36,
    }

    // 2º Objeto criado a partir do molde Pessoa
    pessoa2 := Pessoa{
        nome:  "Aline",
        idade: 33,
    }

    // Exibir os objetos completos no terminal
    fmt.Println(pessoa1)
    fmt.Println(pessoa2)
}

Finalizamos os conteúdos desta aula sobre structs. Espero que tenham gostado de aprender a criar seus próprios tipos de dados customizados no Go. Em caso de dúvidas, comentem nos vídeos disponíveis no YouTube.