Junior — Middle
Ką vaizduoja [] operatoriaus vykdymo rezultatas eilutės duomenų tipui?
sobes.tech AI
Atsakymas iš AI
Go kalboje operatorius [] yra naudojamas gauti baitų dalį iš eilutės arba atskirą baitą pagal indeksą. Eilutė Go yra nepakeičiama baitų seka (UTF-8). Pasiekus str[i], grąžinamas baitas byte tipo (alias uint8), o ne simbolis įprasta prasme, nes Unicode simboliai gali užimti kelis baitus.
Pavyzdys:
s := "Привет"
fmt.Println(s[0]) // Parodys baitą, atitinkantį pirmąją simbolio 'П' dalį
fmt.Println(string(s[0])) // Parodys neteisingą simbolį, nes tai nėra pilnas UTF-8 simbolis
// Norint gauti simbolius (runes), reikia konvertuoti eilutę į rune skiltį:
r := []rune(s)
fmt.Println(string(r[0])) // Parodys 'П'
Taigi, operatorius [] eilutėms grąžina baitą pagal indeksą, o ne Unicode simbolį.