Pular para conteúdo

Aula 04 - Estruturas de Dados Avançadas 🗄️

Gerenciando Coleções e Tipos Customizados


Agenda de Hoje 📅

  1. Arrays vs Slices
  2. Manipulação de Slices (Append/Slice)
  3. Maps: Chave e Valor
  4. Structs: O Coração dos Dados
  5. Métodos e Comportamento
  6. Mini-Projeto: Escola de Gophers

1. Arrays vs Slices 🍕

  • Arrays: Rígidos, tamanho faz parte do tipo.
  • Slices: Flexíveis, dinâmicos. O "padrão" do Go.
// Array
var a [2]string

// Slice
s := []string{"A", "B"}
s = append(s, "C")

2. Anatomia de um Slice 🔍

graph LR
    subgraph "Capacidade (Reservado)"
        D3[Elemento 3]
        D4[Vazio]
    end
    subgraph "Slice (Existente)"
        D1[Elemento 1]
        D2[Elemento 2]
    end
    Ptr[Ponteiro] --> D1

3. Maps: O Dicionário Veloz 🗝️

  • Coleção de pares chave-valor.
  • Chaves devem ser comparáveis.
estoque := make(map[string]int)
estoque["teclado"] = 50

valor, existe := estoque["mouse"]

4. Structs: Seus Próprios Tipos 🏗️

  • Go não tem classes, tem Structs.
  • Agrupam dados de tipos diferentes.
type Aluno struct {
    Nome  string
    Idade int
    Notas []float64
}

5. Adicionando Comportamento (Métodos) ⚡

  • Funções "anexadas" a um tipo.
func (a Aluno) Media() float64 {
    total := 0.0
    for _, n := range a.Notas {
        total += n
    }
    return total / float64(len(a.Notas))
}

6. Mini-Projeto: Escola de Gophers 🚀

  • Criar um sistema que armazena alunos em um map.
  • Cada aluno é uma struct.
  • Calcular e exibir médias.

Resumo da Aula ✅

  • Slices são extensões dinâmicas de memória.
  • Maps oferecem performance em buscas por chaves.
  • Structs modelam o domínio do seu negócio.

Próxima Aula: Interfaces e Flexibilidade 🧩

  • O segredo do Polimorfismo em Go.
  • Programação baseada em Composição.

Dúvidas? 🤔

"A estrutura de dados correta resolve metade do problema."