0Pricing
Go Academy · Pelajaran

Fungsi Utilitas io

Copy, TeeReader, MultiWriter

Fungsi Utilitas io adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Go Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Go Academy mencakup 4 pelajaran total.

Kotak Peralatan io

Paket io menyediakan pembantu kecil yang andal untuk menggabungkan pembaca dan penulis: Copy, TeeReader, MultiWriter, dan lainnya.

io.Copy

io.Copy(dst, src) mengalirkan semua byte dari pembaca ke penulis dan mengembalikan jumlahnya.

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) menyalin tepat n byte—berguna untuk membaca awalan yang panjangnya sudah diketahui.

package main

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

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

io.MultiWriter

io.MultiWriter meneruskan satu penulisan ke beberapa penulis sekaligus—seperti perintah Unix 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) mengembalikan pembaca yang menyalin semua yang dibacanya ke dalam w—sempurna untuk pencatatan atau penghitungan nilai hash saat data mengalir.

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 menggabungkan beberapa pembaca menjadi satu aliran berkelanjutan.

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 adalah penulis yang membuang semuanya—berguna untuk mengosongkan pembaca yang tidak Anda perlukan.

package main

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

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

Menghitung Hash dengan TeeReader

Kombinasi klasik: baca aliran untuk tujuan sebenarnya sambil TeeReader menyalurkan byte yang sama ke nilai hash, sehingga Anda menghitung nilai pemeriksaan dalam satu lintasan.

io.Pipe

io.Pipe menghubungkan penulis ke pembaca di memori, sering kali melalui beberapa goroutine, untuk pola pengaliran produsen/konsumen.

Memilih Pembantu yang Tepat

  • Memindahkan data: Copy / CopyN
  • Menduplikasi keluaran: MultiWriter
  • Mengamati masukan: TeeReader
  • Menggabungkan masukan: MultiReader
  • Mengosongkan masukan: Discard

Kemampuan Dikomposisikan

Semua pembantu ini menggunakan io.Reader/io.Writer, sehingga dapat disusun bertingkat dan dirangkai dengan bebas untuk membangun alur canggih dari komponen kecil.

Pemeriksaan Singkat

Ujilah pengetahuan Anda tentang utilitas io.

Ringkasan

Anda telah mempelajari pembantu utilitas io.

  • Copy / CopyN mengalirkan data
  • MultiWriter menduplikasi keluaran
  • TeeReader mengamati masukan
  • MultiReader menggabungkan, sedangkan Discard mengosongkan
  • Semuanya dapat dikomposisikan melalui antarmuka Reader/Writer

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Fungsi Utilitas io” gratis?

Ya — teks lengkap “Fungsi Utilitas io” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Go Academy, upgrade ke CoddyKit PRO. Kursus Go Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Fungsi Utilitas io”?

Copy, TeeReader, MultiWriter Kamu berlatih Go Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Go Academy?

Tidak diperlukan pengalaman sebelumnya. Go Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Fungsi Utilitas io” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Go Academy ini?

Ya. Setiap pelajaran Go Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Interface Reader
  2. Interface Writer
  3. Fungsi Utilitas io
  4. Mengimplementasikan Reader Kustom
← Kembali ke Go Academy