Verktygsfunktioner i io
Copy, TeeReader, MultiWriter
Verktygsfunktioner i io är en gratis lektion i Go Academy på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Go Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Go Academy innehåller totalt 4 lektioner.
io-verktygslådan
Paketet io innehåller små, kraftfulla hjälpfunktioner som kombinerar läsare och skrivare: Copy, TeeReader, MultiWriter med flera.
io.Copy
io.Copy(dst, src) strömmar alla byte från en läsare till en skrivare och returnerar antalet.
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) kopierar exakt n byte – användbart när ni ska läsa ett prefix med känd längd.
package main
import (
"io"
"os"
"strings"
)
func main() {
io.CopyN(os.Stdout, strings.NewReader("abcdef"), 3)
os.Stdout.WriteString("\n")
}io.MultiWriter
io.MultiWriter skickar en skrivning till flera skrivare samtidigt – ungefär som Unix-kommandot 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) returnerar en läsare som kopierar allt den läser till w – perfekt för att logga eller beräkna en hash på data medan den strömmar förbi.
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 sammanfogar flera läsare till en enda sammanhängande dataström.
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 är en skrivare som kasserar allt – användbar när ni behöver tömma en läsare som ni inte behöver.
package main
import (
"fmt"
"io"
"strings"
)
func main() {
n, _ := io.Copy(io.Discard, strings.NewReader("ignored"))
fmt.Println("discarded:", n, "bytes")
}Hashning med TeeReader
En klassisk kombination: läs en dataström för dess egentliga ändamål samtidigt som en TeeReader skickar samma byte till en hash, så att ni beräknar en kontrollsumma i ett enda genomlopp.
io.Pipe
io.Pipe kopplar en skrivare till en läsare i minnet, ofta mellan goroutines, för strömmande producent-/konsumentmönster.
Välj rätt hjälpfunktion
- Flytta data:
Copy/CopyN - Duplicera utdata:
MultiWriter - Observera indata:
TeeReader - Sammanfoga indata:
MultiReader - Töm indata:
Discard
Kombinerbarhet
Alla dessa hjälpfunktioner använder io.Reader/io.Writer, så ni kan fritt kapsla in och kedja dem för att bygga avancerade datapipelines av små delar.
Snabbtest
Testa era kunskaper om io-verktygen.
Sammanfattning
Ni har lärt er io-paketets hjälpfunktioner.
Copy/CopyNströmmar dataMultiWriterduplicerar utdataTeeReaderobserverar indataMultiReadersammanfogar ochDiscardtömmer- Alla kan kombineras via Reader-/Writer-gränssnitten
Lär dig Go med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 51
- Lektioner
- 203
Vanliga frågor
Är lektionen ”Verktygsfunktioner i io” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Go Academy, inklusive ”Verktygsfunktioner i io”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Go Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Verktygsfunktioner i io”?
Copy, TeeReader, MultiWriter Ni övar på Go Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Go Academy?
Du behöver inga förkunskaper. Utbildningen i Go Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.
Hur lång tid tar lektionen ”Verktygsfunktioner i io”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Go Academy-lektionen?
Ja. Varje Go Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Reader-gränssnittet
- Writer-gränssnittet
- Verktygsfunktioner i io
- Implementera egna läsare