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