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.