Η σωστή μορφοποίηση αριθμών μπορεί να είναι μια δύσκολη εργασία. Και η μορφοποίηση νομισμάτων φέρνει πρόσθετες προκλήσεις σχετικά με την τοπική προσαρμογή. Ευτυχώς, το Go διαθέτει λειτουργίες που θα σας βοηθήσουν.
Η τυπική βιβλιοθήκη Go παρέχει διάφορα εργαλεία για τη μορφοποίηση αριθμών. Το πακέτο strconv περιλαμβάνει λειτουργίες ανάλυσης και μετατροπής αριθμών από και προς συμβολοσειρές.
Το πακέτο strconv
ο strconv Το πακέτο είναι ένα ισχυρό εργαλείο για τη μετατροπή μεταξύ αριθμών και συμβολοσειρών. Μπορείτε να το χρησιμοποιήσετε για να εργαστείτε με αριθμούς σε διάφορες μορφές.
Το strconv είναι μέρος της τυπικής βιβλιοθήκης, επομένως είναι σχετικό με πολλά από τα βασικές έννοιες Go με τις οποίες πρέπει να γνωρίζετε. Δείτε πώς μπορείτε να το εισαγάγετε:
εισαγωγή"strconv"
Το πακέτο παρέχει λειτουργίες για τη μετατροπή αριθμών προς και από συμβολοσειρές σε διάφορες μορφές. Περιλαμβάνει συναρτήσεις για εργασία με ακέραιους και αριθμούς κινητής υποδιαστολής.
Το strconv μπορεί επίσης να χειριστεί τη μετατροπή από και προς δυαδικές, οκταδικές και δεκαεξαδικές μορφές καθώς και επιστημονική σημείωση.
Μορφοποίηση ακεραίων στο Go
Το πακέτο strconv Ιτόα Η λειτουργία παρέχει λειτουργικότητα για τη μετατροπή ακεραίων σε συμβολοσειρές. ο Ιτόα Η συνάρτηση παίρνει έναν ακέραιο και επιστρέφει την παράσταση συμβολοσειράς αυτού του ακέραιου αριθμού.
εισαγωγή (
"fmt"
"strconv"
)
funcκύριος() {
ακέραιοι := 3043
stringVersion := strconv. Itoa (ακέραιοι αριθμοί)
fmt. Println (έκδοση συμβολοσειράς) // Έξοδος: "3043"
}
Αυτός ο κώδικας μετατρέπει μια ακέραια τιμή σε μια συμβολοσειρά χρησιμοποιώντας Ιτόα. Στη συνέχεια, εξάγει τη συμβολοσειρά που προκύπτει στην κονσόλα χρησιμοποιώντας το fmt πακέτο.
Επιπρόσθετα με Ιτόα λειτουργία, το strconv παρέχει:
- FormatInt για τη μορφοποίηση ακεραίων ως συμβολοσειρών με δεδομένη βάση
- AppendInt για την προσθήκη ακεραίων σε μορφή συμβολοσειράς σε ένα κομμάτι byte.
Δείτε πώς μπορείτε να χρησιμοποιήσετε το FormatInt λειτουργία για να μορφοποιήσετε έναν ακέραιο:
εισαγωγή (
"fmt"
"strconv"
)
funcκύριος() {
ακέραιοι := 12345
χορδές := strconv. FormatInt(int64(ακέραιοι), 10)
fmt. Println (συμβολοσειρές) // Έξοδος: "12345"
}
Αυτός ο κώδικας χρησιμοποιεί int64() για να μετατρέψετε την αρχική τιμή σε ακέραιο αριθμό 64 bit. Στη συνέχεια μεταβιβάζει το αποτέλεσμα σε FormatInt, μαζί με μια βάση για μετατροπή, σε αυτήν την περίπτωση 10. Το FormatInt επιστρέφει μια συμβολοσειρά η οποία Println μετά βγαίνει στην κονσόλα.
ο AppendInt η συνάρτηση παίρνει σε ένα κομμάτι byte, an int64 αξία και βάση.
εισαγωγή (
"fmt"
"strconv"
)
funcκύριος() {
ακέραιοι := 12345
byteSlice := φτιαχνω, κανω([]ψηφιόλεξη, 0, 20)
byteSlice = strconv. AppendInt (byteSlice, int64(ακέραιοι), 10)
fmt. Println(σειρά(byteSlice)) // Έξοδος: "12345"
}
Σημειώστε ότι το AppendInt λαμβάνει ένα κομμάτι byte για προσθήκη και επιστρέφει το τμήμα byte που προκύπτει. Σε αυτήν την περίπτωση, το αρχικό κομμάτι byte είναι κενό, αλλά έχει χωρητικότητα 20 για να αποθηκεύσει την προκύπτουσα αναπαράσταση συμβολοσειράς του ακέραιου αριθμού.
Ανάλυση συμβολοσειρών ως ακέραιων αριθμών
ο Atoi η συνάρτηση μετατρέπει τις συμβολοσειρές σε ακέραιους αριθμούς. Λαμβάνει μια συμβολοσειρά ως είσοδο και επιστρέφει μια ακέραια αναπαράσταση αυτής της συμβολοσειράς μαζί με έναν τύπο σφάλματος.
Δείτε πώς μπορείτε να χρησιμοποιήσετε το Atoi συνάρτηση για μετατροπή συμβολοσειράς σε ακέραιο:
εισαγωγή (
"fmt"
"strconv"
)funcκύριος() {
χορδές := "123"
ακέραιοι, err := strconv. Atoi (χορδές)αν λάθος!= μηδέν {
fmt. Println (λάθος)
}
fmt. Println (ακέραιοι αριθμοί)
}
Το πρόγραμμα εξάγει την ακέραια τιμή στην κονσόλα:
Μπορείτε επίσης να χρησιμοποιήσετε το ParseUint συνάρτηση για την ανάλυση της παράστασης συμβολοσειράς ανυπόγραφων ακεραίων.
πακέτο κύριος
εισαγωγή (
"fmt"
"strconv"
)funcκύριος() {
// ανάλυση συμβολοσειράς ως βάσης 10 και ακέραιου χωρίς υπογραφή 0-bit
val, err := strconv. ParseUint("12345", 10, 0)
αν λάθος!= μηδέν {
fmt. Println (λάθος)
} αλλού {
fmt. Println (val) // Έξοδος: 12345
}
}
ο ParseUint Η συνάρτηση αναλύει τη συμβολοσειρά 12345 ως βάση δέκα, ανυπόγραφο ακέραιο. Το μέγεθος 0-bit διασφαλίζει ότι επιστρέφει έναν τυπικό τύπο int. Επιστρέφει την αναλυμένη τιμή και ένα σφάλμα.
Μπορείτε να χρησιμοποιήσετε το ParseFloat συνάρτηση για την ανάλυση μιας παράστασης συμβολοσειράς ενός αριθμού κινητής υποδιαστολής.
εισαγωγή (
"fmt"
"strconv"
)funcκύριος() {
// ανάλυση συμβολοσειράς ως αριθμό κινητής υποδιαστολής 64-bit
val, err := strconv. ParseFloat("3.14", 64)
αν λάθος!= μηδέν {
fmt. Println (λάθος)
} αλλού {
fmt. Println (val) // Έξοδος: 3.14
}
}
ο ParseFloat Η συνάρτηση αναλύει τη συμβολοσειρά ως αριθμό κινητής υποδιαστολής 64-bit και επιστρέφει τη συμβολοσειρά και έναν τύπο σφάλματος.
Μορφοποίηση νομισμάτων στο Go
Η δημιουργία μιας εφαρμογής που αλληλεπιδρά με νομίσματα απαιτεί μορφοποίηση αριθμών και ανάλυση. Η εργασία με διαφορετικά νομίσματα μπορεί να είναι μια πρόκληση, αλλά το strconv και λογιστική τα πακέτα μπορούν να σας βοηθήσουν να τα μορφοποιήσετε.
Δείτε πώς μπορείτε να αναλύσετε μια συμβολοσειρά νομίσματος σε ένα float για πράξεις στο νόμισμα:
εισαγωγή (
"fmt"
"strconv"
)funcκύριος() {
// Συμβολοσειρά νομίσματος για ανάλυση
currencyStr := "$1,234.56"// Αφαιρέστε το σύμβολο νομίσματος και μετατρέψτε σε float
floatVal, err := strconv. ParseFloat (currencyStr[1:], 64)αν λάθος!= μηδέν {
fmt. Println (λάθος)
ΕΠΙΣΤΡΟΦΗ
}
// Εκτυπώστε την αναλυμένη τιμή float
fmt. Println (floatVal) // Έξοδος: 1234,56
}
ο νομισματοστρ Η μεταβλητή είναι μια παράσταση συμβολοσειράς μιας τιμής νομίσματος με σύμβολο το σύμβολο του δολαρίου. Το πρόγραμμα χρησιμοποιεί το ParseFloat συνάρτηση για την ανάλυση της συμβολοσειράς νομίσματος ξεκινώντας από το δεύτερο στοιχείο (μετά το σύμβολο νομίσματος).
Συμβατικά, είναι καλύτερο να αποφύγετε τη χρήση float για νομίσματα, καθώς μπορεί να οδηγήσουν σε λανθασμένους υπολογισμούς και σφάλματα στην παραγωγή.
Εναλλακτικά, μπορείτε να χρησιμοποιήσετε ένα πακέτο τρίτου κατασκευαστή όπως λογιστική που διαθέτει λειτουργικότητα για μορφοποίηση και ανάλυση νομισμάτων.
Εκτελέστε αυτήν την εντολή τερματικού στον κατάλογο του έργου σας για να εγκαταστήσετε το λογιστικό πακέτο:
πηγαίνετε να πάρετε το github.com/leekchan/accounting
Ξεκινήστε δημιουργώντας ένα παράδειγμα του Λογιστική struct. Θυμηθείτε ότι τα structs είναι ένα από τα Τα βασικά αντικειμενοστραφή χαρακτηριστικά του Go, παρόμοια με μαθήματα από άλλες γλώσσες. Μπορείτε να αρχικοποιήσετε μια παρουσία Λογιστικής με ένα σύμβολο νομίσματος και μια τιμή ακριβείας, μεταξύ άλλων επιλογών.
Μπορείτε να χρησιμοποιήσετε το FormatMoney λειτουργία του λογιστικού πακέτου για τη μορφοποίηση αριθμών σε νομίσματα.
πακέτο κύριος
εισαγωγή (
"fmt"
"μαθηματικά/μεγάλα""github.com/leekchan/accounting"
)
funcκύριος() {
ac := λογιστική. Λογιστική{Σύμβολο: "$", Ακρίβεια: 2}
fmt. Println (ac. FormatMoney(123456789.213123))
fmt. Println (ac. FormatMoney(12345678))
fmt. Println (ac. FormatMoney (μεγάλο. NewRat(77777777, 3)))
fmt. Println (ac. FormatMoney (μεγάλο. NewRat(-77777777, 3)))
fmt. Println (ac. FormatMoneyBigFloat (μεγάλ. NewFloat(123456789.213123)))
}
ο μετα Χριστον μεταβλητή είναι η λογιστική περίπτωση. Αυτό το πρόγραμμα μορφοποιεί και εκτυπώνει χρηματικές αξίες χρησιμοποιώντας το FormatMoney και FormatMoneyBigFloat μεθόδους της λογιστικής περίπτωσης. ο NewRat λειτουργία από το μεγάλο Το πακέτο δημιουργεί έναν ρητό αριθμό με αριθμητή και παρονομαστή. ο NewFloat Η συνάρτηση βοηθά στην αναπαράσταση μεγάλων αριθμών κινητής υποδιαστολής.
Το Go μπορεί να σας βοηθήσει να μορφοποιήσετε και άλλους τύπους
Το Go παρέχει πολλές λειτουργίες για τη μετατροπή αριθμών και νομισμάτων με απλό τρόπο.
Η γλώσσα προσφέρει επίσης ένα ισχυρό σύστημα μορφοποίησης συμβολοσειρών. Η συνάρτηση Sprintf εμπνευσμένη από το C του πακέτου fmt σάς επιτρέπει να δημιουργείτε μορφοποιημένες συμβολοσειρές χρησιμοποιώντας μια ειδική σύνταξη κράτησης θέσης. Μπορείτε να χρησιμοποιήσετε το Sprintf για να δημιουργήσετε συμβολοσειρές που περιλαμβάνουν αριθμούς και τιμές νομισμάτων, καθιστώντας εύκολη τη δημιουργία αναγνώσιμων από τον άνθρωπο εξόδου.