0Pricing
Go Academy · Lekcja

Funkcje pomocnicze io

Copy, TeeReader, MultiWriter

Funkcje pomocnicze io to bezpłatna lekcja Go Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Go Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Go Academy zawiera 4 lekcji w sumie.

Zestaw narzędzi io

Pakiet io udostępnia niewielkie, ale potężne funkcje pomocnicze łączące readery i writery: Copy, TeeReader, MultiWriter i inne.

io.Copy

io.Copy(dst, src) przesyła wszystkie bajty z readera do writera i zwraca ich liczbę.

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) kopiuje dokładnie n bajtów — przydaje się podczas odczytywania prefiksu o znanej długości.

package main

import (
	"io"
	"os"
	"strings"
)

func main() {
	io.CopyN(os.Stdout, strings.NewReader("abcdef"), 3)
	os.Stdout.WriteString("\n")
}

io.MultiWriter

io.MultiWriter rozsyła pojedynczy zapis jednocześnie do kilku writerów — podobnie jak uniksowe polecenie 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) zwraca reader, który kopiuje wszystko, co odczytuje, do w — idealne rozwiązanie do rejestrowania danych lub obliczania ich skrótu w trakcie przepływu.

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 łączy kilka readerów w jeden ciągły strumień.

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 to writer, który odrzuca wszystko — przydaje się do opróżniania niepotrzebnego readera.

package main

import (
	"fmt"
	"io"
	"strings"
)

func main() {
	n, _ := io.Copy(io.Discard, strings.NewReader("ignored"))
	fmt.Println("discarded:", n, "bytes")
}

Obliczanie skrótu za pomocą TeeReader

Klasyczne połączenie: odczytują Państwo strumień w jego właściwym celu, a TeeReader przekazuje te same bajty do funkcji skrótu, dzięki czemu suma kontrolna jest obliczana w jednym przebiegu.

io.Pipe

io.Pipe łączy writera z readerem w pamięci, często między goroutines, umożliwiając tworzenie strumieniowych wzorców producent–konsument.

Wybór właściwej funkcji pomocniczej

  • Przenoszenie danych: Copy / CopyN
  • Powielanie wyjścia: MultiWriter
  • Obserwowanie wejścia: TeeReader
  • Łączenie wejść: MultiReader
  • Opróżnianie wejścia: Discard

Komponowalność

Wszystkie te funkcje korzystają z io.Reader/io.Writer, więc można je swobodnie zagnieżdżać i łączyć, budując zaawansowane potoki z niewielkich elementów.

Szybki test

Proszę sprawdzić swoją wiedzę o narzędziach io.

Podsumowanie

Poznali Państwo pomocnicze funkcje pakietu io.

  • Copy / CopyN przesyłają dane strumieniowo
  • MultiWriter powiela wyjście
  • TeeReader obserwuje wejście
  • MultiReader łączy, a Discard opróżnia
  • Wszystkie można komponować za pomocą interfejsów Reader/Writer

Często zadawane pytania

Czy lekcja „Funkcje pomocnicze io” jest bezpłatna?

Tak — pełny tekst „Funkcje pomocnicze io” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Go Academy, przejdź na CoddyKit PRO. Kurs Go Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Funkcje pomocnicze io”?

Copy, TeeReader, MultiWriter Ćwiczysz Go Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Go Academy?

Nie wymagamy żadnego doświadczenia. Go Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Funkcje pomocnicze io”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Go Academy?

Tak. Każda lekcja Go Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Interfejs Reader
  2. Interfejs Writer
  3. Funkcje pomocnicze io
  4. Implementowanie własnych Readerów
← Powrót do Go Academy