Go Academy · Lektion

Verktygsfunktioner i io

Copy, TeeReader, MultiWriter

Lektion 3 av 413 steg

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 / CopyN strömmar data
  • MultiWriter duplicerar utdata
  • TeeReader observerar indata
  • MultiReader sammanfogar och Discard tömmer
  • Alla kan kombineras via Reader-/Writer-gränssnitten
Gratis att börja

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

  1. Reader-gränssnittet
  2. Writer-gränssnittet
  3. Verktygsfunktioner i io
  4. Implementera egna läsare
← Tillbaka till Go Academy