Slices de Duas Dimensões (Matriz) na Linguagem Golang

in #slice5 years ago

Na linguagem Go podemos criar "fatias" ou "pedaços" de vetores usando a seguinte notação:

[]tipo

Por exemplo, para criar um slice (fatia) de elementos do tipo string, escrevemos:

[]string

Podemos criar uma lista de nomes usando fatias literais:

nomes := []string{"Joao", "Maria", "Zeus"}

nomes[0] // => Joao
nomes[1] // => Maria
nomes[2] // => Zeus

Sabemos criar uma fatia de uma dimensão, mas será que dá para adicionar mais uma dimensão? A resposta é sim. Basta adicionar mais um par de colchetes ao tipo da variável.

Por exemplo, no jogo da velha, temos uma grade ou tabuleiro de 3 linhas e 3 colunas (3x3). Podemos representar a grade usando uma fatia de duas dimensões, cada elemento da fatia exterior sendo uma fatia de elementos do tipo string:

grade := [][]string {
  []string{"O", "X", "-"},
  []string{"-", "O", "-"},
  []string{"-", "-", "X"},
}

A variável acima armazena informações que representam o seguinte tabuleiro:

O X -
- O -
- - X

Ao ler a definição da variável, podemos pensar da seguinte maneira:

[][]string -- Uma fatia ([]) de fatia de string ([]string)

Isto é, cada elemento da fatia será uma fatia também.

grade[0] lhe permite acessar o primeiro elemento da fatia, que tem valor:

[]string{"O", "X", "-"}

Para acessar cada elemento específico dessa fatia interior, usamos mais um par de colchetes à direita do que já temos, com o índice do elemento entre eles. Por exemplo, para acessar o X da fatia acima, usamos:

grade[0][1] // => X

O primeiro par de colchetes nos dá acesso à primeira linha enquanto o segundo par nos dá acesso a segunda coluna dessa primeira linha.

Para aprender mais sobre matrizes de pedaços na linguagem Go, assista às aulas do NBK Mundo Tech:

Nos vemos lá!