Sobes.tech
Junior — Middle

Proqramlaşdırmada sətirin simvollarını keçərkən hansı xüsusiyyətlər var?

sobes.tech Süni İntellekt

AI-dan cavab

Go-da sətirlər baytların ardıcıllığı kimi təqdim olunur, lakin onlar tez-tez UTF-8 kodlamasında simvolları ehtiva edir, burada bir simvol (bir rune) bir neçə bayt tutabilir. Sətiri indekslər üzrə keçərkən (məsələn, for i := 0; i < len(s); i++) siz baytlar üzərində keçirsiniz, simvollar üzərində yox, bu isə çoxbaytlı simvolların düzgün işlənməməsinə səbəb ola bilər.

Düzgün simvollar üzərində keçmək üçün, for range dövrü istifadə olunur, bu, Unicode kod nöqtələri (rune-lər) üzərində iterasiya edir:

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

Burada, i sətirdəki rune-un ilk baytının indeksidir və r rune-un özüdür. Bu, çoxdillili mətnlər və ASCII xaricindəki simvollar ilə düzgün işləmək üçün vacibdir.