Documentação de Go

Slices em Go

Como slices descrevem uma parte de um array, percorrem coleções e são passadas como valores com referência ao armazenamento subjacente.

Revisado em 2026-11-15

Slice como visão de um array

Um slice não é o array inteiro: ele descreve uma sequência com ponteiro para o armazenamento, comprimento e capacidade. Copiar um slice copia esse descritor; os elementos podem continuar compartilhados. Slices são valores e podem ser nil.

accounts := []Account{{ID: "a"}, {ID: "b"}}
first := accounts[:1]

Percorrer os elementos

range pode produzir o índice e o elemento em cada iteração. Quando só precisamos do elemento, o identificador _ recebe o índice e descarta esse valor. O blank identifier não declara uma variável que possa ser lida depois.

for _, account := range accounts {
    fmt.Println(account.ID)
}

Slice como parâmetro variádico

Em uma chamada a um parâmetro variádico, como NewRouter(handlers ...RouteRegister), podemos expandir um slice compatível com handlers... usando três pontos no argumento. Sem a expansão, uma slice não é aceita como uma lista de argumentos separados.

handlers := []RouteRegister{userHandler, transferHandler}
router := NewRouter(handlers...)

Fontes primárias