Junior — Middle
Co představuje výsledek provedení operátoru [] pro řetězcový typ dat?
sobes.tech AI
Odpověď od AI
V jazyce Go se operátor [] pro datový typ string používá k získání podseku bajtů řetězce nebo jednotlivého bajtu podle indexu. Řetězec v Go je neměnitelná posloupnost bajtů (UTF-8). Při přístupu k str[i] se vrací bajt typu byte (alias uint8), nikoli znak ve smyslu obvyklém, protože Unicode znaky mohou zabírat několik bajtů.
Příklad:
s := "Привет"
fmt.Println(s[0]) // Vypíše bajt odpovídající první části znaku 'П'
fmt.Println(string(s[0])) // Vypíše nesprávný znak, protože to není úplný UTF-8 znak
// Pro získání znaků (rune) je třeba převést řetězec na řez rune:
r := []rune(s)
fmt.Println(string(r[0])) // Vypíše 'П'
Proto operátor [] pro řetězce vrací bajt podle indexu, nikoli Unicode znak.