Η γλώσσα προγραμματισμού Go της Google ήταν από το 2009 και το 2012 η γλώσσα έφθασε στην επίσημη κατάστασή της v1.0. Σε αυτά τα παρελθόντα χρόνια, πολλά έχουν αλλάξει συμπεριλαμβανομένου του τρόπου εγκατάστασης της γλώσσας. Πίσω στη νηπιακή ηλικία δεν υπήρχαν επίσημες δυαδικές διανομές και έπρεπε να χτίσετε το Go από τον πηγαίο κώδικα που ήταν η συνιστώμενη μέθοδος αφού η γλώσσα άλλαζε συχνά ή χρησιμοποιούσε ένα προ-κατασκευασμένο πακέτο για τη διανομή του Linux. Τότε η υποστήριξη των Windows ήταν περιορισμένη, καθώς ήταν υποστήριξη για αρχιτεκτονικές CPU διαφορετικές από την Intel.

Τα πράγματα έχουν βελτιωθεί πολύ από τότε. Για το Linux, υπάρχουν δύο εύκολοι τρόποι εγκατάστασης του Go. Κάντε λήψη της επίσημης δημιουργίας δυαδικών αρχείων Linux από τη σελίδα λήψεων Go ή επιλέξτε ένα πακέτο που έχει κατασκευαστεί για τη διανομή του Linux. Ο ευκολότερος τρόπος για να εγκαταστήσετε το Go on Ubuntu είναι να χρησιμοποιήσετε το apt-get :

 sudo apt-get να εγκαταστήσετε golang 

Μόλις εγκατασταθεί, μπορείτε να ξεκινήσετε την ανάπτυξη προγραμμάτων. Ένα από τα απλούστερα προγράμματα Go είναι το κλασικό πρόγραμμα "Hello World!". Χρησιμοποιώντας ένα πρόγραμμα επεξεργασίας κειμένου, δημιουργήστε ένα αρχείο που ονομάζεται " hellomte.go " με τον ακόλουθο κώδικα Go:

 πακέτο κύρια εισαγωγή "fmt" func main () {fmt.Print ("Hello Make Tech Tech Easier!")} 

Από την έκδοση v1.0 του Go, η ανάγκη για μεμονωμένες εντολές μεταγλώττισης και σύνδεσης έχει αφαιρεθεί και οι παλιές εντολές 8g και 8l έχουν αντικατασταθεί με την εντολή go .

Για να εκτελέσετε το hellomte.go, ανοίξτε ένα τερματικό και αλλάξτε τον κατάλογο στον φάκελο που περιέχει το αρχείο πηγαίου κώδικα και στη συνέχεια πληκτρολογήστε:

 πηγαίνετε run hellomte.go 

Αυτό θα μεταγλωττίσει και θα εκτελέσει το πρόγραμμα Go, αλλά δεν θα παράγει εκτελέσιμο δυαδικό αρχείο. Για να δημιουργήσετε ένα δυαδικό αρχείο και στη συνέχεια να το εκτελέσετε χρησιμοποιήστε την εντολή go build :

 πηγαίνετε να χτίσετε hellomte.go ./hellomte 

Η δύναμη της ταυτόχρονης

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

Εδώ είναι ένα απλό πρόγραμμα Go που εκτυπώνει μια συμβολοσειρά αρκετές φορές χρησιμοποιώντας μια ταυτόχρονη γκουρού:

 Εισαγωγή κύριας συσκευασίας ("fmt" "χρόνος") func say (συμβολοσειρά s) {για i: = 0; i <5; i ++ {fmt.Println (s)}} func main () {go say ("Καλωσορίσατε πιο εύκολο!") fmt.Println ("Sleep a bit ...") time.Sleep (100 * 

Η λειτουργία say() απλά εκτελεί έναν απλό βρόχο για να εκτυπώσει το string (παράμετρος s ) πέντε φορές. Το ενδιαφέρον είναι πώς καλείται αυτή η λειτουργία. Αντί να say("Hello Make Tech Easier!") απλά ότι say("Hello Make Tech Easier!") Η λέξη go είναι τοποθετημένη μπροστά από την κλήση λειτουργίας. Αυτό σημαίνει ότι η λειτουργία θα εκτελείται ως ξεχωριστή εργασία. Το υπόλοιπο της main() συνάρτησης τότε απλά κοιμάται λίγο για να δοθεί χρόνος για να ολοκληρωθεί η goroutine .

Η έξοδος μπορεί να σας εκπλήξει:

Όπως βλέπετε, η λειτουργία say() εκτελείται ως goroutine και ενώ βρίσκεται σε λειτουργία, η υπόλοιπη λειτουργία main() συνεχίζει, εκτυπώνοντας το Sleep a little... και ύστερα να κοιμηθεί. Μέχρι τότε η goroutine είναι ενεργή και αρχίζει να εκτυπώνει το σπάγκο πέντε φορές. Τέλος, το πρόγραμμα λήγει μόλις επιτευχθεί το όριο χρονικού ορίου.

Κανάλια

goroutines μπορούν να επικοινωνούν χρησιμοποιώντας κανάλια. Ένα κανάλι ανοίγει μια γραμμή επικοινωνίας μεταξύ δύο διαφορετικών τμημάτων ενός προγράμματος Go. Συνήθως μια λειτουργία θα καλείται ως goroutine και αν χρειάζεται να στείλει πίσω δεδομένα (π.χ. από μια λειτουργία δικτύου) μπορεί να χρησιμοποιήσει ένα κανάλι για να περάσει μαζί εκείνα τα δεδομένα. Εάν κάποιο άλλο μέρος του προγράμματος Go περιμένει αυτά τα δεδομένα, θα κοιμηθεί μέχρι να είναι έτοιμα τα δεδομένα. Τα κανάλια δημιουργούνται χρησιμοποιώντας τη λειτουργία make() και μπορούν να περάσουν ως παράμετροι στα goroutines .

Εξετάστε αυτόν τον κώδικα:

 Εισαγωγή κύριας συσκευασίας ("fmt") func say (s string, c chan int) {var i int για i = 0; i <5; i ++ {fmt.Println (s)} c <- i} func main () {c: = make (chan int) go say (" sts)} 

Η λειτουργία say() είναι πολύ παρόμοια με το πρώτο παράδειγμα με την εξαίρεση ότι η δεύτερη παράμετρος είναι ένα κανάλι και ότι μετά την εκτύπωση της συμβολοσειράς, ο αριθμός των επαναλήψεων θα αποσταλεί κάτω από το κανάλι μέσω της γραμμής c <- i του κώδικα.

Η κύρια λειτουργία δημιουργεί ένα κανάλι, ξεκινά τη λειτουργία say() ως goroutine και μετά περιμένει τα δεδομένα να πέφτουν κάτω από το κανάλι, sts := <- c πριν από την εκτύπωση του αποτελέσματος.

συμπέρασμα

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