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.
- Crie o arquivo
poder_equipe.gona pastasrc/:
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
- Abra o terminal integrado.
- 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)
}
}