Πώς μπορείτε να εργαστείτε με συμβολοσειρές στη γλώσσα Go;
sobes.tech AI
Απάντηση από AI
Στη Go, οι συμβολοσειρές είναι αμετάβλητες ακολουθίες byte.
Οι βασικοί τρόποι εργασίας με συμβολοσειρές:
-
Δημιουργία:
// Κυριολεκτικό συμβολοσειράς s1 := "Hello, Go!" // Από ένα slice byte byteArray := []byte{'H', 'e', 'l', 'l', 'o'} s2 := string(byteArray) -
Συγκόλληση:
s3 := "World" result := s1 + " " + s3 // Χρήση του τελεστή +Για πολλές συγκολλήσεις, είναι πιο αποδοτικό να χρησιμοποιείτε το
strings.Builder:import "strings" var sb strings.Builder sb.WriteString("Hello") sb.WriteString(", ") sb.WriteString("World!") result2 := sb.String() -
Μήκος:
- Σε bytes:
byteLength := len(s1) - Σε χαρακτήρες (runes):
runeLength := utf8.RuneCountInString(s1) // Απαιτεί εισαγωγή "unicode/utf8"
- Σε bytes:
-
Πρόσβαση σε χαρακτήρες (runes) και επανάληψη: Στη Go, οι συμβολοσειρές αποτελούνται από bytes, αλλά κατά την επανάληψη με
range, αποκωδικοποιούνται σε runes (σημεία κώδικα Unicode).import "fmt" for index, runeValue := range s1 { fmt.Printf("Δείκτης: %d, Rune: %c, Τύπος: %T\n", index, runeValue, runeValue) }Η άμεση πρόσβαση με δείκτη επιστρέφει byte, όχι rune:
b := s1[0] // Επιστρέφει το byte 'H' -
Μετατροπή:
- Σε slice byte:
byteSlice := []byte(s1) - Σε slice rune:
runeSlice := []rune(s1)
- Σε slice byte:
-
Πακέτο
strings: Παρέχει πολλές χρήσιμες λειτουργίες για εργασία με συμβολοσειρές:strings.Contains(s, substr): Ελέγχει αν περιέχει μια υπο-συμβολοσειρά.strings.HasPrefix(s, prefix): Ελέγχει αν ξεκινά με ένα πρόθεμα.strings.HasSuffix(s, suffix): Ελέγχει αν τελειώνει με ένα επίθημα.strings.Index(s, substr): Βρίσκει την πρώτη εμφάνιση μιας υπο-συμβολοσειράς.strings.ReplaceAll(s, old, new): Αντικαθιστά όλες τις εμφανίσεις.strings.Split(s, sep): Χωρίζει τη συμβολοσειρά με βάση έναν διαχωριστή.strings.Join(a []string, sep string): Συνενώνει ένα slice συμβολοσειρών.strings.ToLower(s): Μετατρέπει σε πεζά.strings.ToUpper(s): Μετατρέπει σε κεφαλαία.strings.TrimSpace(s): Αφαιρεί τα κενά από την αρχή και το τέλος.
-
Πακέτο
fmt: Για μορφοποιημένη έξοδο και εισαγωγή. -
Πακέτο
strconv: Για μετατροπή συμβολοσειρών σε αριθμητικούς τύπους και το αντίστροφο:import "strconv" i, err := strconv.Atoi("123") // Από string σε int s := strconv.Itoa(i) // Από int σε string
Η αμετάβλητη φύση των συμβολοσειρών είναι σημαντική και σημαίνει ότι οποιαδήποτε λειτουργία που φαίνεται να τροποποιεί μια συμβολοσειρά (π.χ. συγκόλληση ή Replace) στην πραγματικότητα δημιουργεί μια νέα συμβολοσειρά.