0Pricing
Go Academy · Lezione

Funzioni variadiche

Accettare un numero variabile di argomenti

Funzioni variadiche è una lezione Go Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Go Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Go Academy include 4 lezioni in totale.

Che cos'è una funzione variadica

Una funzione variadica accetta zero o più argomenti di un tipo specificato, raccolti in uno slice:

func sum(nums ...int) int {
    total := 0
    for _, n := range nums {
        total += n
    }
    return total
}

fmt.Println(sum(1, 2, 3, 4)) // 10

La sintassi ...T

Utilizzi ...T come tipo dell'ultimo parametro. All'interno della funzione, è un []T:

  • Può essere chiamata con 0 o più argomenti
  • Il parametro variadico deve essere l'ultimo
  • È consentito un solo parametro variadico per funzione

Espandere uno slice

Passi uno slice esistente a una funzione variadica utilizzando l'operatore di espansione ...:

nums := []int{1, 2, 3, 4, 5}
total := sum(nums...)  // spread the slice
fmt.Println(total)     // 15

fmt.Println è variadica

Molte funzioni della libreria standard sono variadiche. fmt.Println ha la firma func Println(a ...interface{}) (n int, err error): accetta un numero qualsiasi di valori di qualsiasi tipo.

append è variadica

La funzione integrata append è variadica:

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]

Variadiche con altri parametri

I parametri variadici vengono per ultimi. È possibile combinare parametri fissi e variadici:

func logf(level string, msg string, args ...interface{}) {
    fmt.Printf("[%s] "+msg+"\n", append([]interface{}{level}, args...)...)
}

Chiamata variadica vuota

Una funzione variadica può essere chiamata senza argomenti: lo slice sarà nil (o vuoto):

fmt.Println(sum())   // 0 — nil slice, loop runs 0 times

Parametro variadico o slice

Quando utilizzare un parametro variadico invece di uno slice:

  • Variadico: quando i chiamanti forniscono valori singoli direttamente (ad esempio, sum(1,2,3))
  • Slice: quando i chiamanti hanno sempre una raccolta già costruita
  • Il parametro variadico è più pratico nei punti di chiamata; internamente, entrambi funzionano allo stesso modo

Passare un variadico a un altro variadico

Inoltri gli argomenti variadici utilizzando l'operatore di espansione:

func logError(args ...interface{}) {
    log.Println(args...) // forward to log.Println
}

Creare pattern per le opzioni

...Option variadico è un pattern diffuso per la configurazione opzionale (functional options):

type Option func(*Server)

func NewServer(addr string, opts ...Option) *Server {
    s := &Server{addr: addr}
    for _, o := range opts {
        o(s)
    }
    return s
}

Verifica rapida

Come si passa uno slice a una funzione variadica?

Riepilogo: funzioni variadiche

Le funzioni variadiche rendono più puliti i punti di chiamata:

  • ...T raccoglie gli argomenti finali in uno []T all'interno della funzione
  • Le chiami con valori singoli oppure espanda uno slice con slice...
  • Funzioni integrate come append e fmt.Println sono variadiche
  • È consentito un solo parametro variadico e deve essere l'ultimo
  • Utilizzi il pattern functional options per progettare API espressive

Prossimo argomento: defer, funzioni anonime e closure.

Domande Frequenti

La lezione «Funzioni variadiche» è gratuita?

Sì — il testo completo di «Funzioni variadiche» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Go Academy, passa a CoddyKit PRO. Il corso Go Academy include 4 lezioni in totale.

Cosa imparerò in «Funzioni variadiche»?

Accettare un numero variabile di argomenti Eserciti Go Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Go Academy?

Non è richiesta alcuna esperienza precedente. Go Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Funzioni variadiche»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Go Academy?

Sì. Ogni lezione Go Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Basi e firme delle funzioni
  2. Più valori restituiti
  3. Funzioni variadiche
  4. defer, funzioni anonime e closure
← Torna a Go Academy