Sobes.tech
Junior — Middle

Millist teavet tagastab funktsioon len stringi töötlemisel?

sobes.tech AI

Vastus AI-lt

Keeles Go puhul tagastab len funktsioon stringi puhul selle baitide arvu, mitte märkide (rune) arvu.

See on tingitud sellest, et Go-s salvestatakse stringe UTF-8 formaadis, kus üks märk võib võtta 1 kuni 4 baiti. Seetõttu tagastab len baitide pikkuse.

Näide:

package main
import (
    "fmt"
)

func main() {
    s := "Привет" // vene sõna
    fmt.Println(len(s)) // Näitab baitide arvu, näiteks 12
}

Kui soovite saada märkide (rune) arvu, peate stringi konverteerima rune-slice-ks:

runes := []rune(s)
fmt.Println(len(runes)) // Näitab märkide arvu, näiteks 6

Seega, len stringi puhul näitab baitide pikkust, mitte märkide arvu.