Sobes.tech
Junior — Middle

Dizgi tipi veri için [] operatörünün çalıştırılmasının sonucu nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go dilinde, [] operatörü, dizge veri tipi için, dizgeden bir bayt dilimi almak veya indekse göre tek bir bayt almak için kullanılır. Go'da dize, değiştirilemez bayt dizisidir (UTF-8). str[i]'ye erişildiğinde, byte türünde (uint8'in takma adı) bir bayt döndürülür ve bu, geleneksel anlamda bir karakter değildir, çünkü Unicode karakterleri birkaç bayt sürebilir.

Örnek:

s := "Привет"
fmt.Println(s[0])       // 'П' karakterinin ilk kısmına karşılık gelen baytı gösterecek
fmt.Println(string(s[0])) // Tam UTF-8 karakteri olmadığı için yanlış bir karakter gösterecek

// Karakterleri (rune'ları) almak için dizgeyi rune dilimine dönüştürmek gerekir:
r := []rune(s)
fmt.Println(string(r[0])) // 'П' gösterecek

Bu nedenle, dizge için [] operatörü, indekslemede bir bayt döndürür, Unicode karakteri değil.