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