Reader Arayüzü
Go G/Ç'sinin temeli
Reader Arayüzü, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Go Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Go Academy kursu toplamda 4 dersten oluşur.
Go G/Ç'sinin Kalbi
io.Reader, Go'daki tüm girdileri birleştiren tek bir arayüzdür: dosyalar, ağ bağlantıları, dizeler, sıkıştırılmış akışlar ve daha fazlası.
io.Reader kabul eden kod, herhangi bir kaynakla çalışır.
Arayüz Tanımı
Sözleşme oldukça küçüktür:
Read(p []byte) (n int, err error)
p değerini en fazla len(p) baytla doldurur, kaç bayt doldurduğunu (n) ve bir hata döndürür.
String'den Okuma
strings.NewReader, bir dizeyi io.Reader'a dönüştürür.
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])
}Önce n, Sonra err Kuralı
Bir Read çağrısı, aynı çağrıda hem n > 0 bayt hem de bir hata döndürebilir. Önce n baytı işleyin, ardından hatayı denetleyin.
Döngüde Okuma
Çoğu okuyucu bir döngü gerektirir; çünkü tek bir Read çağrısı istenenden daha az bayt döndürebilir.
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
Veri küçük ve sınırları belliyse io.ReadAll, her şeyi sizin için bir bayt dilimine okur.
package main
import (
"fmt"
"io"
"strings"
)
func main() {
r := strings.NewReader("read it all")
data, _ := io.ReadAll(r)
fmt.Println(string(data))
}Bytes'tan Okuyucular
bytes.NewReader, bir bayt dilimini sarar; veriler zaten bellekte olduğunda kullanışlıdır.
package main
import (
"bytes"
"fmt"
"io"
)
func main() {
r := bytes.NewReader([]byte{72, 105})
data, _ := io.ReadAll(r)
fmt.Println(string(data))
}Reader Kabul Eden İşlevler
Somut türler yerine io.Reader alan işlevler yazın. Böylece aynı işlev bir dosyadan, yuvadan veya sınama dizesinden okuyabilir.
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 Hata Değildir
io.EOF değerini bir başarısızlık olarak değil, akışın sona erdiğini bildiren normal bir işaret olarak ele alın. Yalnızca diğer hatalar gerçek sorunlara işaret eder.
LimitReader
io.LimitReader(r, n), bir okuyucuyu n bayttan sonra duracak şekilde sarar; ne kadar veri okuyacağınızı sınırlamak için kullanışlıdır.
package main
import (
"fmt"
"io"
"strings"
)
func main() {
r := io.LimitReader(strings.NewReader("abcdefgh"), 3)
data, _ := io.ReadAll(r)
fmt.Println(string(data))
}Tek Arayüzün Avantajı
- Kodu veri kaynaklarından bağımsızlaştırır
- Dizelerle/baytlarla sınama yapmayı kolaylaştırır
- LimitReader, gzip ve benzeri sarmalayıcılarla birleştirilebilir
Hızlı Kontrol
io.Reader bilginizi sınayın.
Özet
Temel girdi arayüzünü öğrendiniz.
Read(p []byte) (int, error)sözleşmenin tamamıdırio.EOFgelene kadar döngü kurun; n baytı önce işleyinio.ReadAll,strings/bytes.NewReader,LimitReader- API'lerinizde
io.Readerkabul edin
Sıkça Sorulan Sorular
“Reader Arayüzü” dersi ücretsiz mi?
Evet — “Reader Arayüzü” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Go Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Go Academy kursu toplamda 4 dersten oluşur.
“Reader Arayüzü” dersinde ne öğreneceğim?
Go G/Ç'sinin temeli Go Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Go Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Go Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Reader Arayüzü” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Go Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Go Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.