É assim que se pode anexar duas fatias no Go:
slice1 := []int{0, 1, 2, 3, 4}
slice2 := []int{5, 6, 7, 8}
fmt.Println(append(slice1, slice2...))
Executar os códigos acima produzirá:
[0 1 2 3 4 5 6 7 8]
Observe que o ...
anexado a slice2
informa ao compilador para tratar slice2
como uma lista de argumentos. Se removemos o ...
, alterando as chamadas de função para se parecerem com:
fmt.Println(append(slice1, slice2))
o compilador vai reclamar dizendo isso cannot use slice2 (type []int) as type int in append
.
Dar uma olhada na assinatura do produto append
fornece mais pistas.
func append(slice []Type, elems ...Type) []Type
Nossas chamadas de função acima informam ao compilador que nosso Type
é int
. Portanto, a menos que anexar ...
a slice2
, o compilador irá emitir um “erro de incompatibilidade de tipo”, esperando a sua pós-primeiro argumento para ser um número arbitrário de variáveis do tipo int
, mas em vez de ser dada uma variável do tipo []int
.