Sobes.tech
Junior — Middle

Aké sú vlastnosti pri prechádzaní znakmi reťazca v programovaní?

sobes.tech AI

Odpoveď od AI

V jazyku Go sú reťazce reprezentované ako sekvencia bajtov, ale často obsahujú znaky v kódovaní UTF-8, kde jeden znak (runa) môže zaberáť niekoľko bajtov. Pri prechádzaní reťazca podľa indexov (napríklad for i := 0; i < len(s); i++) prechádzate bajty, nie znaky, čo môže viesť k nesprávnemu spracovaniu viacbajtových znakov.

Na správne prechádzanie znakov sa používa slučka for range, ktorá iteruje cez runy (Unicode kódy):

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

Tu je i index prvého bajtu runy v reťazci a r je samotná runa. Toto je dôležité pre správnu prácu s viacjazyčnými textami a znakmi mimo ASCII.