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