Go por Exemplo: Matrizes

No Go, uma matriz é uma seqüência numerada de elementos de um tamanho específico.

package main
import "fmt"
func main() {

Aqui nós criamos uma matriz a que irá manter exatamente 5 inteiros. O tipo de elementos e tamanho são ambos parte de um tipo de matriz. Por padrão uma matriz é de valor-zero, onde cada inteiro significa 0.

    var a [5]int
    fmt.Println("emp:", a)

Nós podemos definir um valor em um índice usando a sintaxe matriz[índice] = valor, e pegar o valor com matriz[índice].

    a[4] = 100
    fmt.Println("set:", a)
    fmt.Println("get:", a[4])

O len padrão retorna o tamanho de uma matriz.

    fmt.Println("len:", len(a))

Use esta sintaxe para declarar e inicializar uma matriz em uma linha.

    b := [5]int{1, 2, 3, 4, 5}
    fmt.Println("dcl:", b)

Tipos de matrizes são unidimensionais, mas você pode compor tipos para construir estruturas de dados multidimensionais.

    var twoD [2][3]int
    for i := 0; i < 2; i++ {
        for j := 0; j < 3; j++ {
            twoD[i][j] = i + j
        }
    }
    fmt.Println("2d: ", twoD)
}

Note que as matrizes aparecem na forma [v1 v2 v3 ...] quando são impressas com fmt.Println.

$ go run arrays.go
emp: [0 0 0 0 0]
set: [0 0 0 0 100]
get: 100
len: 5
dcl: [1 2 3 4 5]
2d:  [[0 1 2] [1 2 3]]

Você irá ver slices com mais freqüência do que matrizes no Go típico. Nós iremos ver esses slices a seguir.

Próximo exemplo: Slices.