Sobes.tech
Junior — Middle

Jaké jsou vlastnosti při průchodu znaky řetězce v programování?

sobes.tech AI

Odpověď od AI

V jazyce Go jsou řetězce reprezentovány jako posloupnost bajtů, ale často obsahují znaky v kódování UTF-8, kde jeden znak (runa) může zabírat několik bajtů. Při procházení řetězce podle indexů (například for i := 0; i < len(s); i++) procházíte bajty, nikoli znaky, což může vést k nesprávnému zpracování vícejazyčných znaků.

Pro správné procházení znaků se používá smyčka for range, která iteruje přes runy (Unicode body kódu):

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

Zde je i index prvního bajtu runy v řetězci a r je samotná runa. To je důležité pro správnou práci s vícejazyčnými texty a znaky mimo ASCII.