Junior — Middle
W jaki sposób łańcuchy są implementowane i jak są powiązane z runami w języku Go?
sobes.tech AI
Odpowiedź od AI
W języku Go łańcuchy znaków są reprezentowane przez typ string, który jest niezmienniczą sekwencją bajtów, zwykle w kodowaniu UTF-8. Oznacza to, że łańcuch to ciąg bajtów, a nie znaków.
Runy (rune) to typ reprezentujący punkt kodowy Unicode (int32). Aby pracować z znakami Unicode w łańcuchu, konwertuje się go na tablicę run, co pozwala na poprawne obsługiwanie znaków wielobajtowych.
Przykład:
s := "Привет"
for i, r := range s {
fmt.Printf("%d: %c\n", i, r) // i — indeks bajtu, r — runa (znak)
}
runes := []rune(s) // konwersja łańcucha na tablicę run
fmt.Println(runes[0]) // pierwszy znak jako runa
W ten sposób, łańcuchy w Go to sekwencje bajtów, a runy to pojedyncze znaki Unicode, co pozwala na poprawną pracę z tekstami wielojęzycznymi.