Junior — Middle
Hansı nəticəni daxili funksiya len sətirdə çağırıldıqda qaytarır?
sobes.tech Süni İntellekt
AI-dan cavab
Go-da, daxili len funksiyası, bir sətir üzərində çağırıldıqda, həmin sətirin bayt sayını qaytarır, simvolların (runların) sayını deyil.
Bu, Go-da sətirlərin UTF-8 kodlamasında baytların ardıcıllığı olması ilə əlaqədardır. Əgər sətir yalnız ASCII simvolları ehtiva edirsə, baytların sayı simvolların sayına bərabərdir. Amma sətirdə çoxbaytlı simvollar (məsələn, kiril, emoji) varsa, len baytların cəmini qaytarır, simvolların sayını deyil.
Nümunə:
s := "Привет"
fmt.Println(len(s)) // Baytların sayını göstərəcək, məsələn 12
runes := []rune(s)
fmt.Println(len(runes)) // Simvolların sayını göstərəcək, məsələn 6
Əgər simvolların (runların) sayını almaq istəyirsinizsə, sətiri rune diliminə çevirməli və onun uzunluğunu götürməlisiniz.