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