Η μορφοποίηση του κώδικά σας είναι ένας σημαντικός τρόπος βελτίωσης της αναγνωσιμότητας, της συνέπειας και της επαναχρησιμοποίησής του. Ο σωστά μορφοποιημένος κώδικας είναι πιο εύκολο να κατανοηθεί, να τροποποιηθεί και να διατηρηθεί.
Ένα από τα σπουδαία χαρακτηριστικά του Go είναι οι καλά καθορισμένες συμβάσεις μορφοποίησής του. Μπορείτε να χρησιμοποιήσετε το ενσωματωμένο πακέτο μορφής και την εντολή go fmt, για να μορφοποιήσετε αυτόματα τον κώδικά σας. Αυτό θα βοηθήσει να διασφαλιστεί ότι οι άλλοι προγραμματιστές Go μπορούν να το διαβάσουν όσο το δυνατόν πιο εύκολα.
Το Πακέτο Μορφοποίησης και η Εντολή fmt
ο μορφή Το πακέτο υλοποιεί τυπική μορφοποίηση για το Μετάβαση στον πηγαίο κώδικα. Το πακέτο λειτουργεί με το go format εργαλείο γραμμής εντολών για ευελιξία στη μορφοποίηση του κώδικα Go.
Το πακέτο μορφής είναι μια υπομονάδα στο πακέτο go. Δείτε πώς μπορείτε να το εισαγάγετε:
εισαγωγή"go/format"
Μπορείτε να περιηγηθείτε στην τεκμηρίωση της εντολής go fmt καθορίζοντας το βοήθεια εντολή πριν από το fmt εντολή:
πήγαινε βοήθεια fmt
Καθορίστε ένα όνομα αρχείου μετά την εντολή fmt για να μορφοποιήσετε αυτό το αρχείο. Αυτό θα προσαρμόσει το κενό διάστημα και την εσοχή του κώδικά σας ώστε να συμμορφώνεται με τα πρότυπα Go.
πήγαινε fmt main.go
Πίσω από τις σκηνές, το go fmt είναι ένα ψευδώνυμο για την εντολή gofmt, συγκεκριμένα:
gofmt -l -w
Αυτές οι σημαίες αναγκάζουν το gofmt να γράψει τυχόν αλλαγές σε κάθε αρχείο που παρέχετε και να παραθέσει τα ονόματα των αρχείων που αλλάζει.
Μπορείτε να προσθέσετε το -Χ επισημάνετε στην εντολή fmt. Η σημαία -x βοηθά στην εγγραφή αλλαγών από τον μορφοποιητή στο αρχικό αρχείο.
πάω fmt -x main.go
ο -n Το flag λειτουργεί παρόμοια με το -x, αλλά δεν κάνει αλλαγές. Αντίθετα, εμφανίζει τις εντολές που πηγαίνουν το fmt θα εκτελούνται χωρίς το -n:
πηγαίνω fmt -n main.go
Η σημαία λέει στον μορφοποιητή να εμφανίζει αλλαγές, κάτι που σας επιτρέπει να τις ελέγξετε πρώτα πριν τις εφαρμόσετε.
Ακολουθεί ένα απλό πρόγραμμα Go που κάνει βρόχο μεταξύ ακεραίων από το μηδέν έως το πέντε και εκτυπώνει τη συμβολοσειρά "Hello World!".
// μορφοποίηση ενός αρχείου με το όνομα main.go όπως φαίνεται στο παραπάνω παράδειγμα
πακέτο κύριος
εισαγωγή"fmt"
funcκύριος() {
var Χ ενθ=5
Για i:=0;Εγώ fmt. Println("Γειά σου Κόσμε!")
}
}
Μορφοποίηση Go Source Code
Το πακέτο μορφής περιέχει α Πηγή λειτουργία για μορφοποίηση αρχείων Go από προγράμματα. Θα πρέπει να διαβάσετε το αρχείο και να μεταβιβάσετε τα περιεχόμενα ως ορίσματα στη συνάρτηση Source.
Η συνάρτηση Source θα επιστρέψει το μορφοποιημένο περιεχόμενο αρχείου που μπορείτε να γράψετε στο αρχείο ή σε ένα νέο.
Μπορείτε να διαβάσετε αρχεία με το ReadFile λειτουργία του ioutil πακέτο. Η συνάρτηση ReadFile παίρνει το όνομα του αρχείου και επιστρέφει το περιεχόμενο του αρχείου και ένα σφάλμα χειρισμού.
fileContent, err := ioutil. ReadFile("main.go")
αν λάθος!= μηδέν {
κούτσουρο. Fatalln("Παρουσιάστηκε σφάλμα κατά την ανάγνωση του αρχείου", λάθος)
}
Η διαβίβαση του περιεχομένου του αρχείου στη συνάρτηση Source επιστρέφει το μορφοποιημένο περιεχόμενο του αρχείου και ένα σφάλμα χειρισμού.
μορφοποιημένο, err := μορφή. Πηγή (fileContent)
αν λάθος!= μηδέν {
κούτσουρο. Fatalln("Παρουσιάστηκε σφάλμα μορφοποίησης με τη συνάρτηση πηγής", λάθος)
}
Μπορείτε να γράψετε το περιεχόμενο του μορφοποιημένου αρχείου στο αρχείο με το WriteFile λειτουργία του ioutil πακέτο. Η συνάρτηση WriteFile λαμβάνει το όνομα αρχείου, τα περιεχόμενα και λειτουργία άδειας αρχείου, επιστρέφοντας τυχόν σφάλματα. Η λειτουργία άδειας είναι σχετική μόνο εάν το αρχείο δεν υπάρχει, οπότε το WriteFile θα το δημιουργήσει.
ο 0644 Η λειτουργία άδειας αρχείου δίνει:
- Ο κάτοχος του αρχείου δικαιώματα ανάγνωσης και εγγραφής.
- Ανάγνωση δικαιωμάτων σε άλλους χρήστες στην ίδια ομάδα με τον κάτοχο.
- Δεν υπάρχουν δικαιώματα σε άλλους χρήστες.
err = ioutil. WriteFile("main.go", μορφοποιημένο, 0644)
αν λάθος!= μηδέν {
κούτσουρο. Fatalln("Παρουσιάστηκε σφάλμα κατά την εγγραφή του αρχείου", λάθος)
}
Εναλλακτικά, μπορείτε να μεταβιβάσετε τον πηγαίο κώδικα Go στη συνάρτηση Source για μορφοποίηση. Μπορείτε να καθορίσετε τον κώδικα σε ένα κομμάτι byte χρησιμοποιώντας τικ (`):
πακέτο κύριος
εισαγωγή (
"fmt"
"go/format"
)funcκύριος() {
// απλό πρόγραμμα που υπολογίζει το εμβαδόν ενός τριγώνου με τα μαθηματικά
// λειτουργία
μορφοποιημένο, err := μορφή. Πηγή([]ψηφιόλεξη(`
πακέτο κύριος
εισαγωγή(
"fmt"
"μαθηματικά"
)
funcκύριος(){
var ένα float64=3
var σι float64=4
var ντο float64=5
var μικρό float64=(a+b+c)/2
var περιοχή float64=μαθηματικά. Sqrt (s*(s-a)*(s-b)*(s-c))
fmt. Println("Το εμβαδόν του τριγώνου είναι:",περιοχή)
}
`))
αν λάθος!= μηδέν {
κούτσουρο. Fatalln("Παρουσιάστηκε σφάλμα μορφοποίησης με τη συνάρτηση πηγής", λάθος)
} αλλού {
fmt. Println(σειρά(μορφοποιημένο))
}
}
Κατά τη μορφοποίηση, θα χρειαστεί να μετατρέψετε το κομμάτι byte σε συμβολοσειρά με το σειρά λειτουργία. Εδώ είναι ο μορφοποιημένος πηγαίος κώδικας.
Προσαρμογή της διαδικασίας μορφοποίησης
Μπορείτε να προσαρμόσετε τη διαδικασία μορφοποίησης με το πακέτο μορφοποίησης Διαμόρφωση struct. Η δομή Config περιέχει πεδία όπου μπορείτε να καθορίσετε επιλογές μορφής κατά την εγκατάσταση.
εισαγωγή"go/format"
config := &μορφοποίηση. διαμόρφωση{
// Tabwidth ορίζει τον αριθμό των διαστημάτων ανά καρτέλα.
Tabwidth: 8,// UseTabs υποδεικνύει εάν ο μορφοποιητής πρέπει να χρησιμοποιεί καρτέλες αντί για
// διαστήματα.
Καρτέλες Χρήσης: ψευδής,// Το TabIndent χρησιμοποιείται για να προσδιοριστεί εάν η αρχική εσοχή πρέπει να είναι
// γίνεται με χρήση καρτελών ή διαστημάτων.
TabIndent: αληθής,// Το NoFinalTab καθορίζει εάν μια τελική καρτέλα πρέπει να αφαιρεθεί από
// γραμμές πριν μορφοποιηθούν.
NoFinalTab: αληθής,// Το Spaces καθορίζει εάν τα κενά θα πρέπει να χρησιμοποιούνται για ευθυγράμμιση.
Χώροι: αληθής,
// Το NoTrimTrailingSpace καθορίζει αν θα πρέπει να υπάρχει ελεύθερος χώρος στο τέλος
// να περικοπεί από τις γραμμές πριν μορφοποιηθούν.
NoTrimTrailingSpace: ψευδής,
}
Μπορείτε να χρησιμοποιήσετε τα πεδία για να προσαρμόσετε τη συμπεριφορά του μορφοποιητή σας, ορίζοντας τις επιλογές με βάση τις απαιτήσεις σας.
Στη συνέχεια, μπορείτε να χρησιμοποιήσετε τη μέθοδο Source αυτής της δομής για να μορφοποιήσετε ένα κομμάτι byte με βάση τη διαμόρφωσή σας.
funcκύριος() {
fileContent, err := ioutil. ReadFile("main.go")// σημειώστε ότι αυτή είναι μια μέθοδος Source του τύπου `config`, όχι από το
// Το ίδιο το πακέτο «format», αν και η λειτουργικότητα είναι ίδια, θα το κάνετε
// πρέπει να τηρήσετε αυτό εάν πρέπει να ρυθμίσετε τις παραμέτρους του μορφοποιητή
formatted, err := config. Πηγή (fileContent)αν λάθος!= μηδέν {
κούτσουρο. Fatalln("Παρουσιάστηκε σφάλμα μορφοποίησης με τον τύπο διαμόρφωσης", λάθος)
}
ioutil. WriteFile("main.go", μορφοποιημένο, 0644)
}
Κλήση της διαμόρφωσης. Η λειτουργία Source() όπως αυτή μορφοποιεί τα περιεχόμενα του main.go αρχείο χρησιμοποιώντας τις επιλογές διαμόρφωσης. Επιστρέφει τα μορφοποιημένα περιεχόμενα ως κομμάτι byte και ως σφάλμα.
Μπορείτε να μορφοποιήσετε και να χειριστείτε τη συμβολοσειρά στο Go
Το πακέτο μορφοποίησης και η εντολή go fmt μπορούν να σας βοηθήσουν να αυτοματοποιήσετε τη διαδικασία μορφοποίησης του κώδικα.
Το Go παρέχει επίσης ένα πακέτο fmt για μορφοποίηση συμβολοσειρών και ένα πακέτο συμβολοσειρών για χειρισμό συμβολοσειρών.
Το πακέτο fmt υλοποιεί απλούστερα μορφοποιημένα I/O με λειτουργίες ανάλογες με τις λειτουργίες printf και scanf του C. Η συνάρτηση strings υλοποιεί απλές συναρτήσεις για τον χειρισμό των κωδικοποιημένων συμβολοσειρών UTF-8.