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/CopyNtrasferiscono i datiMultiWriterduplica l'outputTeeReaderosserva l'inputMultiReaderunisce gli input, mentreDiscardli 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
- L'interfaccia Reader
- L'interfaccia Writer
- Funzioni di utilità di io
- Implementare reader personalizzati