Özel Reader'lar Uygulama
Kendi akışlarınızı oluşturun
Özel Reader'lar Uygulama, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 4. 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.
Kendi Akışlarınızı Oluşturun
Tek yöntemli io.Reader arayüzünü uygulayarak özel veri kaynakları oluşturabilirsiniz. Türünüz böylece tüm io yardımcılarıyla çalışır.
Uygulanacak Yöntem
Türünüz üzerinde Read(p []byte) (n int, err error) yöntemini uygulayın. p'yi doldurun, sayıyı döndürün ve işlem tamamlandığında io.EOF döndürün.
Sabit Bir Okuyucu
Burada, LimitReader ile sınırlandırılmış ve sürekli aynı baytı üreten bir okuyucu yer alıyor.
package main
import (
"fmt"
"io"
)
type constReader struct{ ch byte }
func (c constReader) Read(p []byte) (int, error) {
for i := range p {
p[i] = c.ch
}
return len(p), nil
}
func main() {
r := io.LimitReader(constReader{ch: 'A'}, 5)
data, _ := io.ReadAll(r)
fmt.Println(string(data))
}EOF Bildirimi
Kaynağınız tükendiğinde io.EOF döndürün. Bunu tek başına veya son baytlarla birlikte döndürebilirsiniz.
package main
import (
"fmt"
"io"
)
type oneShot struct{ done bool }
func (o *oneShot) Read(p []byte) (int, error) {
if o.done {
return 0, io.EOF
}
o.done = true
n := copy(p, []byte("once"))
return n, nil
}
func main() {
data, _ := io.ReadAll(&oneShot{})
fmt.Println(string(data))
}Bir Dilimden Okuma
Özel bir okuyucu, temel verilerdeki konumu izleyebilir ve her çağrıda bir parça döndürebilir.
package main
import (
"fmt"
"io"
)
type sliceReader struct {
data []byte
pos int
}
func (s *sliceReader) Read(p []byte) (int, error) {
if s.pos >= len(s.data) {
return 0, io.EOF
}
n := copy(p, s.data[s.pos:])
s.pos += n
return n, nil
}
func main() {
r := &sliceReader{data: []byte("custom")}
out, _ := io.ReadAll(r)
fmt.Println(string(out))
}Dönüştüren Bir Okuyucu
Başka bir okuyucuyu sarmalayın ve baytları anında dönüştürün; burada her bayt, akış sırasında büyük harfe dönüştürülür.
package main
import (
"bytes"
"fmt"
"io"
)
type upper struct{ r io.Reader }
func (u upper) Read(p []byte) (int, error) {
n, err := u.r.Read(p)
for i := 0; i < n; i++ {
if p[i] >= 'a' && p[i] <= 'z' {
p[i] -= 32
}
}
return n, err
}
func main() {
out, _ := io.ReadAll(upper{r: bytes.NewReader([]byte("hello"))})
fmt.Println(string(out))
}Arabellek Uzunluğuna Uyun
Hiçbir zaman len(p) değerinden fazla bayt yazmayın. Daha küçük dilimin sınırını aşmayan copy(p, src) işlevini kullanın ve kopyaladığı miktarı döndürün.
Değer ve İşaretçi Alıcıları
Okuyucunuz konum veya durum izliyorsa, değişikliklerin çağrılar arasında korunması için bir işaretçi alıcısı kullanın. Durumsuz okuyucular değer alıcısı kullanabilir.
io Yardımcılarıyla Birleştirme
Türünüz io.Reader arayüzünü karşıladığı için ek bir işlem yapmadan io.Copy, bufio.NewReader, io.LimitReader ve daha fazlasına eklenebilir.
package main
import (
"io"
"os"
)
type dots struct{ left int }
func (d *dots) Read(p []byte) (int, error) {
if d.left == 0 {
return 0, io.EOF
}
p[0] = '.'
d.left--
return 1, nil
}
func main() {
io.Copy(os.Stdout, &dots{left: 4})
os.Stdout.WriteString("\n")
}Yaygın Tuzaklar
io.EOFdöndürmeyi unutmak (sonsuz okuma)len(p)sınırını aşarak yazmak- Durum tutan okuyucular için değer alıcısı kullanmak
Özel Okuyucular Neden Kullanılır
Özel okuyucular; üreteçleri, kod çözücüleri, hız sınırlayıcıları ve şifrelenmiş akışları evrensel Go G/Ç ekosistemine uyarlamanızı sağlar.
Hızlı Kontrol
Özel okuyucular bilginizi sınayın.
Özet
Kendi akışlarınızı oluşturmayı öğrendiniz.
Read(p []byte) (int, error)yöntemini uygulayıncopykullanın velen(p)sınırına uyun- İşlem tamamlandığında
io.EOFdöndürün - Durum tutan okuyucular için işaretçi alıcısı kullanın
- Tüm
ioyardımcılarıyla ek bir işlem yapmadan birleştirin
Sıkça Sorulan Sorular
“Özel Reader'lar Uygulama” dersi ücretsiz mi?
Evet — “Özel Reader'lar Uygulama” 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.
“Özel Reader'lar Uygulama” dersinde ne öğreneceğim?
Kendi akışlarınızı oluşturun 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 4. dersidir.
“Özel Reader'lar Uygulama” 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.
Bu kursun tüm dersleri
- Reader Arayüzü
- Writer Arayüzü
- io Yardımcı İşlevleri
- Özel Reader'lar Uygulama