Runeler ve Baytlar
Go dizelerinin iç yapısını anlayın
Runeler ve Baytlar, 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 Dizesi Nedir?
Go'da bir string, değiştirilemez bir bayt dizisidir. Baytlar genellikle UTF-8 ile kodlanmış metin içerir, ancak Go bunu zorunlu kılmaz.
- Bir dizeyi yerinde değiştiremezsiniz.
lendeğeri karakterleri değil, baytları sayar.
package main
import "fmt"
func main() {
s := "Go"
fmt.Println(s)
fmt.Println(len(s))
}Arka Plandaki Baytlar
Bir dizeyi s[i] ile dizinlemek tek bir bayt döndürür (türü byte, uint8 için bir diğer addır).
Düz ASCII metninde her karakter tam olarak bir bayttır.
package main
import "fmt"
func main() {
s := "ABC"
fmt.Println(s[0])
fmt.Println(s[1])
fmt.Println(s[2])
}Bayt Bir Sayıdır
Bayt yalnızca bir sayı olduğundan, s[0] yazdırıldığında harf yerine 65 (A'nın ASCII kodu) gösterilir.
Karakteri görmek için baytı yeniden dizeye dönüştürün.
package main
import "fmt"
func main() {
s := "ABC"
fmt.Println(string(s[0]))
}rune Nedir?
Bir rune, int32 için bir diğer addır ve tek bir Unicode kod noktasını temsil eder.
- UTF-8 olarak kodlandığında tek bir rune birden çok bayta yayılabilir.
- Ham baytlarla değil, karakterlerle ilgileniyorsanız runeları kullanın.
package main
import "fmt"
func main() {
var r rune = 'A'
fmt.Println(r)
fmt.Println(string(r))
}Çok Baytlı Karakterler
ASCII dışındaki karakterler UTF-8'de birden fazla bayt kullanır. "héllo" gibi bir dizede harf sayısından daha fazla bayt bulunur.
len değerinin, görünen uzunluktan daha büyük olan bayt sayısını bildirdiğine dikkat edin.
package main
import "fmt"
func main() {
s := "héllo"
fmt.Println(len(s))
}Dize Üzerinde Gezinme
Bir dize üzerindeki for range döngüsü UTF-8 kodunu otomatik olarak çözer. Her yineleme şunları üretir:
- runenin başladığı bayt indisini,
- runenin kendisini.
package main
import "fmt"
func main() {
for i, r := range "héllo" {
fmt.Println(i, string(r))
}
}Karakterleri Doğru Sayma
Baytlar yerine karakterleri saymak için dizeyi bir []rune değerine dönüştürün ve uzunluğunu alın.
Bu, kod noktalarının sayısını verir.
package main
import "fmt"
func main() {
s := "héllo"
runes := []rune(s)
fmt.Println(len(runes))
}Rune ile Dizinleme
Bir []rune değerine sahip olduğunuzda, çok baytlı metinlerde bile N'inci karakteri güvenilir biçimde almak için bu değeri dizinleyebilirsiniz.
package main
import "fmt"
func main() {
runes := []rune("héllo")
fmt.Println(string(runes[1]))
}Dizeleri Baytlara ve Geri Dönüştürme
Bir dize ile []byte arasında serbestçe dönüştürme yapabilirsiniz.
[]byte(s)ham baytları verir.string(b)metni yeniden oluşturur.
package main
import "fmt"
func main() {
b := []byte("Go")
fmt.Println(b)
fmt.Println(string(b))
}Runelardan Dize Oluşturma
Bir rune dilimi de aynı şekilde yeniden dizeye dönüştürülür. Bu, karakterleri tek tek düzenledikten sonra kullanışlıdır.
package main
import "fmt"
func main() {
runes := []rune{'G', 'o', '!'}
fmt.Println(string(runes))
}Baytlar ve Runeların Özeti
Kısa zihinsel model:
byte= tek bir ham bayt (uint8),len(s)bunları sayar.rune= tek bir Unicode kod noktası (int32),rangebunları üretir.- Karakterleri sayarken veya dizinlerken
[]runekullanın.
package main
import "fmt"
func main() {
s := "café"
fmt.Println(len(s))
fmt.Println(len([]rune(s)))
}Kısa kontrol
Runelar ve baytlar konusundaki anlayışınızı sınayın.
Özet: Runelar ve Baytlar
Go dizelerinin genellikle UTF-8 kullanan değiştirilemez bayt dizileri olduğunu öğrendiniz.
byteham bir bayttır;lenbaytları sayar.runebir Unicode kod noktasıdır;rangebunların kodunu çözer.- Uygun düzeyde çalışmak için
[]byte(s)ve[]rune(s)ile dönüştürme yapın.
package main
import "fmt"
func main() {
s := "Go語"
fmt.Println("bytes:", len(s))
fmt.Println("runes:", len([]rune(s)))
}Sıkça Sorulan Sorular
“Runeler ve Baytlar” dersi ücretsiz mi?
Evet — “Runeler ve Baytlar” 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.
“Runeler ve Baytlar” dersinde ne öğreneceğim?
Go dizelerinin iç yapısını anlayın 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.
“Runeler ve Baytlar” 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
- Runeler ve Baytlar
- strings Paketi İşlevleri
- strings.Builder
- Unicode ve utf8