Sobes.tech
Junior — Middle

Ce rezultat returnează funcția încorporată len atunci când este apelată pe un șir de caractere?

sobes.tech AI

Răspuns de la AI

În Go, funcția încorporată len atunci când este apelată pe un șir de caractere returnează numărul de octeți din acel șir, nu numărul de caractere (rune).

Acest lucru se datorează faptului că șirurile în Go sunt secvențe de octeți codificate în UTF-8. Dacă șirul conține doar caractere ASCII, atunci numărul de octeți este egal cu numărul de caractere. Dar dacă șirul conține caractere multibyte (de exemplu, chirilice, emoji), atunci len va returna suma octeților, nu numărul de caractere.

Exemplu:

s := "Привет"
fmt.Println(len(s)) // Va afișa numărul de octeți, de exemplu 12

runes := []rune(s)
fmt.Println(len(runes)) // Va afișa numărul de caractere, de exemplu 6

Dacă doriți să obțineți numărul de caractere (rune), trebuie să convertiți șirul într-un slice de rune și să luați lungimea acestuia.