Sobes.tech
Junior — Middle

Kokios savybės yra skaitant simbolius eilutėje programavime?

sobes.tech AI

Atsakymas iš AI

Go kalbose eilutės yra vaizduojamos kaip baitų seka, tačiau jos dažnai turi UTF-8 koduotus simbolius, kur vienas simbolis (runa) gali užimti kelis baitus. Eilutę peržiūrint pagal indeksus (pavyzdžiui, for i := 0; i < len(s); i++) pereinate per baitus, o ne per simbolius, kas gali sukelti neteisingą daugia baitų simbolių apdorojimą.

Norint teisingai pereiti per simbolius, naudojama for range ciklas, kuris iteruoja per runas (Unicode kodų taškus):

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

Čia i yra pirmojo baito indeksas runoje eilutėje, o r yra pati runa. Tai svarbu teisingai dirbti su daugiakalbiais tekstais ir simboliais už ASCII ribų.