Funções variádicas
Aceite um número variável de argumentos
Funções variádicas é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Go Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Go Academy inclui 4 aulas no total.
O que é uma função variádica
Uma função variádica aceita zero ou mais argumentos de um tipo especificado, reunidos em uma fatia:
func sum(nums ...int) int {
total := 0
for _, n := range nums {
total += n
}
return total
}
fmt.Println(sum(1, 2, 3, 4)) // 10A sintaxe ...T
Use ...T como o tipo do último parâmetro. Dentro da função, ele é um []T:
- Pode ser chamada com zero ou mais argumentos
- O parâmetro variádico deve ser o último
- É permitido apenas um parâmetro variádico por função
Expandindo uma fatia
Passe uma fatia existente para uma função variádica usando o operador de expansão ...:
nums := []int{1, 2, 3, 4, 5}
total := sum(nums...) // spread the slice
fmt.Println(total) // 15fmt.Println é variádica
Muitas funções da biblioteca padrão são variádicas. fmt.Println tem a assinatura func Println(a ...interface{}) (n int, err error) — ela aceita qualquer quantidade de valores de qualquer tipo.
append é variádica
A função integrada append é variádica:
a := []int{1, 2, 3}
b := []int{4, 5, 6}
a = append(a, b...) // append all of b into a
fmt.Println(a) // [1 2 3 4 5 6]Variádicas com outros parâmetros
Os parâmetros variádicos vêm por último. Combine parâmetros fixos e variádicos:
func logf(level string, msg string, args ...interface{}) {
fmt.Printf("[%s] "+msg+"\n", append([]interface{}{level}, args...)...)
}Chamada variádica vazia
Uma função variádica pode ser chamada sem argumentos — a fatia será nil (ou vazia):
fmt.Println(sum()) // 0 — nil slice, loop runs 0 timesParâmetro variádico versus parâmetro de fatia
Quando usar uma função variádica em vez de um parâmetro de fatia:
- Variádica: quando os chamadores fornecem valores individuais diretamente (por exemplo,
sum(1,2,3)) - Fatia: quando os chamadores sempre têm uma coleção previamente criada
- A função variádica é mais prática nos locais de chamada; internamente, ambas funcionam igualmente bem
Passando uma função variádica para outra
Encaminhe argumentos variádicos usando a expansão:
func logError(args ...interface{}) {
log.Println(args...) // forward to log.Println
}Construindo padrões de opções
...Option variádico é um padrão popular para configurações opcionais (opções funcionais):
type Option func(*Server)
func NewServer(addr string, opts ...Option) *Server {
s := &Server{addr: addr}
for _, o := range opts {
o(s)
}
return s
}Verificação rápida
Como passar uma fatia para uma função variádica?
Recapitulação: funções variádicas
Funções variádicas mantêm os locais de chamada limpos:
...Treúne os argumentos finais em um[]Tdentro da função- Chame com valores individuais ou expanda uma fatia usando
slice... - Funções integradas como
appendefmt.Printlnsão variádicas - É permitido apenas um parâmetro variádico, que deve ser o último
- Use o padrão de opções funcionais para um projeto de API expressivo
Próximo tópico: defer, funções anônimas e fechamentos.
Perguntas Frequentes
A aula “Funções variádicas” é grátis?
Sim — o texto completo de “Funções variádicas” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Go Academy, atualize para CoddyKit PRO. O curso de Go Academy inclui 4 aulas no total.
O que vou aprender em “Funções variádicas”?
Aceite um número variável de argumentos Você pratica Go Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Go Academy?
Nenhuma experiência prévia é necessária. Go Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Funções variádicas”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Go Academy?
Sim. Cada aula de Go Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Fundamentos e assinaturas de funções
- Vários valores de retorno
- Funções variádicas
- defer, funções anônimas e closures