Sobes.tech
Junior — Middle

Jakie informacje zwraca funkcja len podczas przetwarzania łańcucha?

sobes.tech AI

Odpowiedź od AI

W języku Go funkcja len stosowana do łańcucha zwraca liczbę bajtów w tym łańcuchu, a nie liczbę znaków (rune).

Jest to związane z tym, że łańcuchy w Go są przechowywane w formacie UTF-8, gdzie jeden znak może zajmować od 1 do 4 bajtów. Dlatego len zwraca długość w bajtach.

Przykład:

package main
import (
    "fmt"
)

func main() {
    s := "Привет" // słowo po rosyjsku
    fmt.Println(len(s)) // Wyświetli liczbę bajtów, np. 12
}

Jeśli chcesz uzyskać liczbę znaków (rune), musisz przekonwertować łańcuch na slice rune:

runes := []rune(s)
fmt.Println(len(runes)) // Wyświetli liczbę znaków, np. 6

Zatem len dla łańcucha to długość w bajtach, a nie w znakach.