Golang: Arrays e Slices (Parte - 6)
Vamos estudar arrays e slices em Go e suas diferenças. Esses conceitos são fundamentais para manipulação de dados em Go.
Declarando um Array
Um array em Go é uma estrutura de dados com tamanho fixo. Sim, fixo. Veja o exemplo abaixo:
// Declarando um array de inteiros
var numeros [5]int
// Atribuindo valores ao array
numeros[0] = 10
numeros[1] = 20
numeros[2] = 30
numeros[3] = 40
numeros[4] = 50
// Imprimindo o array
fmt.Println("Array:", numeros)
No código acima:
- Declaramos um array chamado
numeros
com 5 posições. - Atribuímos valores a cada posição usando índices.
- Por fim, imprimimos o array completo.
Mas o que acontece se tentarmos adicionar mais elementos?
// Tentando adicionar mais elementos
numeros[5] = 60 // Isso causará um erro de compilação
Isso resultará em um erro, pois o array tem um tamanho fixo de 5.
Declarando um Array com Valores Iniciais
Você também pode declarar um array com valores iniciais:
// Declarando e inicializando um array de strings
var frutas = [3]string{"maçã", "banana", "laranja"}
// Imprimindo o array
fmt.Println("Array:", frutas)
Aqui:
- Declaramos um array chamado
frutas
com 3 elementos iniciais. - Imprimimos o array completo.
- O tamanho do array é inferido automaticamente com base nos valores iniciais.
- Você pode omitir o tamanho do array, e o Go irá inferir automaticamente.
// Declarando um array sem especificar o tamanho
var numeros = [...]int{10, 20, 30, 40, 50}
// Imprimindo o array
fmt.Println("Array:", numeros)
Neste caso, o Go calcula o tamanho do array com base nos valores fornecidos.
Acessando Elementos do Array
Para acessar elementos de um array, você usa o índice. Lembre-se de que os índices começam em 0:
// Acessando elementos do array
fmt.Println("Primeiro elemento:", numeros[0]) // Saída: 10
fmt.Println("Segundo elemento:", numeros[1]) // Saída: 20
Aqui:
- Acessamos o primeiro e o segundo elementos do array
numeros
usando seus índices. - Imprimimos os valores correspondentes.
Percorrendo um Array
Para percorrer um array, você pode usar um loop for
:
// Percorrendo o array
for i := 0; i < len(numeros); i++ {
fmt.Println("Elemento", i, ":", numeros[i])
}
Aqui:
- Usamos um loop
for
para percorrer o arraynumeros
. - A função
len
retorna o tamanho do array. - Imprimimos cada elemento do array com seu índice correspondente.
É isso, bem simples. Nada demais, como tem que ser. Agora, vamos entender os slices.
Trabalhando com Slices
Os slices são mais flexíveis que os arrays, pois podem crescer ou diminuir dinamicamente. Veja como utilizá-los:
// Declarando e inicializando um slice de strings
frutas := []string{"maçã", "banana", "laranja"}
// Adicionando um elemento ao slice
frutas = append(frutas, "uva")
// Imprimindo o slice
fmt.Println("Slice:", frutas)
Aqui:
- Criamos um slice chamado
frutas
com três elementos iniciais. - Usamos a função
append
para adicionar o elemento"uva"
. - Imprimimos o slice atualizado.
Diferenças entre Arrays e Slices
-
Tamanho:
- Arrays têm tamanho fixo, definido na declaração.
- Slices têm tamanho dinâmico e podem crescer conforme necessário.
-
Flexibilidade:
- Arrays são úteis quando o tamanho é conhecido e fixo.
- Slices são mais usados no dia a dia devido à sua flexibilidade.
Simples!