Sobes.tech
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.