CodeBlanks Logo Icon CodeBlanks

String ve byte

String'in arkasındaki byte dizisini öğrenirsin.

String ve byte

Go string'i değiştirilemez (immutable) bir bayt dizisidir. Bir karakteri yerinde değiştiremezsin; s[0] = 'G' derleme hatasıdır. Değiştirmek için []byte'a (ya da Türkçe harfler için []rune'a) çevirip yeni bir string oluşturulur:

s := "merhaba"
b := []byte(s)
b[0] = 'M'
fmt.Println(string(b))  // Merhaba

s[i] bir byte verir, string değil.

Değişmezliğin faydası

String'ler değişmez olduğu için güvenle paylaşılır ve alt string'ler (s[2:5]) kopya yapmadan aynı baytları gösterir. Bedeli: döngüde s += "x" her seferinde yeni string ayırır. Çok parçalı metin kurarken strings.Builder kullanılır (birleştirme dersinde göreceksin).

Uygulama İlk harfi büyüt

s := "golang" tanımla. []byte'a çevir, ilk baytı 'G' yap ve yeni string'i 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 := "golang"
    b := []byte(s)
    b[0] = 'G'
    fmt.Println(string(b))
}

Beklenen çıktı

Golang

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 <code>fmt.Println("Go"[0])</code> ne yazdırır?

  • "G"
  • Hata
  • 71 (G'nin bayt değeri) Doğru cevap
  • G

Açıklama: Dizinleme bir byte (uint8) döndürür; harf olarak görmek için string("Go"[0:1]) ya da %c kullanılır.

2 Bayt dilimine çevir

Soru
b := []____(s)
b[0] = 'M'
Cevap
b := []byte(s)
b[0] = 'M'

Açıklama: []byte(s) string'in değiştirilebilir bir bayt kopyasını oluşturur.

3 İfade ve tür

Kavram Anlamı
"Go" string
"Go"[0] byte (71)
"Go"[0:1] string ("G")
[]byte("Go") [71 111]

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