AnyCompiler

Arrays e Slices

Um array tem um tamanho fixo que é parte do seu tipo — [3]int e [5]int são tipos completamente diferentes. Arrays existem no Go, mas são usados bem menos do que slices no código do dia a dia.

package main

import "fmt"

func main() {
	var grid [3]int
	grid[0] = 10
	grid[1] = 20
	grid[2] = 30
	fmt.Println(grid, len(grid))
}
Output
[10 20 30] 3

Slices: a coleção preferida do Go

Um slice é uma visão flexível e crescente sobre um array subjacente — append() adiciona um item (crescendo o armazenamento subjacente automaticamente se necessário), e fazer slicing com [start:end] te dá uma visão sobre um intervalo sem copiar os dados.

package main

import "fmt"

func main() {
	fruits := []string{"apple", "banana", "cherry"}
	fruits = append(fruits, "date")
	fmt.Println(fruits)

	firstTwo := fruits[0:2]
	fmt.Println(firstTwo)
}
Output
[apple banana cherry date]
[apple banana]

A seguir: maps — a coleção chave-valor integrada do Go, e o idiom comma-ok para verificar se uma chave existe.

Practice exercise

Crie um slice numbers := []int{4, 8, 15, 16}, use append para adicionar 23, depois imprima o slice.