0Pricing
Go Academy · Ders

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ır
  • io.EOF gelene kadar döngü kurun; n baytı önce işleyin
  • io.ReadAll, strings/bytes.NewReader, LimitReader
  • API'lerinizde io.Reader kabul 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.

Bu kursun tüm dersleri

  1. Reader Arayüzü
  2. Writer Arayüzü
  3. io Yardımcı İşlevleri
  4. Özel Reader'lar Uygulama
← Go Academy Sayfasına Dön