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