Interface Reader
Inti I/O Go
Interface Reader adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 1 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.
Inti I/O Go
io.Reader adalah satu antarmuka yang menyatukan semua masukan di Go: berkas, koneksi jaringan, teks, aliran terkompresi, dan lainnya.
Kode yang menerima io.Reader dapat bekerja dengan sumber apa pun.
Definisi Antarmuka
Kontraknya sangat singkat:
Read(p []byte) (n int, err error)
Fungsi tersebut mengisi p dengan paling banyak len(p) bita, lalu mengembalikan jumlahnya, yaitu n, serta sebuah kesalahan.
Membaca dari String
strings.NewReader mengubah string menjadi io.Reader.
package main
import (
"fmt"
"strings"
)
func main() {
r := strings.NewReader("Hello")
buf := make([]byte, 5)
n, _ := r.Read(buf)
fmt.Printf("read %d bytes: %s\n", n, buf[:n])
}Aturan n lalu Kesalahan
Sebuah Read dapat mengembalikan bita n > 0 dan sebuah kesalahan dalam pemanggilan yang sama. Selalu proses bita sebanyak n terlebih dahulu, lalu periksa kesalahannya.
Membaca dalam Pengulangan
Sebagian besar pembaca memerlukan pengulangan karena satu Read dapat mengembalikan lebih sedikit bita daripada yang diminta.
package main
import (
"fmt"
"io"
"strings"
)
func main() {
r := strings.NewReader("abcdef")
buf := make([]byte, 2)
for {
n, err := r.Read(buf)
if n > 0 {
fmt.Printf("%s ", buf[:n])
}
if err == io.EOF {
break
}
}
fmt.Println()
}io.ReadAll
Saat datanya kecil dan terbatas, io.ReadAll membaca semuanya ke dalam potongan bita untuk Anda.
package main
import (
"fmt"
"io"
"strings"
)
func main() {
r := strings.NewReader("read it all")
data, _ := io.ReadAll(r)
fmt.Println(string(data))
}Pembaca dari Bytes
bytes.NewReader membungkus potongan bita, berguna saat Anda sudah memiliki data di memori.
package main
import (
"bytes"
"fmt"
"io"
)
func main() {
r := bytes.NewReader([]byte{72, 105})
data, _ := io.ReadAll(r)
fmt.Println(string(data))
}Fungsi yang Menerima Pembaca
Tulislah fungsi yang menerima io.Reader, bukan tipe konkret. Fungsi yang sama kemudian dapat membaca dari berkas, soket, atau teks uji.
package main
import (
"fmt"
"io"
"strings"
)
func countBytes(r io.Reader) int {
data, _ := io.ReadAll(r)
return len(data)
}
func main() {
fmt.Println(countBytes(strings.NewReader("hello")))
}io.EOF Bukan Kesalahan
Perlakukan io.EOF sebagai sinyal normal bahwa aliran telah berakhir, bukan sebagai kegagalan. Hanya kesalahan lain yang menunjukkan masalah nyata.
LimitReader
io.LimitReader(r, n) membungkus pembaca agar berhenti setelah n bita — berguna untuk membatasi jumlah data yang dibaca.
package main
import (
"fmt"
"io"
"strings"
)
func main() {
r := io.LimitReader(strings.NewReader("abcdefgh"), 3)
data, _ := io.ReadAll(r)
fmt.Println(string(data))
}Mengapa Satu Antarmuka Unggul
- Memisahkan kode dari sumber data
- Mudah diuji dengan teks atau bita
- Dapat dirangkai dengan pembungkus seperti LimitReader, gzip, dan lainnya
Pemeriksaan Singkat
Ujilah pengetahuan Anda tentang io.Reader.
Ringkasan
Anda telah mempelajari antarmuka masukan inti.
Read(p []byte) (int, error)adalah seluruh kontraknya- Lakukan pengulangan hingga
io.EOF; proses bita sebanyak n terlebih dahulu io.ReadAll,strings/bytes.NewReader, danLimitReader- Terimalah
io.Readerdalam API Anda
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Interface Reader” gratis?
Ya — teks lengkap “Interface Reader” 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 “Interface Reader”?
Inti I/O Go 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 1 dari 4.
Berapa lama pelajaran “Interface Reader” 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.