Junior
Τι αντιπροσωπεύει ο τύπος δεδομένων string στη γλώσσα Golang;
sobes.tech AI
Απάντηση από AI
Στη Golang, το string είναι μια αμετάβλητη ακολουθία byte.
Βασικά χαρακτηριστικά:
- Αμεταβλητότητα: Μετά τη δημιουργία μιας συμβολοσειράς, δεν μπορεί να τροποποιηθεί. Οποιαδήποτε λειτουργία που τροποποιεί τη συμβολοσειρά, στην πραγματικότητα δημιουργεί μια νέα.
- Απεικόνιση: Η συμβολοσειρά περιέχει μια ακολουθία byte. Από προεπιλογή, η Golang υποθέτει ότι αυτά τα bytes αντιπροσωπεύουν κείμενο κωδικοποιημένο σε UTF-8.
- Μήκος: Το μήκος της συμβολοσειράς (
len(s)) επιστρέφει τον αριθμό των byte στη συμβολοσειρά, όχι τον αριθμό των runes (χαρακτήρων). - Δεικτοδότηση: Η πρόσβαση στα στοιχεία της συμβολοσειράς μέσω δείκτη (
s[i]) επιστρέφει το byte σε αυτό το δείκτη. - Runes: Για εργασία με χαρακτήρες (runes), χρησιμοποιείται η επανάληψη πάνω στη συμβολοσειρά με βρόχο
for range, ο οποίος αποκωδικοποιεί το UTF-8 και παρέχει τις runes και τους δείκτες τους.
Παράδειγμα:
// Αρχικοποίηση συμβολοσειράς
s := "Привет, мир!" // 23 bytes, 12 runes
// Μήκος συμβολοσειράς (σε bytes)
byteLength := len(s) // 23
// Πρόσβαση στο byte με δείκτη
firstByte := s[0] // firstByte = 208 (byte για το 'П' σε UTF-8)
// Επανάληψη πάνω στις runes
runeCount := 0
for index, runeValue := range s {
// index - αρχική θέση της rune στη συμβολοσειρά (σε bytes)
// runeValue - η αποκωδικοποιημένη rune
runeCount++
}
// runeCount = 12