Junior — Middle
Натиҷаҳои иҷрои оператор [] барои навъи додаҳои сатрӣ чӣ гуна аст?
sobes.tech AI
Ҷавоб аз AI
Дар забонҳои Go, оператори [] барои намуди додаҳои string барои гирифтани қисмҳои байтҳои сатр ё байти алоҳида дар асоси индекс истифода мешавад. Сатр дар Go як пайдарпайии беиҷозатии байтҳо (UTF-8) аст. Вақте ки ба str[i] дастрасӣ мекунем, байт аз навъи byte (номи мураттабшудаи uint8) бармегардад, на як рамз дар маънои оддӣ, зеро рамзҳои Unicode метавонанд чанд байтро дар бар гиранд.
Масалан:
s := "Привет"
fmt.Println(s[0]) // Байтро, ки ба қисми аввалини рамзи 'П' мувофиқат мекунад, нишон медиҳад
fmt.Println(string(s[0])) // Рамз нодуруст нишон медиҳад, зеро ин рамзи пурраии UTF-8 нест
// Барои гирифтани рамзҳо (runes), лозим аст, ки сатрро ба срези rune табдил диҳем:
r := []rune(s)
fmt.Println(string(r[0])) // 'П' нишон медиҳад
Аз ин рӯ, оператор [] барои сатрҳо байтро дар асоси индекс бармегардонад, на рамзи Unicode.