Junior — Middle
Jaka wartość jest zwracana przez metodę length podczas wywoływania na ciągu znaków?
sobes.tech AI
Odpowiedź od AI
W Go, metoda len wywołana na łańcuchu zwraca liczbę bajtów w łańcuchu, a nie liczbę znaków. Wynika to z faktu, że łańcuchy w Go są sekwencjami bajtów zakodowanych w UTF-8. Jeśli łańcuch zawiera tylko znaki ASCII, liczba bajtów jest równa liczbie znaków. Jednak w przypadku znaków wielojęzycznych, każdy z nich może zajmować kilka bajtów.
Przykład:
package main
import (
"fmt"
)
func main() {
s := "Привет"
fmt.Println(len(s)) // Wyświetli liczbę bajtów, na przykład 12
}
Aby policzyć liczbę znaków (rune), należy użyć funkcji utf8.RuneCountInString z pakietu unicode/utf8.