0Pricing
Go Academy · Lezione

Funzioni di utilità di io

Copy, TeeReader, MultiWriter

Funzioni di utilità di io è una lezione Go Academy gratuita su CoddyKit. Questa è la lezione 3 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.

Gli strumenti di io

Il pacchetto io include piccoli helper potenti che combinano reader e writer: Copy, TeeReader, MultiWriter e altri.

io.Copy

io.Copy(dst, src) trasferisce tutti i byte da un reader a un writer e restituisce il conteggio.

package main

import (
	"fmt"
	"io"
	"os"
	"strings"
)

func main() {
	n, _ := io.Copy(os.Stdout, strings.NewReader("copied\n"))
	fmt.Println("bytes:", n)
}

io.CopyN

io.CopyN(dst, src, n) copia esattamente n byte, una soluzione utile per leggere un prefisso di lunghezza nota.

package main

import (
	"io"
	"os"
	"strings"
)

func main() {
	io.CopyN(os.Stdout, strings.NewReader("abcdef"), 3)
	os.Stdout.WriteString("\n")
}

io.MultiWriter

io.MultiWriter invia una singola scrittura a più writer contemporaneamente, come il comando Unix tee.

package main

import (
	"bytes"
	"fmt"
	"io"
	"os"
)

func main() {
	var buf bytes.Buffer
	w := io.MultiWriter(os.Stdout, &buf)
	io.WriteString(w, "to both\n")
	fmt.Println("buffer copy:", buf.String())
}

io.TeeReader

io.TeeReader(r, w) restituisce un reader che copia tutto ciò che legge in w, perfetto per registrare o sottoporre a hashing i dati mentre scorrono.

package main

import (
	"bytes"
	"fmt"
	"io"
	"strings"
)

func main() {
	var spy bytes.Buffer
	tee := io.TeeReader(strings.NewReader("stream"), &spy)
	io.ReadAll(tee)
	fmt.Println("observed:", spy.String())
}

io.MultiReader

io.MultiReader concatena diversi reader in un unico flusso continuo.

package main

import (
	"fmt"
	"io"
	"strings"
)

func main() {
	r := io.MultiReader(strings.NewReader("Hello, "), strings.NewReader("World"))
	data, _ := io.ReadAll(r)
	fmt.Println(string(data))
}

io.Discard

io.Discard è un writer che scarta tutto, utile per svuotare un reader di cui non ha bisogno.

package main

import (
	"fmt"
	"io"
	"strings"
)

func main() {
	n, _ := io.Copy(io.Discard, strings.NewReader("ignored"))
	fmt.Println("discarded:", n, "bytes")
}

Calcolare un hash con TeeReader

Una combinazione classica consiste nel leggere un flusso per il suo scopo reale mentre un TeeReader invia gli stessi byte a un hash, così da calcolare un checksum in un solo passaggio.

io.Pipe

io.Pipe collega in memoria un writer a un reader, spesso tra goroutine, per realizzare pattern di streaming produttore/consumatore.

Scegliere l'helper giusto

  • Spostare dati: Copy / CopyN
  • Duplicare l'output: MultiWriter
  • Osservare l'input: TeeReader
  • Unire gli input: MultiReader
  • Svuotare l'input: Discard

Componibilità

Tutti questi helper usano io.Reader/io.Writer, quindi possono essere annidati e concatenati liberamente per costruire pipeline sofisticate a partire da componenti piccoli.

Verifica rapida

Verifichi la Sua conoscenza delle utility di io.

Riepilogo

Ha appreso gli helper di utilità di io.

  • Copy / CopyN trasferiscono i dati
  • MultiWriter duplica l'output
  • TeeReader osserva l'input
  • MultiReader unisce gli input, mentre Discard li svuota
  • Tutti si compongono tramite le interfacce Reader/Writer

Domande Frequenti

La lezione «Funzioni di utilità di io» è gratuita?

Sì — il testo completo di «Funzioni di utilità di io» è 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 «Funzioni di utilità di io»?

Copy, TeeReader, MultiWriter 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 3 di 4.

Quanto tempo richiede la lezione «Funzioni di utilità di io»?

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. L'interfaccia Reader
  2. L'interfaccia Writer
  3. Funzioni di utilità di io
  4. Implementare reader personalizzati
← Torna a Go Academy