0Pricing
Go Academy · Aula

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 contrato
  • bytes.Buffer, os.Stdout e respostas HTTP a implementam
  • Funciona com fmt.Fprintf e io.WriteString
  • Aceite io.Writer para 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

  1. A interface Reader
  2. A interface Writer
  3. Funções utilitárias de io
  4. Implementação de leitores personalizados
← Voltar para Go Academy