A interface Writer
Escreva em qualquer destino
A interface Writer é 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.
Escrevendo em qualquer lugar
io.Writer unifica todas as saídas: arquivos, rede, memórias intermediárias, saída padrão e respostas HTTP. Uma interface, muitos destinos.
A definição da interface
O contrato:
Write(p []byte) (n int, err error)
Ele grava p e retorna quantos bytes foram gravados, além de qualquer erro.
Escrevendo em um Buffer
bytes.Buffer implementa io.Writer e reúne a saída na memória.
package main
import (
"bytes"
"fmt"
)
func main() {
var buf bytes.Buffer
buf.Write([]byte("Hello, "))
buf.WriteString("Writer!")
fmt.Println(buf.String())
}Escrevendo na saída padrão
os.Stdout é um io.Writer. os.Stderr também.
package main
import (
"io"
"os"
)
func main() {
io.WriteString(os.Stdout, "straight to stdout\n")
}fmt.Fprintf e gravadores
A família Fprint grava texto formatado em qualquer io.Writer.
package main
import (
"bytes"
"fmt"
)
func main() {
var buf bytes.Buffer
fmt.Fprintf(&buf, "x = %d\n", 42)
fmt.Print(buf.String())
}O erro de gravação curta
Se Write retornar n < len(p) com um erro nulo, isso será uma violação do contrato chamada de gravação curta. Gravadores compatíveis relatam esse caso como io.ErrShortWrite.
Funções que aceitam gravadores
Escreva funções que recebam io.Writer para que a mesma lógica possa direcionar a saída para um arquivo, um buffer ou a rede.
package main
import (
"fmt"
"io"
"os"
)
func greet(w io.Writer, name string) {
fmt.Fprintf(w, "Hi, %s\n", name)
}
func main() {
greet(os.Stdout, "Ada")
}Desacoplando a saída para testes
Como as funções recebem io.Writer, os testes capturam a saída em um bytes.Buffer e fazem asserções sobre ela — não é necessário tocar em arquivos reais.
package main
import (
"bytes"
"fmt"
)
func emit(w *bytes.Buffer) { fmt.Fprint(w, "result") }
func main() {
var b bytes.Buffer
emit(&b)
fmt.Println("captured:", b.String())
}Escrevendo bytes versus strings
Write recebe uma fatia de bytes; io.WriteString é uma conveniência para strings que evita uma alocação quando o gravador oferece suporte a ela.
package main
import (
"io"
"os"
)
func main() {
os.Stdout.Write([]byte("bytes\n"))
io.WriteString(os.Stdout, "string\n")
}Sempre verifique os erros de escrita
Uma escrita em um arquivo ou socket pode falhar no meio do fluxo (disco cheio, conexão interrompida). Verifique o erro retornado, especialmente para gravadores que não sejam de memória.
Uma interface, vários destinos
- Arquivos, buffers, saída padrão/erro padrão
- Gravadores de resposta HTTP
- Envoltórios de compressão e criptografia
Todos satisfazem io.Writer, portanto seu código permanece independente do destino.
Verificação rápida
Teste seus conhecimentos sobre io.Writer.
Recapitulação
Você aprendeu a interface fundamental de saída.
Write(p []byte) (int, error)é todo o contratobytes.Buffer,os.Stdoute respostas HTTP a implementam- Funciona com
fmt.Fprintfeio.WriteString - Aceite
io.Writerpara criar APIs flexíveis e fáceis de testar
Perguntas Frequentes
A aula “A interface Writer” é grátis?
Sim — o texto completo de “A interface Writer” é 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 “A interface Writer”?
Escreva em qualquer destino 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 “A interface Writer”?
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
- A interface Reader
- A interface Writer
- Funções utilitárias de io
- Implementação de leitores personalizados