Junior — Middle
Šta predstavlja rezultat izvršenja operatora [] za tip podatka string?
sobes.tech АИ
Одговор од АИ
U Go jeziku, operator [] za tip podatka string koristi se za dobijanje seka bajtova stringa ili pojedinačnog bajta po indeksu. String u Go-u je nepromenljiva sekvenca bajtova (UTF-8). Kada pristupite str[i], vraća se bajt tipa byte (alias za uint8), a ne znak u uobičajenom smislu, jer Unicode znakovi mogu zauzimati više bajtova.
Primer:
s := "Привет"
fmt.Println(s[0]) // Ispisaće bajt koji odgovara prvom delu znaka 'П'
fmt.Println(string(s[0])) // Ispisaće netačan znak, jer to nije potpuni UTF-8 znak
// Za dobijanje znakova (rune) potrebno je konvertovati string u seč od runa:
r := []rune(s)
fmt.Println(string(r[0])) // Ispisaće 'П'
Dakle, operator [] za stringove vraća bajt po indeksu, a ne Unicode znak.