Junior
Czym jest typ danych string w języku Golang?
sobes.tech AI
Odpowiedź od AI
W Golang string jest niezmienniczą sekwencją bajtów.
Kluczowe cechy:
- Niezmienność: Po utworzeniu, ciąg znaków nie może być zmieniony. Każda operacja modyfikująca ciąg tworzy w rzeczywistości nowy ciąg.
- Reprezentacja: Ciąg zawiera sekwencję bajtów. Domyślnie Golang zakłada, że te bajty reprezentują tekst zakodowany w UTF-8.
- Długość: Długość ciągu (
len(s)) zwraca liczbę bajtów w ciągu, a nie liczbę run (symboli). - Indeksowanie: Dostęp do elementów ciągu przez indeks (
s[i]) zwraca bajt na tym indeksie. - Runy: Do pracy z symbolami (runami) używa się iteracji po ciągu za pomocą pętli
for range, która dekoduje UTF-8 i dostarcza runy oraz ich indeksy.
Przykład:
// Inicjalizacja ciągu
s := "Привет, мир!" // 23 bajty, 12 run
// Długość ciągu (w bajtach)
byteLength := len(s) // 23
// Dostęp do bajtu po indeksie
firstByte := s[0] // firstByte = 208 (bajt 'П' w UTF-8)
// Iteracja po runach
runeCount := 0
for index, runeValue := range s {
// index - indeks początku runy w ciągu (w bajtach)
// runeValue - zdekodowana runa
runeCount++
}
// runeCount = 12