Junior — Middle
İçeriğe çağrıldığında yerleşik len fonksiyonu hangi sonucu döndürür?
sobes.tech yapay zeka
AI'dan gelen yanıt
Go'da yerleşik len fonksiyonu, bir dize üzerinde çağrıldığında, bu dizenin bayt sayısını döndürür, karakter sayısını (runlar) değil.
Bu durum, Go'daki dizelerin UTF-8 kodlamasında bayt dizileri olması nedeniyle ortaya çıkar. Eğer dize yalnızca ASCII karakterleri içeriyorsa, bayt sayısı karakter sayısına eşittir. Ancak, dizede çok baytlı karakterler (örneğin, Kiril harfleri, emoji) varsa, len toplam bayt sayısını döndürür, karakter sayısını değil.
Örnek:
s := "Привет"
fmt.Println(len(s)) // Bayt sayısını gösterecek, örneğin 12
runes := []rune(s)
fmt.Println(len(runes)) // Karakter sayısını gösterecek, örneğin 6
Karakter sayısını (runlar) almak istiyorsanız, diziyi rune dilimine dönüştürüp uzunluğunu almanız gerekir.