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:
Printfescreve na saída padrão.Sprintfretorna uma cadeia de caracteres formatada.Fprintfescreve 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:
Sprintfretorna uma cadeia de caracteres.Fprintfescreve em qualquerio.Writer(saída padrão, saída de erro padrão, buffers e construtores).- As variantes sem
fusam 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
- Verbos de Printf
- Sprintf e Fprintf
- A interface Stringer
- Leitura de entrada