Junior — Middle
რა შედეგს აბრუნებს ინტეგრირებული ფუნქცია len როდესაც ის ზოლზეა გამოძახებული?
sobes.tech AI
პასუხი AI-სგან
Go-ში, შიდა ფუნქცია len, როდესაც მას მიმართავთ სტრიქონზე, აბრუნებს ამ სტრიქონის ბაიტების რაოდენობას, არა სიმბოლოების (რუნების) რაოდენობას.
ეს იმიტომ ხდება, რომ Go-ში სტრიქონები ბაიტების სერიისაა, რომლებიც კოდირებულია UTF-8-ში. თუ სტრიქონი შეიცავს მხოლოდ ASCII სიმბოლოებს, ბაიტების რაოდენობა ტოლია სიმბოლოების რაოდენობას. მაგრამ თუ სტრიქონი შეიცავს მრავალბაიტიან სიმბოლოებს (მაგალითად, კირილიცა, ემოჯი), len დააბრუნებს ბაიტების ჯამს, არა სიმბოლოების რაოდენობას.
მაგალითი:
s := "Привет"
fmt.Println(len(s)) // გამოიტანს ბაიტების რაოდენობას, მაგალითად 12
runes := []rune(s)
fmt.Println(len(runes)) // გამოიტანს სიმბოლოების რაოდენობას, მაგალითად 6
თუ გსურთ მიიღოთ სიმბოლოების (რუნების) რაოდენობა, უნდა გარდაქმნათ სტრიქონი რუნების სლაიდად და აიღოთ მისი სიგრძე.