Junior — Middle
Какъв резултат връща вградената функция len при извикване на низ?
sobes.tech AI
Отговор от AI
В Go вградената функция len, когато се извика върху низ, връща броя на байтовете в този низ, а не броя на символите (руни).
Това се дължи на факта, че низовете в Go са последователности от байтове, кодирани в UTF-8. Ако низът съдържа само ASCII символи, броят на байтовете е равен на броя на символите. Но ако низът съдържа многобайтови символи (например кирилица, емоджита), len ще върне сумата от байтовете, а не броя на символите.
Пример:
s := "Привет"
fmt.Println(len(s)) // Ще покаже броя на байтовете, например 12
runes := []rune(s)
fmt.Println(len(runes)) // Ще покаже броя на символите, например 6
Ако искате да получите броя на символите (руни), трябва да преобразувате низа в срез от руни и да вземете неговата дължина.