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á!