Hjælpefunktioner i io
Copy, TeeReader, MultiWriter
Hjælpefunktioner i io er en gratis Go Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Go Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Go Academy-kurset indeholder 4 lektioner i alt.
io-værktøjskassen
Pakken io indeholder små, kraftfulde hjælpefunktioner, der kombinerer læsere og skrivere: Copy, TeeReader, MultiWriter og flere.
io.Copy
io.Copy(dst, src) strømmer alle bytes fra en læser til en skriver og returnerer antallet.
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) kopierer præcis n bytes — nyttigt til at læse et præfiks med kendt længde.
package main
import (
"io"
"os"
"strings"
)
func main() {
io.CopyN(os.Stdout, strings.NewReader("abcdef"), 3)
os.Stdout.WriteString("\n")
}io.MultiWriter
io.MultiWriter sender én skrivning ud til flere skrivere på én gang — ligesom Unix-kommandoen 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) returnerer en læser, der kopierer alt, den læser, til w — perfekt til logning eller hashing af data, mens de strømmer igennem.
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 sammenkæder flere læsere til én sammenhængende strø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 er en skriver, der kasserer alt — nyttig til at tømme en læser, du ikke har brug for.
package main
import (
"fmt"
"io"
"strings"
)
func main() {
n, _ := io.Copy(io.Discard, strings.NewReader("ignored"))
fmt.Println("discarded:", n, "bytes")
}Hashing med TeeReader
En klassisk kombination: Læs en strøm til dens egentlige formål, mens en TeeReader sender de samme bytes ind i en hash, så du beregner en kontrolsum i én gennemlæsning.
io.Pipe
io.Pipe forbinder en skriver med en læser i hukommelsen, ofte på tværs af goroutines, til datastrømme efter producent-/forbrugermønsteret.
Vælg den rigtige hjælpefunktion
- Flyt data:
Copy/CopyN - Duplikér uddata:
MultiWriter - Observér inddata:
TeeReader - Sammenføj inddata:
MultiReader - Tøm inddata:
Discard
Sammensættelighed
Disse hjælpefunktioner bruger alle io.Reader/io.Writer, så de frit kan indlejres og kædes sammen for at opbygge avancerede datapipelines af små dele.
Hurtig kontrol
Test din viden om io-hjælpefunktioner.
Opsummering
Du har lært io-hjælpefunktionerne.
Copy/CopyNstrømmer dataMultiWriterduplikerer uddataTeeReaderobserverer inddataMultiReadersammenføjer, ogDiscardtømmer- Alle kan sammensættes via Reader-/Writer-grænsefladerne
Lær Go med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 51
- Lektioner
- 203
Ofte stillede spørgsmål
Er lektionen “Hjælpefunktioner i io” gratis?
Ja — alle 3 lektioner i læringssporet Go Academy, inklusive “Hjælpefunktioner i io”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Go Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Hjælpefunktioner i io”?
Copy, TeeReader, MultiWriter Du øver dig i Go Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Go Academy?
Der kræves ingen tidligere erfaring. Go Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.
Hvor lang tid tager lektionen “Hjælpefunktioner i io”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Go Academy-lektion?
Ja. Alle Go Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Reader-interfacet
- Writer-interfacet
- Hjælpefunktioner i io
- Implementering af egne readers