Capítulo 05: Vetores e Slices 🦸‍♂️🛡️

Neste capítulo, vamos aprender a armazenar vários valores em uma única variável usando os Slices (Fatias) do Go, com o tema Os Vingadores (Marvel)!


📖 O que são Arrays e Slices em Go?

No Go, temos os arrays normais (com tamanho fixo que não muda) e os Slices (fatias), que são dinâmicos e podem crescer de tamanho. Na prática, quase sempre usamos Slices!


📖 Exemplo Guiado: Poder dos Vingadores

Vamos criar um slice para armazenar o nível de poder de 4 Vingadores e calcular a média de poder da equipe.

  1. Crie o arquivo poder_equipe.go na pasta src/:
package main
 
import "fmt"
 
func main() {
    // Criando um Slice (repare que não colocamos o tamanho nos colchetes!)
    poderes := []int{85, 90, 95, 100}
    soma := 0
 
    // Acessando os itens pelo índice
    fmt.Println("Poder do Homem de Ferro:", poderes[0])
    fmt.Println("Poder do Capitao America:", poderes[1])
 
    // Calculando a média usando um laço for no estilo 'range'
    for _, poder := range poderes { // O '_' ignora o índice
        soma += poder
    }
 
    // Convertendo para float para calcular a média
    media := float64(soma) / float64(len(poderes))
    
    fmt.Printf("\nMedia de poder da equipe: %.2f\n", media)
}

🕹️ Como Executar e Testar no VS Code

  1. Abra o terminal integrado.
  2. Execute: go run poder_equipe.go

Resultado Esperado:

Poder do Homem de Ferro: 85
Poder do Capitao America: 90
 
Media de poder da equipe: 92.50

📖 Recurso Go: Adicionando itens com append

Para adicionar novos itens a um slice, usamos a função append:

inventario := []string{"Pocao"}
inventario = append(inventario, "Espada") // Adiciona "Espada" ao final

📊 Ilustração Visual: Slice e Array

Um slice aponta para um array por baixo dos panos e pode crescer:

graph LR
    subgraph "Slice: poderes"
    A["Índice 0: 85"]
    B["Índice 1: 90"]
    C["Índice 2: 95"]
    D["Índice 3: 100"]
    end

🛠️ Prática Obrigatória 1: Inventário de Itens

Crie um programa chamado inventario.go que comece com um slice vazio de strings (pode usar []string{}). Adicione 3 itens ao inventário (ex: “Poção”, “Espada”, “Escudo”) usando a função append e depois exiba todos os itens usando um laço for com range.


🔑 Gabarito de Código

Prática 1: inventario.go

package main
 
import "fmt"
 
func main() {
    var inventario []string // Slice vazio
 
    inventario = append(inventario, "Pocao")
    inventario = append(inventario, "Espada")
    inventario = append(inventario, "Escudo")
 
    fmt.Println("--- Seu Inventario ---")
    for i, item := range inventario {
        fmt.Println(i+1, "-", item)
    }
}

Capitulo Anterior | Proximo Capitulo