Sobes.tech
Junior — Middle

Ποια τιμή επιστρέφει η μέθοδος length όταν καλείται σε μια συμβολοσειρά;

sobes.tech AI

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

Στη Go, η μέθοδος len όταν καλείται σε μια συμβολοσειρά επιστρέφει τον αριθμό των bytes στη συμβολοσειρά, όχι τον αριθμό των χαρακτήρων. Αυτό οφείλεται στο ότι οι συμβολοσειρές στο Go είναι ακολουθίες bytes κωδικοποιημένες σε UTF-8. Αν η συμβολοσειρά περιέχει μόνο ASCII χαρακτήρες, ο αριθμός των bytes ταιριάζει με τον αριθμό των χαρακτήρων. Αλλά αν υπάρχουν πολυγλωσσικοί χαρακτήρες, κάθε ένας μπορεί να καταλαμβάνει πολλαπλά bytes.

Παράδειγμα:

package main
import (
    "fmt"
)

func main() {
    s := "Привет"
    fmt.Println(len(s)) // Θα εμφανίσει τον αριθμό των bytes, π.χ. 12
}

Για να υπολογίσετε τον αριθμό των χαρακτήρων (runes), πρέπει να χρησιμοποιήσετε τη συνάρτηση utf8.RuneCountInString από το πακέτο unicode/utf8.