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ų.