Πώς να μορφοποιήσετε συμβολοσειρές στο Go

Πώς να μορφοποιήσετε συμβολοσειρές στο Go

Καθώς γράφετε τον κώδικα Go, θα βρείτε τη μορφοποίηση συμβολοσειρών πολύ χρήσιμη σε πολλές περιπτώσεις. Μπορεί να αναλύετε εισόδους ή να δημιουργείτε πιο σύνθετα αποτελέσματα από την απλή συνένωση. Μπορεί να εργάζεστε με άλλους τύπους εκτός από απλές χορδές.





Η μορφοποίηση συμβολοσειρών στο Go χρησιμοποιεί τη γνωστή διαδικασία και σύνταξη της συνάρτησης printf, την οποία χρησιμοποιούν και γλώσσες από Java έως Haskell.





Το Go παρέχει διάφορες μεθόδους για τη μορφοποίηση συμβολοσειρών στο fmt πακέτο. Μπορείτε να χρησιμοποιήσετε συναρτήσεις και ρήματα για τη μορφοποίηση συμβολοσειρών ανάλογα με τη λειτουργία ή τις εισόδους που θέλετε να μορφοποιήσετε.





Μορφοποίηση συμβολοσειράς στο Go

Οι λειτουργίες στο πακέτο fmt είναι παρόμοιες με αντίστοιχες, όπως η συνάρτηση printf στο bash ή C. Το Go αντλεί τα ρήματα μορφοποίησης από το C.

Εσυ χρησιμοποιεις ρήματα μορφοποίησης συμβολοσειρών ως σύμβολα κράτησης θέσης για τις τιμές των μεταβλητών σας σε μια συμβολοσειρά που περιέχει. Στη συνέχεια, μπορείτε να περάσετε αυτήν τη συμβολοσειρά μορφοποίησης σε μια συνάρτηση όπως Εκτύπωση , μαζί με τιμές που αντιστοιχούν σε αυτά τα σύμβολα κράτησης θέσης.



Δεν μπορείτε να χρησιμοποιήσετε ρήματα μορφοποίησης συμβολοσειρών με το Τυπώνω και Println μεθόδους. Μπορείτε να τα χρησιμοποιήσετε με μεθόδους όπως Εκτύπωση και Sprintf .

fmt.Println("This is a test %v", 90) 
fmt.Printf("This is a test %v", 90)

ο %σε Το ρήμα εκτυπώνει οποιαδήποτε τιμή στην προεπιλεγμένη μορφή του. ο Println Η μέθοδος δεν αναγνωρίζει ρήματα και εκτυπώνει όσα ορίσματα λαμβάνει. ο Εκτύπωση και Sprintf και οι δύο συναρτήσεις μορφοποιούν το πρώτο όρισμα συμβολοσειράς που τους μεταβιβάζετε.





  αποτέλεσμα της μορφοποίησης ακεραίων

Λειτουργίες μορφοποίησης συμβολοσειρών στο πακέτο fmt

Μορφοποίηση συμβολοσειρών σε τη γλώσσα προγραμματισμού Go απαιτεί να χρησιμοποιήσετε μια συνάρτηση μορφοποίησης συμβολοσειράς και ένα ρήμα. Η συνάρτηση επιστρέφει τη μορφοποιημένη συμβολοσειρά και τα ρήματα είναι τα σύμβολα θέσης για τις εισόδους στη συμβολοσειρά.

ο Εκτύπωση Η μέθοδος μορφοποιεί την είσοδο σύμφωνα με τον προσδιοριστή μορφής και επιστρέφει τον αριθμό των γραμμένων byte ή σφαλμάτων.





fmt.Printf("This is a test %v", 90) 

Συμβατικά, δεν θα χρειάζεται να ανησυχείτε για σφάλματα όταν χρησιμοποιείτε το Εκτύπωση μέθοδος.

ο Sprintf η μέθοδος μορφοποιεί σύμφωνα με την καθορισμένη μορφή και επιστρέφει το αποτέλεσμα ως συμβολοσειρά.

var result = fmt.Sprintf("This is a test %v", 90) 

ο Fprintf μέθοδος μορφοποιεί τη συμβολοσειρά και τη γράφει σε ένα πρόγραμμα εγγραφής (μέθοδοι που υλοποιούν το ιο.Συγγραφέας διεπαφή)

// write data to standard output 
result, err = fmt.Fprintf(writer, "This is a test %v", 90)

ο Fscanf μέθοδος σαρώνει από έναν αναγνώστη και μορφοποιεί σύμφωνα με την καθορισμένη μορφή.

var take string 

// read data from the given string
readString := strings.NewReader("This is a test")

read, err := fmt.Fscanf(reader, "%v", &take)

Σε αυτή την περίπτωση, το Fscanf αποκωδικοποιεί τη συμβολοσειρά από τον αναγνώστη στο παίρνω μεταβλητή, και το ανάγνωση μεταβλητή κρατά το αποτέλεσμα της μορφής.

Τα ρήματα μορφοποίησης συμβολοσειρών

Το Go παρέχει πολλά ρήματα μορφοποίησης που μπορείτε να χρησιμοποιήσετε μαζί με τις λειτουργίες μορφοποίησης συμβολοσειρών.

Υπάρχουν γενικά ρήματα μορφοποίησης συμβολοσειρών όπως το %σε ρήμα στα παραδείγματα συναρτήσεων μορφοποίησης συμβολοσειράς. Μπορείτε να χρησιμοποιήσετε τα γενικά ρήματα μορφοποίησης συμβολοσειρών για να μορφοποιήσετε οποιονδήποτε τύπο δεδομένων.

Μπορείτε να χρησιμοποιήσετε το %#σε ρήμα να εξάγει οποιαδήποτε τιμή, το %+v για κατασκευές, το %T ρήμα για τον τύπο οποιασδήποτε τιμής, και το %% ρήμα χωρίς τιμές.

type any struct {  
name string
age int
isLoggedIn bool
}

var instance = any {
name: "John Doe",
age: 34,
isLoggedIn: true,
}

var result = fmt.Sprintf("This is a struct formatting example %+v", instance)
fmt.Println(result)

ο αποτέλεσμα μεταβλητή κρατά τη μορφοποιημένη συμβολοσειρά της στιγμιαίας δομής. Εάν το εκτυπώσετε, θα πρέπει να μοιάζει κάπως έτσι:

πώς να προσθέσετε μουσική σε ένα βίντεο στο iphone
This is a struct formatting example {name:John Doe age:34 isLoggedIn:true}

Υπάρχουν τα ρήματα για τη μορφοποίηση συγκεκριμένων εγγενών τύπων δεδομένων Go, συμπεριλαμβανομένων καναλιών και δεικτών.

%t booleans.
%ρε int, int8, κ.λπ.
%d, %#x εάν εκτυπωθεί με %#v uint, uint8, κ.λπ.
%σολ float32, complex64, κ.λπ.
%μικρό σειρά.
chan.
δείκτης.

Θα θελήσετε να βεβαιωθείτε ότι δεν θα κάνετε λάθη με τα ρήματα, καθώς έχουν διάκριση πεζών-κεφαλαίων, όπως το chan και δείκτης ρήματα.

Μορφοποίηση ακεραίων και πλωτών

Υπάρχουν ρήματα μορφοποίησης συμβολοσειρών για μορφοποίηση ακεραίων διαφορετικές βάσεις . Μπορείτε να χρησιμοποιήσετε οποιοδήποτε από αυτά τα ρήματα για να μορφοποιήσετε ακέραιους αριθμούς

%σι βάση 2
%ντο ο χαρακτήρας που αντιπροσωπεύεται από το αντίστοιχο σημείο κωδικού Unicode.
%ρε βάση 10.
%O βάση 8.
%O βάση 8 με πρόθεμα 0o.
%q ένας χαρακτήρας με ένα μόνο εισαγωγικό κυριολεκτικά διέφυγε με ασφάλεια με τη σύνταξη Go.
βάση 16, με πεζά γράμματα για α-φ.
βάση 16, με κεφαλαία γράμματα για Α-Φ.
%ΣΕ Μορφή Unicode: U+1234; ίδιο με το 'U+%04X'.

Για παράδειγμα, μπορείτε να μορφοποιήσετε έναν ακέραιο χρησιμοποιώντας το %ρε ρήμα:

var result = fmt.Sprintf("This is an integer formatting example %d", 90) 
fmt.Println(result)

Αυτά είναι τα ρήματα για τη μορφοποίηση αριθμών κινητής υποδιαστολής.

%σι επιστημονική σημειογραφία χωρίς δεκαδικό με εκθέτη δύναμη δύο, με τον τρόπο strconv. FormatFloat με τη μορφή «b», π.χ. -123456p-78
%και επιστημονική σημειογραφία, π.χ. -1,234456e+78
%ΚΑΙ υποδιαστολή αλλά χωρίς εκθέτη, π.χ., 123.456
%φά υποδιαστολή αλλά χωρίς εκθέτη, π.χ., 123.456
%ΦΑ συνώνυμο του %f.
%σολ %e για μεγάλους εκθέτες, %f διαφορετικά. Ακρίβεια παρακάτω.
%ΣΟΛ %E για μεγάλους εκθέτες, %F διαφορετικά
δεκαεξαδικός συμβολισμός (με δεκαδική ισχύ δύο εκθετών), π.χ. -0x1.23abcp+20.
δεκαεξαδικός συμβολισμός με κεφαλαία, π.χ. -0X1,23ABCP+20.

Ακολουθεί ένα παράδειγμα μορφοποίησης μιας υποδιαστολής χωρίς εκθέτη με το %φά ρήμα.

var result = fmt.Sprintf("This is a floating point formatting example %f", 432.9503) 
fmt.Println(result)

Μπορείτε πάντα να χρησιμοποιήσετε τα γενικά ρήματα εάν δεν είστε σίγουροι για τον τύπο.

Μορφοποίηση συμβολοσειρών και byte

Οι συμβολοσειρές και τα κομμάτια τύπων byte είναι αρκετά παρόμοια στο Go. Αυτές είναι οι σημαίες για τη μορφοποίηση συμβολοσειρών και byte.

%μικρό τα μη ερμηνευμένα byte της συμβολοσειράς ή του slice
%q μια συμβολοσειρά με διπλά εισαγωγικά διέφυγε με ασφάλεια με τη σύνταξη Go
βάση 16, πεζά, δύο χαρακτήρες ανά byte
βάση 16, κεφαλαία, δύο χαρακτήρες ανά byte

Ακολουθεί ένα παράδειγμα μορφοποίησης μιας συμβολοσειράς με το %μικρό ρήμα.

var score = "example" 
var result = fmt.Sprintf("This is a string formatting example %s", score)
fmt.Println(result)

Το πακέτο fmt είναι απαραίτητο για τον προγραμματισμό Python

ο fmt Το πακέτο περιέχει τις περισσότερες από τις λειτουργίες που θα χρειαστείτε για τη μορφοποίηση συμβολοσειρών. Το Go παρέχει επίσης α χορδές πακέτο για χειρισμό χορδών και α κούτσουρο πακέτο που μπορεί να μορφοποιήσει συμβολοσειρές για καταγραφή.

ο fmt Το πακέτο έχει λειτουργίες που υλοποιούν το ιο.Συγγραφέας και io.Αναγνώστης διεπαφές. Θα το βρείτε χρήσιμο για πολλές περιπτώσεις χρήσης, όπως η δημιουργία εφαρμογών ιστού και γραμμής εντολών.