Junior — Middle
Čo predstavuje výsledok vykonania operátora [] pre dátový typ reťazec?
sobes.tech AI
Odpoveď od AI
V jazyku Go sa operátor [] pre typu dátového reťazca používa na získanie podrezu bajtov reťazca alebo samostatného bajta podľa indexu. Reťazec v Go je nemenná sekvencia bajtov (UTF-8). Pri prístupe k str[i] sa vráti bajt typu byte (alias pre uint8), a nie znak v bežnom zmysle, pretože Unicode znaky môžu zaberať niekoľko bajtov.
Príklad:
s := "Привет"
fmt.Println(s[0]) // Vypíše bajt zodpovedajúci prvému časti znaku 'П'
fmt.Println(string(s[0])) // Vypíše nesprávny znak, pretože to nie je úplný UTF-8 znak
// Na získanie znakov (rune) je potrebné konvertovať reťazec na rez rune:
r := []rune(s)
fmt.Println(string(r[0])) // Vypíše 'П'
Preto operátor [] pre reťazce vracia bajt podľa indexu, nie Unicode znak.