Sobes.tech
Junior — Middle

Millised on omadused, kui käia läbi stringi sümbolid programmeerimisel?

sobes.tech AI

Vastus AI-lt

Go keeles stringid on esitatud baitide jada, kuid sageli sisaldavad need UTF-8 kodeeringus märke, kus üks märk (runa) võib võtta mitu baiti. Stringi indeksite järgi läbimine (näiteks for i := 0; i < len(s); i++) läbib baitide jada, mitte märkide, mis võib viia mitmebaita märkide ebaõige töötlemiseni.

Õige märkide läbimiseks kasutatakse for range tsüklit, mis iteratsioonide Unicode koodipunktide (runade) üle:

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

Siin on i indeksi esimese baitu indeks stringis, ja r on ise runa. See on oluline, et õigesti töötada mitmekeelse tekstide ja ASCII väljaspool olevate märkidega.