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/CopyNprzesyłają dane strumieniowoMultiWriterpowiela wyjścieTeeReaderobserwuje wejścieMultiReaderłączy, aDiscardopróż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
- Interfejs Reader
- Interfejs Writer
- Funkcje pomocnicze io
- Implementowanie własnych Readerów