0Pricing
Go Academy · Aula

Sprintf e Fprintf

Formate para strings e gravadores

Sprintf e Fprintf é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 2 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.

A família Printf

O pacote fmt tem três funções de formatação semelhantes:

  • Printf escreve na saída padrão.
  • Sprintf retorna uma cadeia de caracteres formatada.
  • Fprintf escreve em qualquer escritor.
package main

import "fmt"

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

Sprintf retorna uma cadeia de caracteres

fmt.Sprintf formata exatamente como Printf, mas, em vez de imprimir, retorna o resultado como uma cadeia de caracteres que você pode armazenar ou reutilizar.

package main

import "fmt"

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

Construindo identificadores

Sprintf é útil para montar chaves, nomes de arquivos ou rótulos a partir de partes.

package main

import "fmt"

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

Formatando números como texto

Use Sprintf para transformar números em cadeias de caracteres bem formatadas, como valores monetários.

package main

import "fmt"

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

Fprintf escreve em um escritor

fmt.Fprintf recebe um io.Writer como primeiro argumento e faz a formatação nele. os.Stdout é um desses escritores.

package main

import (
    "fmt"
    "os"
)

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

Escrevendo na saída de erro padrão

Envie informações de diagnóstico para os.Stderr com Fprintf, para mantê-las separadas da saída normal.

package main

import (
    "fmt"
    "os"
)

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

Fprintf em um Builder

Como strings.Builder também é um io.Writer, você pode fazer a formatação diretamente nele e ler a cadeia de caracteres ao final.

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 em um bytes.Buffer

Um bytes.Buffer é outro destino de escrita comum. Monte o conteúdo e depois converta-o em uma cadeia de caracteres.

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 sem f

As versões com f recebem uma cadeia de caracteres de formatação. Remova o f de Sprint/Fprint; essas funções simplesmente concatenam os argumentos usando a formatação padrão.

package main

import "fmt"

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

Sprintln adiciona espaços

fmt.Sprintln une os argumentos com espaços e acrescenta uma quebra de linha, retornando a cadeia de caracteres.

package main

import "fmt"

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

Escolhendo a ferramenta certa

Escolha com base no destino:

  • Precisa de uma cadeia de caracteres? Use Sprintf.
  • Vai escrever na saída padrão? Use Printf.
  • Vai escrever em um arquivo, buffer ou fluxo de erros? Use Fprintf.
package main

import (
    "fmt"
    "os"
)

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

Verificação rápida

Qual função retorna o texto formatado em vez de imprimi-lo?

Recapitulação: Sprintf e Fprintf

Você aprendeu a família de formatação:

  • Sprintf retorna uma cadeia de caracteres.
  • Fprintf escreve em qualquer io.Writer (saída padrão, saída de erro padrão, buffers e construtores).
  • As variantes sem f usam a formatação padrão.
package main

import (
    "fmt"
    "strings"
)

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

Perguntas Frequentes

A aula “Sprintf e Fprintf” é grátis?

Sim — o texto completo de “Sprintf e Fprintf” é 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 “Sprintf e Fprintf”?

Formate para strings e gravadores 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 2 de 4.

Quanto tempo leva a aula “Sprintf e Fprintf”?

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. Verbos de Printf
  2. Sprintf e Fprintf
  3. A interface Stringer
  4. Leitura de entrada
← Voltar para Go Academy