Um método em Go permite que seja possível declará-lo de forma a aceitar um número variável de parâmetros. Isso
é feito com auxílio do operador (...) que deve ser usado como prefixo que tem como objetivo
armazenar os parâmetros em um array ou vetor.
Sintaxe
func (val meu_tipo) nome_metodo( nome_parametro ...tipo_dado) tipo_retorno {
//corpo função
}
Caso seja necessário adicionar outros parâmetros à função, o parâmetro contendo o operador (...)
deve ser o último.
Sintaxe
func (val meu_tipo) nome_metodo( nome_parametro1 tipo_dado1, nome_parametroN ...tipo_dadoN) tipo_retorno {
//corpo função
}
No exemplo abaixo, vamos utilizar o comando de repetição for e a função range para percorrer a
lista parâmetros demonstrando o que foi discutido nesta parte do tutorial:
Exemplo 4
package main
import "fmt"
type meu_tipo struct {
valor string
id int
}
func (val meu_tipo) Show(desc string, nums ...int) {
fmt.Println(desc);
for _,i := range nums{
fmt.Print(i)
}
}
func main() {
teste := meu_tipo{"Teste", 999}
teste.Show("teste",1,2,3,4,5,6,7)
}
Saída
1234567