Sobes.tech
Junior — Middle

Πώς να προσδιορίσετε το μέγεθος σε bytes που καταλαμβάνει ένα σύμβολο σε μια συμβολοσειρά;

sobes.tech AI

Απάντηση από AI

Στη γλώσσα Go, μια συμβολοσειρά (string) αντιπροσωπεύει μια ακολουθία bytes σε κωδικοποίηση UTF-8. Για να προσδιορίσετε πόσα bytes καταλαμβάνει ένα χαρακτήρας (μία rune), πρέπει να λάβετε υπόψη ότι διαφορετικοί χαρακτήρες μπορεί να καταλαμβάνουν διαφορετικό αριθμό bytes.

Εάν θέλετε να μάθετε το μέγεθος ενός συγκεκριμένου χαρακτήρα σε bytes, μπορείτε να μετατρέψετε τη συμβολοσειρά σε ένα slice από runes ([]rune) και να συγκρίνετε το μήκος της αρχικής συμβολοσειράς με το μήκος του slice από runes.

Παράδειγμα:

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 bytes\n", r, width)
        w = width
    }
}

Εδώ, η utf8.DecodeRuneInString επιστρέφει το rune και τον αριθμό των bytes που καταλαμβάνει. Με αυτόν τον τρόπο, μπορεί να προσδιοριστεί το μέγεθος κάθε χαρακτήρα σε bytes.