byte ve rune
- Go kursu
- Başlangıç
- Ders 21/90
- 4 dk
byte ve rune türlerini ve karakter temsilini öğrenirsin.
byte ve rune
Go string'leri UTF-8 baytlarından oluşur. byte (uint8) tek bir baytı, rune (int32) tek bir Unicode karakterini temsil eder. İngilizce harfler 1 bayttır ama ğ, ş, ü gibi harfler 2 bayttır.
s := "ağ"
fmt.Println(len(s)) // 3 (bayt)
fmt.Println(len([]rune(s))) // 2 (karakter)range ile karakterleri gezmek
for i, r := range s string'i karakter karakter gezer; i karakterin bayt konumu, r rune değeridir. s[i] ile dizinleme ise tek bir bayt verir ve çok baytlı harfleri böler.
for i, r := range "gö" {
fmt.Println(i, string(r))
}
// 0 g
// 1 öTek tırnak ('a') bir rune sabitidir.
Uygulama Bayt ve karakter
s := "Gölge" tanımla. Bayt sayısını (len(s)) ve karakter sayısını (len([]rune(s))) tek satırda yazdır.
Başlangıç kodu
package main
import "fmt"
func main() {
// buraya yaz
}Örnek çözüm
package main
import "fmt"
func main() {
s := "Gölge"
fmt.Println(len(s), len([]rune(s)))
}Beklenen çıktı
6 5
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 <code>len("çay")</code> kaç döndürür?
- 6
- 2
- 4 Doğru cevap
- 3
Açıklama: len bayt sayar: ç 2 bayt, a ve y birer bayt → 4. Karakter sayısı için utf8.RuneCountInString ya da len([]rune(s)) kullanılır.
2 Karakter sayısı
n := len([]____("ışık")) // 4
n := len([]rune("ışık")) // 4
Açıklama: Önce []rune'a çevirmek, len'in karakter sayısını vermesini sağlar.
3 Tür ve anlamı
| Kavram | Anlamı |
|---|---|
byte |
Tek bayt (uint8) |
rune |
Unicode karakter (int32) |
'a' |
Rune sabiti |
"a" |
String |