Como Trabalhar com Arrays no Golang
golang
Arrays são uma das estruturas de dados fundamentais para qualquer linguagem de programação. Pois elas armazenam uma coleção de elementos do mesmo tipo, organizados em uma sequência específica. Trabalhar com arrays pode ser essencial para resolver diversos problemas. Então, bora ficar por dentro, de forma detalhada, de como declarar, inicializar, acessar e manipular arrays em Go.

Características dos Arrays

1. Tamanho fixo: O tamanho de um array é determinado na sua criação e não pode ser alterado posteriormente.
2. Tipo homogêneo: Todos os elementos de um array devem ser do mesmo tipo.
3. Indexação baseada em zero: Os elementos são acessados usando índices, começando em zero.

Declaração e Inicialização de Arrays

Declaração de Arrays

Para declarar um array, você deve especificar o tipo dos elementos e o tamanho do array:
var arrayName [size]elementType
Exemplo:
var numbers [5]int

Inicialização de Arrays

Você pode inicializar um array no momento da declaração:
numbers := [5]int{1, 2, 3, 4, 5}
Ou pode inicializar parcialmente, com os elementos restantes assumindo o valor zero padrão do tipo:
numbers := [5]int{1, 2} fmt.Println(numbers) // Imprime: [1 2 0 0 0]

Inicialização de Arrays com Valores Calculados

Go permite inicializar arrays com valores calculados:
squares := [5]int{0: 1*1, 1: 2*2, 2: 3*3, 3: 4*4, 4: 5*5} fmt.Println(squares) // Imprime: [1 4 9 16 25]

Acessando Elementos de um Array

Os elementos de um array são acessados utilizando seus índices:
numbers := [5]int{1, 2, 3, 4, 5} fmt.Println(numbers[0]) // Imprime: 1 fmt.Println(numbers[4]) // Imprime: 5
Você também pode modificar os valores dos elementos:
numbers[0] = 10 fmt.Println(numbers[0]) // Imprime: 10

Arrays Multidimensionais

Go suporta arrays multidimensionais, permitindo a criação de matrizes e outras estruturas complexas:

Declaração de Arrays Multidimensionais

var matrix [3][3]int

Inicialização de Arrays Multidimensionais

matrix := [3][3]int{ {1, 2, 3}, {4, 5, 6}, {7, 8, 9}, }

Acessando Elementos de Arrays Multidimensionais

Os elementos são acessados usando múltiplos índices:
fmt.Println(matrix[1][2]) // Imprime: 6 matrix[1][2] = 10 fmt.Println(matrix[1][2]) // Imprime: 10

Beleza, agora vamos para parte legal

Iterando sobre Arrays

A iteração sobre arrays é uma operação comum e pode ser realizada utilizando loops:

Usando o Loop for

numbers := [5]int{1, 2, 3, 4, 5} for i := 0; i < len(numbers); i++ { fmt.Println(numbers[i]) }

Usando o Loop for range

O loop for range é mais idiomático em Go:
for index, value := range numbers { fmt.Println("Index:", index, "Value:", value) }

Funções que Operam em Arrays

Go permite a criação de funções que aceitam arrays como argumentos e retornam arrays. No entanto, você precisa levar em consideração os tamanhos fixos dos arrays.

Exemplo de Função para Somar Elementos de um Array

func Soma(arr [5]int) int { soma := 0 for _, valor := range arr { soma += valor } return soma } func main() { array := [5]int{1, 2, 3, 4, 5} resultado := Soma(array) fmt.Println("A soma dos elementos do array é:", resultado) }

Exemplo de Função para Inverter um Array

func Inverter(arr [5]int) [5]int { for i, j := 0, len(arr)-1; i < j; i, j = i+1, j-1 { arr[i], arr[j] = arr[j], arr[i] } return arr } func main() { array := [5]int{1, 2, 3, 4, 5} invertido := Inverter(array) fmt.Println("Array invertido:", invertido) }

Passagem de Arrays para Funções

Quando um array é passado para uma função, uma cópia do array é passada, não o array original. Isso significa que modificações feitas no array dentro da função não afetam o array original.
func ModificarArray(arr [5]int) { arr[0] = 100 fmt.Println("Dentro da função:", arr) } func main() { array := [5]int{1, 2, 3, 4, 5} ModificarArray(array) fmt.Println("Fora da função:", array) // O array original permanece inalterado }
Para modificar o array original, você pode passar um ponteiro para o array. E como fazer isso? É muito simples definir, basta adicionar o * junto ao tipo do ponteiro:
func ModificarArray(arr *[5]int) { arr[0] = 100 fmt.Println("Dentro da função:", arr) } func main() { array := [5]int{1, 2, 3, 4, 5} ModificarArray(&array) fmt.Println("Fora da função:", array) // O array original é modificado }
 
Trabalhar com arrays em Go pode parecer simples à primeira vista, mas envolve diversos detalhes que são cruciais para escrever código eficiente e idiomático. Este guia abordou as principais características, métodos de declaração e inicialização, formas de acesso e manipulação, além de práticas recomendadas para o uso de arrays em Go.
Arrays são úteis quando você sabe que o tamanho da coleção de elementos será fixo. Para cenários onde o tamanho pode variar, slices são uma alternativa mais flexível, que serão abordados em outros guias.

Aprenda programação do zero e DE GRAÇA

No Discover você vai descomplicar a programação, aprender a criar seu primeiro site com a mão na massa e iniciar sua transição de carreira.

COMECE A ESTUDAR AGORA