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

Ако искате да получите броя на символите (руни), трябва да преобразувате низа в срез от руни и да вземете неговата дължина.