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