Sobes.tech
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