Sobes.tech
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.