Sobes.tech
Junior — Middle

როგორ დავადგინოთ ერთ სიმბოლოს ბაიტებში დაკავებული ზომა სტრიქონში?

sobes.tech AI

პასუხი AI-სგან

Go ენის ფარგლებში, სტრიქონი (string) წარმოადგენს ბაიტების სერიას UTF-8 კოდირებით. იმისათვის, რომ განსაზღვროთ, რამდენ ბაიტს იკავებს ერთი სიმბოლო (Rune), უნდა გაითვალისწინოთ, რომ სხვადასხვა სიმბოლოს შეიძლება ჰქონდეს სხვადასხვა რაოდენობის ბაიტები.

თუ გსურთ იცოდეთ კონკრეტული სიმბოლოს ზომა ბაიტებში, შეგიძლიათ სტრიქონი გადააქციოთ რუნების სლაის ([]rune) და შეადაროთ ორიგინალური სტრიქონის სიგრძე რუნების სლაის სიგრძეს.

მაგალითი:

package main
import (
    "fmt"
    "unicode/utf8"
)

func main() {
    s := "Привет"
    for i, w := 0, 0; i < len(s); i += w {
        r, width := utf8.DecodeRuneInString(s[i:])
        fmt.Printf("სიმბოლო: %c იკავებს %d ბაიტს\n", r, width)
        w = width
    }
}

აქ, utf8.DecodeRuneInString აბრუნებს რუნას და რაოდენობას ბაიტებში, რომელიც ის იკავებს. ამ გზით, შესაძლებელია თითოეული სიმბოლოს ზომის განსაზღვრა ბაიტებში.