CodeBlanks Logo Icon CodeBlanks

byte ve rune

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

main.go
package main

import "fmt"

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
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ı

Soru
n := len([]____("ışık"))  // 4
Cevap
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

Başlangıç bölümündeki tüm dersler