Junior — Middle
Mit jelent a [] operátor végrehajtásának eredménye a szöveg típusú adatok esetén?
sobes.tech MI
Válasz az MI-től
Go nyelvben az [] operátor a string adattípushoz a string byte-szeletének vagy egyedi byte-nak az index szerinti elérésére szolgál. A Go-ban a string egy változtathatatlan byte-sorozat (UTF-8). Amikor a str[i]-hez hozzáférünk, egy byte típusú byte-ot ad vissza (uint8 alias), nem pedig egy karaktert a hagyományos értelemben, mivel a Unicode karakterek több byte-ot is elfoglalhatnak.
Példa:
s := "Привет"
fmt.Println(s[0]) // Az első karakter 'П' részének megfelelő byte-ot fogja kiírni
fmt.Println(string(s[0])) // Hibás karaktert ír ki, mivel ez nem teljes UTF-8 karakter
// A karakterek (rune-ok) eléréséhez a stringet rune szeletre kell konvertálni:
r := []rune(s)
fmt.Println(string(r[0])) // 'П'-t fog kiírni
Ezért az [] operátor a stringekhez index szerint byte-ot ad vissza, nem pedig Unicode karaktert.