0Pricing
Go Academy · Aula

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)) // 10

A 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)     // 15

fmt.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 times

Parâ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:

  • ...T reúne os argumentos finais em um []T dentro da função
  • Chame com valores individuais ou expanda uma fatia usando slice...
  • Funções integradas como append e fmt.Println sã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

  1. Fundamentos e assinaturas de funções
  2. Vários valores de retorno
  3. Funções variádicas
  4. defer, funções anônimas e closures
← Voltar para Go Academy