Sobes.tech
Junior — Middle

Mətn tipi məlumat üçün [] operatorunun icrası nəticəsi nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Go dilində, [] operatoru sətir məlumat tipi üçün sətirdən bayt dilimini almaq və ya indeksə görə tək bir bayt almaq üçün istifadə olunur. Go-da sətir dəyişməz baytlar ardıcıllığıdır (UTF-8). str[i]-ə müraciət edildikdə, byte tipində ( uint8-in təxəllüsü) bayt qaytarılır və bu, ənənəvi mənada simvol deyil, çünki Unicode simvolları bir neçə baytdan ibarət ola bilər.

Nümunə:

s := "Привет"
fmt.Println(s[0])       // 'П' simvolunun ilk hissəsinə uyğun baytı göstərəcək
fmt.Println(string(s[0])) // Tam UTF-8 simvolu olmadığı üçün səhv simvol göstərəcək

// Simvolları (rune) əldə etmək üçün sətiri rune diliminə çevirmək lazımdır:
r := []rune(s)
fmt.Println(string(r[0])) // 'П' göstərəcək

Bu səbəbdən, sətirlər üçün [] operatoru indeksə görə bayt qaytarır, Unicode simvolu deyil.