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

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

Υποστήριξη για Generics

Ο γενικός προγραμματισμός σάς επιτρέπει να γράφετε συναρτήσεις που μπορούν να δέχονται και να επιστρέφουν πιο ευέλικτους τύπους.

Πριν από την υποστήριξη για γενικά, έπρεπε να δηλώσετε ρητά τους τύπους παραμέτρων και τους τύπους επιστροφής. Η απλούστερη μορφή γενικών σάς επιτρέπει να καθορίσετε μη τυποποιημένες παραμέτρους:

funcΕκτύπωση Οτιδήποτε[Τ οποιαδήποτε](πράγμαΤ) {
fmt.Εκτύπωση(πράγμα)
}

Αλλά τα γενόσημα προσφέρουν πολύ περισσότερη ισχύ από αυτό. Μπορείτε να δηλώσετε σχεδόν οποιονδήποτε συνδυασμό και ευαισθησία τύπου για παραμέτρους. Για παράδειγμα, μπορείτε να χρησιμοποιήσετε το περιορισμούς πακέτο για να γράψετε μια συνάρτηση που λειτουργεί σε οποιαδήποτε τιμή που μπορείτε να παραγγείλετε. Αυτό περιλαμβάνει int, floats και strings. Ακολουθεί ένα παράδειγμα που δείχνει τη σύνταξη:

instagram viewer

εισαγωγή "golang.org/x/exp/constraints"

funcΜέγιστη[Τ περιορισμοί. Διέταξε](εισαγωγή[]Τ) (ΜέγιστηΤ) {
για _, v := εμβέλεια εισαγωγής {
αν v > Μέγιστη {
μέγιστο = v
}
}

ΕΠΙΣΤΡΟΦΗ Μέγιστη
}

Σημειώστε ότι αυτή η συνάρτηση χρησιμοποιεί τον γενικό τύπο, περιορισμούς. Διέταξε, για να δηλώσετε την παράμετρό του και τον τύπο επιστροφής του.

Τα γενόσημα παρέχουν αβεβαιότητα και ευελιξία στον κώδικα. Η πρόταση και οι αλλαγές Generics είναι συμβατές με το παρελθόν.

Fuzz Testing

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

ο δοκιμές Το πακέτο εισάγει το fuzzing στο 1.18, επομένως για να ορίσετε ένα fuzz, πρέπει να το εισαγάγετε από την τυπική βιβλιοθήκη:

εισαγωγή "δοκιμή"

Μετά την εισαγωγή του δοκιμές πακέτο, μπορείτε να περάσετε ένα αναγνωριστικό τύπου *δοκιμή. φά στη λειτουργία δοκιμής.

functestFunc(στ *δοκιμή. ΦΑ) {
// ο κωδικός σου
}

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

Go Workspace Support

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

Συμβατικά, υποδιαιρείτε τα έργα Go σε πηγαίο κώδικα (src) και εκτελέσιμα αρχεία (αποθήκη). Η αλυσίδα εργαλείων Go δημιουργεί πηγαίο κώδικα από το πρώτο σε εκτελέσιμα στο δεύτερο. Οι χώροι εργασίας Go επιτρέπουν στους προγραμματιστές να εργάζονται με πολλούς χώρους εργασίας χρησιμοποιώντας λειτουργικές μονάδες Go με μια συγκεκριμένη κύρια λειτουργική μονάδα.

Η εντολή για τη δημιουργία χώρων εργασίας είναι:

$ πάει δουλειά <εντολή>

Χρησιμοποιήστε το εργασία εντολή με υποεντολές όπως:

  • μέσα σε αυτό → δημιουργεί έναν χώρο εργασίας στον καθορισμένο κατάλογο.
  • χρήση → προσθέτει μια νέα ενότητα στο go.work, το αρχείο go workspace.
  • επεξεργασία → επεξεργάζεται το αρχείο του χώρου εργασίας go.
  • συγχρονισμός → συγχρονίζει τις εξαρτήσεις από τη λίστα δόμησης στις μονάδες χώρου εργασίας.

Η συμπερίληψη χώρων εργασίας θα αύξανε την παραγωγικότητα, όπως είχε προγραμματιστεί για την ανάπτυξη της γλώσσας.

Βελτιώσεις απόδοσης

Πηγαίνω Η έκδοση 1.18 υποστηρίζει πλέον ARM64 Apple M1 και PowerPC 64-bit στη σύμβαση κλήσεων ABI. Αυτό έχει ως αποτέλεσμα πάνω από 10% κέρδος στην απόδοση της CPU για τους χρήστες αυτών των συσκευών.

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

ο πήγαινε να φτιάξεις Η εντολή, μαζί με άλλες σχετικές εντολές, υποστηρίζει το -asan σημαία, η οποία υποστηρίζει διαλειτουργικότητα με C/C++. Αυτό θα βοηθήσει τους προγραμματιστές της Go να χρησιμοποιούν προγράμματα Go με προγράμματα C και C++.

Άλλες σημαντικές ενημερώσεις

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

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

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

Μπορείτε να βρείτε τις πλήρεις λεπτομέρειες όλων των τελευταίων αλλαγών στις σημειώσεις έκδοσης για Πήγαινε 1.18.

Το Go 1.18 έχει πολλές διαφορετικές προσθήκες

Χρησιμοποιώντας το Go 1.18, μπορείτε τώρα να γράψετε γενικό κώδικα, να δοκιμάζετε αποτελεσματικά χρησιμοποιώντας fuzzing και να κάνετε εναλλαγή μεταξύ των λειτουργικών μονάδων Go χρησιμοποιώντας χώρους εργασίας. Μπορείτε ακόμη να γράψετε κώδικα που λειτουργεί σε συνδυασμό με προγράμματα C και C++.

Αξίζει το Golang να μάθεις σήμερα;

Διαβάστε Επόμενο

ΜερίδιοΤιτίβισμαΜερίδιοΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ

Σχετικά θέματα

  • Προγραμματισμός
  • Προγραμματισμός
  • Γλώσσες προγραμματισμού

Σχετικά με τον Συγγραφέα

Προσωπικό MUO

Εγγραφείτε στο ενημερωτικό μας δελτίο

Εγγραφείτε στο ενημερωτικό μας δελτίο για συμβουλές τεχνολογίας, κριτικές, δωρεάν ebook και αποκλειστικές προσφορές!

Κάντε κλικ εδώ για να εγγραφείτε