Sobes.tech
Junior — Middle

Jaki wynik zwraca wbudowana funkcja len podczas wywołania na ciągu znaków?

sobes.tech AI

Odpowiedź od AI

W Go wbudowana funkcja len, wywołana na ciągu znaków, zwraca liczbę bajtów w tym ciągu, a nie liczbę znaków (runów).

Dzieje się tak, ponieważ ciągi w Go są sekwencjami bajtów zakodowanych w UTF-8. Jeśli ciąg zawiera tylko znaki ASCII, liczba bajtów jest równa liczbie znaków. Jednak jeśli w ciągu znajdują się znaki wielobajtowe (np. cyrylica, emoji), len zwróci sumę bajtów, a nie liczbę znaków.

Przykład:

s := "Привет"
fmt.Println(len(s)) // Wyświetli liczbę bajtów, np. 12

runes := []rune(s)
fmt.Println(len(runes)) // Wyświetli liczbę znaków, np. 6

Jeśli chcesz uzyskać liczbę znaków (runów), musisz przekonwertować ciąg na tablicę runów i wziąć jej długość.