Sobes.tech
Junior — Middle

Jak jsou řetězce implementovány a jak jsou spojeny s runami v jazyce Go?

sobes.tech AI

Odpověď od AI

V jazyce Go jsou řetězce reprezentovány typem string, což je neměnitelná posloupnost bajtů, obvykle kódovaná v UTF-8. To znamená, že řetězec je sekvence bajtů, nikoliv znaků.

Runy (rune) jsou typ, který představuje Unicode kódový bod (int32). Pro práci s Unicode znaky v řetězci se řetězec převede na sekvenci run, což umožňuje správně zpracovávat vícibajtové znaky.

Příklad:

s := "Привет"
for i, r := range s {
    fmt.Printf("%d: %c\n", i, r) // i — index bajtu, r — runa (znak)
}

runes := []rune(s) // převod řetězce na sekvenci run
fmt.Println(runes[0]) // první znak jako runa

Tedy, řetězce v jazyce Go jsou sekvence bajtů, a runy jsou jednotlivé Unicode znaky, což umožňuje správnou práci s vícejazyčnými texty.