0Pricing
Go Academy · Lezione

Sprintf e Fprintf

Formattare in stringhe e writer

Sprintf e Fprintf è una lezione Go Academy gratuita su CoddyKit. Questa è la lezione 2 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.

La famiglia Printf

Il pacchetto fmt offre tre funzioni di formattazione affini:

  • Printf scrive sull'output standard.
  • Sprintf restituisce una stringa formattata.
  • Fprintf scrive in qualsiasi writer.
package main

import "fmt"

func main() {
    fmt.Printf("hello %s\n", "world")
}

Sprintf restituisce una stringa

fmt.Sprintf formatta esattamente come Printf ma, invece di stampare, restituisce il risultato come stringa da memorizzare o riutilizzare.

package main

import "fmt"

func main() {
    msg := fmt.Sprintf("%s scored %d", "Bob", 95)
    fmt.Println(msg)
}

Costruire identificatori

Sprintf è utile per assemblare chiavi, nomi di file o etichette a partire da più parti.

package main

import "fmt"

func main() {
    id := fmt.Sprintf("user-%04d", 42)
    fmt.Println(id)
}

Formattare i numeri come testo

Utilizzi Sprintf per trasformare i numeri in stringhe formattate in modo accurato, ad esempio per rappresentare importi monetari.

package main

import "fmt"

func main() {
    label := fmt.Sprintf("Price: $%.2f", 7.5)
    fmt.Println(label)
}

Fprintf scrive in un writer

fmt.Fprintf accetta un io.Writer come primo argomento e formatta il contenuto al suo interno. os.Stdout è un writer di questo tipo.

package main

import (
    "fmt"
    "os"
)

func main() {
    fmt.Fprintf(os.Stdout, "to stdout: %d\n", 1)
}

Scrivere nell'errore standard

Invii la diagnostica a os.Stderr con Fprintf, così rimane separata dall'output normale.

package main

import (
    "fmt"
    "os"
)

func main() {
    fmt.Fprintf(os.Stderr, "warning: %s\n", "low disk")
}

Fprintf in un builder

Poiché anche strings.Builder è un io.Writer, è possibile formattare direttamente al suo interno e leggere la stringa alla fine.

package main

import (
    "fmt"
    "strings"
)

func main() {
    var b strings.Builder
    fmt.Fprintf(&b, "%s=%d;", "x", 10)
    fmt.Fprintf(&b, "%s=%d", "y", 20)
    fmt.Println(b.String())
}

Fprintf in un bytes.Buffer

Un bytes.Buffer è un altro comune destinatario di scrittura. Costruisca il contenuto e poi lo converta in una stringa.

package main

import (
    "bytes"
    "fmt"
)

func main() {
    var buf bytes.Buffer
    fmt.Fprintf(&buf, "row %d\n", 1)
    fmt.Fprintf(&buf, "row %d\n", 2)
    fmt.Print(buf.String())
}

Sprint e Fprint senza f

Le varianti con f accettano una stringa di formato. Rimuova la f per usare Sprint/Fprint, che concatenano semplicemente gli argomenti applicando la formattazione predefinita.

package main

import "fmt"

func main() {
    s := fmt.Sprint("a", 1, true)
    fmt.Println(s)
}

Sprintln aggiunge spazi

fmt.Sprintln unisce gli argomenti con degli spazi e aggiunge una nuova riga, restituendo la stringa.

package main

import "fmt"

func main() {
    s := fmt.Sprintln("x", 1, "y", 2)
    fmt.Print(s)
}

Scegliere lo strumento giusto

Scelga in base alla destinazione:

  • Serve una stringa? Utilizzi Sprintf.
  • Sta scrivendo su stdout? Utilizzi Printf.
  • Sta scrivendo in un file, buffer o flusso di errore? Utilizzi Fprintf.
package main

import (
    "fmt"
    "os"
)

func main() {
    s := fmt.Sprintf("count=%d", 3)
    fmt.Fprintf(os.Stdout, "%s\n", s)
}

Verifica rapida

Quale funzione restituisce il testo formattato invece di stamparlo?

Riepilogo: Sprintf e Fprintf

Ha imparato a conoscere la famiglia di funzioni di formattazione:

  • Sprintf restituisce una stringa.
  • Fprintf scrive in qualsiasi io.Writer (stdout, stderr, buffer e builder).
  • Le varianti senza f usano la formattazione predefinita.
package main

import (
    "fmt"
    "strings"
)

func main() {
    var b strings.Builder
    fmt.Fprintf(&b, "result=%s", fmt.Sprintf("%d%%", 80))
    fmt.Println(b.String())
}

Domande Frequenti

La lezione «Sprintf e Fprintf» è gratuita?

Sì — il testo completo di «Sprintf e Fprintf» è 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 «Sprintf e Fprintf»?

Formattare in stringhe e writer 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 2 di 4.

Quanto tempo richiede la lezione «Sprintf e Fprintf»?

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. Verbi di Printf
  2. Sprintf e Fprintf
  3. L'interfaccia Stringer
  4. Scansione dell'input
← Torna a Go Academy