Olá, pessoal! Vamos dar continuidade ao nosso treinamento no canal Ralf Lima. Na última aula, vimos que os vetores possuem um tamanho rígido e fixo. Hoje, vamos aprender sobre uma das estruturas mais fantásticas e utilizadas no Go: o Slice (Fatia).
Um slice é construído por cima de um vetor, mas com uma diferença crucial: ele possui um tamanho dinâmico. Isso significa que você pode iniciar um slice com apenas um elemento e ir adicionando ou removendo itens conforme o seu programa roda, sem se preocupar em definir um limite máximo logo de cara.
Diferente de outras linguagens que possuem métodos prontos como .push() ou .splice(), o Go utiliza funções nativas globais e uma sintaxe de fatiamento muito poderosa para manipular listas. Veja as principais operações na tabela abaixo:
| Operação / Função | O que ela faz? | Exemplo Baseado no Código |
|---|---|---|
[]tipo{valores} |
Criação de Slice: Declara uma lista dinâmica sem colocar nenhum número dentro dos colchetes. | nomes := []string{"Ralf"} |
append() |
Adicionar Elemento: Insere um ou mais novos elementos no final do seu slice atual de forma automática. | nomes = append(nomes, "Aline") |
| Substituição direta | Alterar Elemento: Acessa o índice exato através dos colchetes e altera o valor que está guardado ali. | nomes[1] = "Rebeca" |
slice[início:fim] |
Fatiamento (Slicing): Extrai uma subseção da lista. Se omitir o início, começa do 0. Se omitir o fim, vai até o último. | nomes[:1] (pega do início até o índice 1) |
... (Variadic) |
Expansão de Itens: Despaca os elementos de um slice para que eles sejam passados como argumentos individuais. | nomes[2:]... |
Uma curiosidade que sempre chama a atenção dos iniciantes é que o Go **não possui uma função nativa chamada "remove"**. Para remover um item, nós fazemos um truque de fatiamento: pegamos a fatia que vem antes do item indesejado e juntamos (usando o append e os três pontinhos ...) com a fatia que vem logo depois dele. Visualmente, é como se cortássemos o elemento fora e colássemos as duas partes restantes!
Veja abaixo como fica o código estruturado para criar o slice, adicionar novos inscritos, alterar dados, realizar a remoção e listar o resultado final:
package main
import "fmt"
func main() {
// Criar slice dinâmico com um valor inicial
nomes := []string{"Ralf"}
// Adicionar nomes dinamicamente no final da lista
nomes = append(nomes, "Aline")
nomes = append(nomes, "Henrique")
nomes = append(nomes, "Gabriela")
nomes = append(nomes, "Fernanda")
// Alterar o nome contido na posição de índice 1 (Muda "Aline" para "Rebeca")
nomes[1] = "Rebeca"
// Remover um nome (Neste caso, remove o elemento do índice 1: "Rebeca")
// Junta do início até o índice 1 (exclusivo) com tudo do índice 2 em diante
nomes = append(nomes[:1], nomes[2:]...)
// Exibir todos os nomes atualizados que restaram no slice
fmt.Println(nomes)
}
Finalizamos os conteúdos desta aula sobre Slices. Espero que tenham gostado de ver como é fácil trabalhar com listas dinâmicas e maleáveis no Go. Em caso de dúvidas, comentem nos vídeos disponíveis no YouTube.