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.