Junior — Middle
Ce reprezintă rezultatul executării operatorului [] pentru tipul de date string?
sobes.tech AI
Răspuns de la AI
În Go, operatorul [] pentru tipul de date string este folosit pentru a obține o felie de octeți din șir sau un octet individual după index. Șirul în Go este o secvență imuabilă de octeți (UTF-8). Accesând str[i], se returnează un octet de tip byte (alias pentru uint8), și nu un caracter în sensul obișnuit, deoarece caracterele Unicode pot ocupa mai mulți octeți.
Exemplu:
s := "Привет"
fmt.Println(s[0]) // Va afișa octetul corespunzător primei părți a caracterului 'П'
fmt.Println(string(s[0])) // Va afișa un caracter incorect, deoarece nu este un caracter UTF-8 complet
// Pentru a obține caractere (rune), trebuie convertit șirul într-o felie de rune:
r := []rune(s)
fmt.Println(string(r[0])) // Va afișa 'П'
Prin urmare, operatorul [] pentru șiruri returnează un octet după index, nu un caracter Unicode.