Go Academy · Lektion

Hjælpefunktioner i io

Copy, TeeReader, MultiWriter

Lektion 3 af 413 trin

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 / CopyN strømmer data
  • MultiWriter duplikerer uddata
  • TeeReader observerer inddata
  • MultiReader sammenføjer, og Discard tømmer
  • Alle kan sammensættes via Reader-/Writer-grænsefladerne
Gratis at komme i gang

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

  1. Reader-interfacet
  2. Writer-interfacet
  3. Hjælpefunktioner i io
  4. Implementering af egne readers
← Tilbage til Go Academy