Sobes.tech
Junior — Middle

Jak określić rozmiar w bajtach pojedynczego znaku w ciągu?

sobes.tech AI

Odpowiedź od AI

W języku Go, łańcuch (string) reprezentuje sekwencję bajtów zakodowanych w UTF-8. Aby określić, ile bajtów zajmuje pojedynczy znak (runa), należy wziąć pod uwagę, że różne znaki mogą zajmować różną liczbę bajtów.

Jeśli chcesz dowiedzieć się, ile bajtów ma konkretny znak, możesz przekonwertować łańcuch na tablicę run ([]rune) i porównać długość oryginalnego łańcucha z długością tablicy run.

Przykład:

package main
import (
    "fmt"
    "unicode/utf8"
)

func main() {
    s := "Привет"
    for i, w := 0, 0; i < len(s); i += w {
        r, width := utf8.DecodeRuneInString(s[i:])
        fmt.Printf("Znak: %c zajmuje %d bajtów\n", r, width)
        w = width
    }
}

Tutaj, utf8.DecodeRuneInString zwraca runę i liczbę bajtów, które ona zajmuje. W ten sposób można określić rozmiar każdego znaku w bajtach.