Επιστροφή στο blog

Πώς να εισάγετε πακέτα στη Go

Πώς να εισάγετε πακέτα στη Go

Go (γνωστή και ως Golang) είναι μια γλώσσα προγραμματισμού ανοιχτού κώδικα, στατικά τυποποιημένη. Αναπτύχθηκε αρχικά από την Google. Ορισμένα αξιοσημείωτα χαρακτηριστικά της Go περιλαμβάνουν την απλότητα, την υψηλή απόδοση, την αναγνωσιμότητα και την αποτελεσματικότητα.

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

Προαπαιτούμενα

Για να ακολουθήσετε αυτόν τον οδηγό, θα χρειαστείτε τα ακόλουθα στοιχεία προετοιμασμένα στη διάθεσή σας:

Step 1 – Εγκατάσταση της Go

Έχουμε ήδη συζητήσει την εγκατάσταση της βασικής γλώσσας προγραμματισμού Go σε Ubuntu 20.04. Ωστόσο, υπάρχει μια ευκολότερη εναλλακτική μέθοδος: g  (ένας ελαφρύς διαχειριστής εκδόσεων Go).

Ο λόγος που πρόκειται να χρησιμοποιήσουμε το g  είναι ότι καμία από τις εκδόσεις Go που είναι διαθέσιμες από τα αποθετήρια πακέτων του Ubuntu ή το snap δεν διαθέτει την τελευταία διαθέσιμη έκδοση Go (v1.18 κατά τη στιγμή της συγγραφής αυτού του οδηγού). Συνιστάται πάντα η χρήση της τελευταίας διαθέσιμης έκδοσης οποιουδήποτε πακέτου γλώσσας προγραμματισμού.

Η ακόλουθη εντολή θα εκτελέσει το g  σενάριο εγκατάστασης:

Import Packages in Go install go

Import Packages in Go installing go 2

Για να εφαρμοστούν οι αλλαγές, πρέπει να επανεκκινήσετε τη συνεδρία του shell. Μετά την επανεκκίνηση, επαληθεύστε την εγκατάσταση:

Import Packages in Go check go version

Μετά την εγκατάσταση της Go, συνιστάται επίσης να εγκαταστήσετε το gopls . Είναι ο επίσημος διακομιστής γλώσσας της Go. Είναι συμβατός με πολλούς επεξεργαστές κειμένου όπως οι VS Code, Vim, Emacs, Sublime Text, Atom και πολλοί άλλοι. Εκτελέστε την ακόλουθη εντολή:

Το περιβάλλον προγραμματισμού Go είναι τώρα έτοιμο.

Step 2 – Δημιουργία ενός Δείγματος Σεναρίου Go

Όλος ο κώδικας που παρουσιάζεται σε αυτόν τον οδηγό θα χωρέσει σε ένα μόνο σενάριο Go. Δημιουργήστε ένα δείγμα σεναρίου Go:

Αφού κάνετε αλλαγές στο σενάριο, μπορούμε να το εκτελέσουμε χρησιμοποιώντας την ακόλουθη εντολή Go:

Εδώ, ο μεταγλωττιστής της Go θα εκτελέσει τον κώδικα σε λειτουργία διερμηνέα.

Step 3 – Χρήση Πακέτων της Τυπικής Βιβλιοθήκης

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

  • fmt: Υλοποιεί μορφοποιημένη είσοδο/έξοδο με συναρτήσεις ανάλογες της C ( printf  και scanf ).
  • http: Αυτό το πακέτο παρέχει συναρτήσεις για τη δημιουργία υπηρεσιών ιστού, την αποστολή και τη λήψη δεδομένων μέσω του http  πρωτοκόλλου, κ.λπ.

Για να ενσωματωθεί οποιοδήποτε πακέτο σε ένα έργο Go, πρέπει να υλοποιηθεί χρησιμοποιώντας τη δήλωση import . Η δήλωση ορίζεται από τη λέξη-κλειδί import  μαζί με τα ονόματα των πακέτων. Για παράδειγμα, για να εισαγάγετε το math/rand , η δήλωση εισαγωγής θα έμοιαζε κάπως έτσι:

Ο ακόλουθος κώδικας υλοποιεί διάφορες συναρτήσεις από το πακέτο math/rand :

Αυτός ο κώδικας παρουσιάζει έναν απλό βρόχο for που εκτυπώνει 10 τυχαίους ακέραιους αριθμούς (0 έως 24) στην οθόνη. Εδώ:

  • rand.Int() : Αυτή η κλήση συνάρτησης επιστρέφει έναν τυχαίο ακέραιο.
  • rand.Intn() : Λειτουργεί παρόμοια με το rand.Int()  αλλά δέχεται μια παράμετρο που ορίζει το εύρος για τους τυχαίους ακέραιους αριθμούς (από το 0 έως τον καθορισμένο αριθμό).

Στη συνέχεια, εκτελέστε τον κώδικα:

Το αποτέλεσμα θα μοιάζει κάπως έτσι:

random number program

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

Βήμα 4 – Εισαγωγή Πολλαπλών Πακέτων

Μεγαλύτερα και πιο σύνθετα έργα πρέπει να ενσωματώνουν πολλαπλά πακέτα. Πώς τα εισάγετε στον κώδικα Go σας; Μια έγκυρη επιλογή είναι να χρησιμοποιήσετε μεμονωμένες δηλώσεις εισαγωγής για κάθε εισαγόμενο πακέτο. Ωστόσο, αυτή η προσέγγιση είναι αναποτελεσματική σε σύγκριση με την ακόλουθη δομή εισαγωγής:

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

Ο ακόλουθος κώδικας θέτει αυτή τη δυνατότητα σε λειτουργία:

Εκτελέστε τον κώδικα:

Το αποτέλεσμα θα μοιάζει κάπως έτσι:

importing multiple packages

Βήμα 5 – Εγκατάσταση Πρόσθετων Βιβλιοθηκών Go

Η πρότυπη βιβλιοθήκη της Go συνοδεύεται από πολυάριθμα χρήσιμα πακέτα. Αυτά είναι, από σχεδιασμό, γενικής χρήσης. Επιτρέπει στους προγραμματιστές να δημιουργούν τα δικά τους πακέτα πάνω στην πρότυπη βιβλιοθήκη για να καλύψουν τις συγκεκριμένες ανάγκες τους. Δείτε την επίσημη βάση δεδομένων πακέτων Go.

Τι γίνεται αν πρέπει να χρησιμοποιήσετε ένα πακέτο Go τρίτου μέρους; Η Go συνοδεύεται από την go install  εντολή ( go get  έχει καταργηθεί). Μπορεί να λάβει οποιοδήποτε πακέτο Go τρίτου μέρους από το διαδίκτυο.

Για επίδειξη, πρόκειται να εγκαταστήσουμε το cobra-cli  πακέτο. Η ακόλουθη εντολή Go θα κατεβάσει και θα εγκαταστήσει τα απαραίτητα αρχεία και θα ενσωματώσει το πακέτο στο σύστημα βιβλιοθηκών της Go:

install cobra cli

Το εκτελέσιμο (binary) του cobra-cli  θα πρέπει να βρίσκεται στην ακόλουθη τοποθεσία:

list gopath files

Τα άλλα αρχεία του πακέτου θα πρέπει να βρίσκονται στην ακόλουθη τοποθεσία:

list package files

Ξεκινώντας από τη Go v1.11, τα Go modules καθορίζουν την έκδοση του πακέτου που επιθυμείτε να εισαγάγετε. Αυτό εξηγείται λεπτομερώς εδώ: Go Modules GitHub.

Βήμα 6 – Ψευδώνυμα Πακέτων

Σε διάφορες περιπτώσεις, ενδέχεται να βρείτε αντικρουόμενα ονόματα πακέτων μεταξύ των τοπικών και των εισαγόμενων πακέτων. Εδώ είναι που η χρήση ψευδωνύμων (aliasing) μπορεί να λύσει τη σύγκρουση. Η δομή του aliasing μοιάζει κάπως έτσι:

Ας τροποποιήσουμε το απλό μας πρόγραμμα Go για να ενσωματώσουμε το fmt_alias  ως ψευδώνυμο για το πακέτο fmt :

Παρατηρήστε ότι αντί να χρησιμοποιούμε το fmt.Printf() , χρησιμοποιούμε το ψευδώνυμο του πακέτου fmt_alias.Printf() .

Ωστόσο, η Go δεν είναι και τόσο φιλική προς τα ψευδώνυμα. Όταν χρησιμοποιείτε ψευδώνυμα για να αποφύγετε τη σύγκρουση ονομάτων εισαγωγής, συνιστάται να δίνετε ψευδώνυμο στην πιο τοπική ή ειδική για το έργο εισαγωγή. Για παράδειγμα, αν θέλετε να έχετε τόσο ένα τοπικό πακέτο strings  όσο και ένα πακέτο συστήματος strings , τότε θα πρέπει να δώσετε ψευδώνυμο στο τοπικό πακέτο, όχι στο πακέτο συστήματος.

Η καλύτερη πρακτική είναι να αποφεύγετε τις συγκρούσεις ονομάτων εξαρχής.

Βήμα 7 – Μορφοποίηση Εισαγωγών

Μάθαμε να δηλώνουμε όλες τις εισαγωγές χρησιμοποιώντας μία μόνο δήλωση import . Τι γίνεται αν είχατε αρκετές εισαγωγές; Για παράδειγμα:

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

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

Δείτε πώς το import  block μπορεί να μοιάζει μετά την εφαρμογή του goimports :

Παρατηρείτε κάποιο μοτίβο;

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

Τελικές Σκέψεις

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

Σε αυτόν τον οδηγό, εκτελέσαμε τα προγράμματά μας στη Go χρησιμοποιώντας τον διερμηνέα. Ωστόσο, μπορείτε να μεταγλωττίσετε τους κώδικες σε αυτόνομα εκτελέσιμα αρχεία για καλύτερη απόδοση. Μπορείτε να μάθετε περισσότερα σχετικά με τη μεταγλώττιση προγραμμάτων Go εδώ. Αν θέλετε να μάθετε πώς να αναπτύξετε μια web εφαρμογή Go με το Nginx, δείτε αυτό το σεμινάριο. Επιπλέον, μπορείτε να ρίξετε μια ματιά στον οδηγό μας που παρουσιάζει πώς να γράψετε τα δικά σας πακέτα Go.

Είστε προγραμματιστής Go; Η CloudSigma προσφέρει υποστήριξη Go API για απρόσκοπτη ενσωμάτωση με τα έργα σας.

Καλή συνέχεια!

author

Preslav Dobrev

Συγγραφέας · CloudSigma

Ο Preslav Dobrev είναι Δημιουργικός Σχεδιαστής στην CloudSigma, με εστίαση στη συνεπή επιχειρηματική ταυτότητα μέσω παραδοσιακών και καινοτόμων καναλιών μάρκετινγκ. Διαθέτει την ικανότητα να συνδυάζει το καλλιτεχνικό όραμα με το στρατηγικό μάρκετινγκ για τη δημιουργία εντυπωσιακών αφηγήσεων επωνυμίας.

Σχόλια

Δεν υπάρχουν σχόλια ακόμα. Γράψτε το πρώτο.