Sobes.tech
Junior — Middle

Co przedstawia wynik wykonania operatora [] dla typu danych tekstowych?

sobes.tech AI

Odpowiedź od AI

W języku Go operator [] dla typu danych string służy do uzyskania wycinka bajtów z łańcucha lub pojedynczego bajtu według indeksu. Łańcuch w Go jest niezmienną sekwencją bajtów (UTF-8). Odwołując się do str[i], zwracany jest bajt typu byte (alias uint8), a nie znak w zwykłym sensie, ponieważ znaki Unicode mogą zajmować kilka bajtów.

Przykład:

s := "Привет"
fmt.Println(s[0])       // Wyświetli bajt odpowiadający pierwszej części znaku 'П'
fmt.Println(string(s[0])) // Wyświetli niepoprawny znak, ponieważ to nie jest pełny znak UTF-8

// Aby uzyskać znaki (rune), należy przekonwertować łańcuch na wycinek rune:
r := []rune(s)
fmt.Println(string(r[0])) // Wyświetli 'П'

W związku z tym operator [] dla łańcuchów zwraca bajt według indeksu, a nie znak Unicode.