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.