Go είναι μια στατικά τυποποιημένη, μεταγλωττιζόμενη γλώσσα προγραμματισμού. Αυτή η άσκηση εισάγει τρία σημαντικά χαρακτηριστικά της γλώσσας: Πακέτα, Συναρτήσεις και Μεταβλητές.
Οι εφαρμογές Go οργανώνονται σε πακέτα.
Ένα πακέτο είναι μια συλλογή αρχείων πηγαίου κώδικα που βρίσκονται στον ίδιο κατάλογο.
Όλα τα αρχεία πηγαίου κώδικα σε έναν κατάλογο πρέπει να μοιράζονται το ίδιο όνομα πακέτου.
Όταν ένα πακέτο εισάγεται, μόνο οντότητες (συναρτήσεις, τύποι, μεταβλητές, σταθερές) των οποίων τα ονόματα αρχίζουν με κεφαλαίο γράμμα μπορούν να χρησιμοποιηθούν / να είναι προσβάσιμες.
Ο προτεινόμενος τρόπος ονοματοδοσίας στη Go είναι τα αναγνωριστικά να ονομάζονται με camelCase, εκτός από εκείνα που προορίζονται να είναι προσβάσιμα από άλλα πακέτα, τα οποία θα πρέπει να είναι PascalCase.
package lasagna
Η Go είναι στατικά τυποποιημένη, που σημαίνει ότι όλες οι μεταβλητές πρέπει να έχουν καθορισμένο τύπο κατά τη μεταγλώττιση.
Οι μεταβλητές μπορούν να οριστούν δηλώνοντας ρητά έναν τύπο:
var explicit int // Explicitly typed
Μπορείς επίσης να χρησιμοποιήσεις έναν αρχικοποιητή, και ο μεταγλωττιστής θα εκχωρήσει τον τύπο της μεταβλητής ώστε να ταιριάζει με τον τύπο του αρχικοποιητή.
implicit := 10 // Implicitly typed as an int
Μόλις δηλωθούν, οι μεταβλητές μπορούν να λάβουν τιμές χρησιμοποιώντας τον τελεστή =.
Μόλις δηλωθεί, ο τύπος μιας μεταβλητής δε μπορεί ποτέ να αλλάξει.
count := 1 // Assign initial value
count = 2 // Update to new value
count = false // This throws a compiler error due to assigning a non `int` type
Οι σταθερές περιέχουν ένα κομμάτι δεδομένων όπως ακριβώς οι μεταβλητές, αλλά η τιμή τους δε μπορεί να αλλάξει κατά την εκτέλεση του προγράμματος.
Οι σταθερές ορίζονται χρησιμοποιώντας τη λέξη-κλειδί const και μπορούν να είναι αριθμοί, χαρακτήρες, συμβολοσειρές ή Boolean:
const Age = 21 // Defines a numeric constant 'Age' with the value of 21
Οι συναρτήσεις της Go δέχονται μηδέν ή περισσότερες παραμέτρους. Οι παράμετροι πρέπει να έχουν ρητά δηλωμένο τύπο, δεν υπάρχει εξαγωγή τύπου.
Οι συναρτήσεις επιστρέφουν τιμές χρησιμοποιώντας τη λέξη-κλειδί return.
Καλείς μια συνάρτηση καθορίζοντας το όνομα της συνάρτησης και περνώντας ορίσματα για κάθε μία από τις παραμέτρους της.
Σημείωσε ότι η Go υποστηρίζει δύο τύπους σχολίων.
Τα σχόλια μίας γραμμής προηγούνται από // και τα σχόλια πολλών γραμμών εισάγονται μεταξύ /* και */.
package greeting
// Hello is a public function.
func Hello (name string) string {
return hi(name)
}
// hi is a private function.
func hi (name string) string {
return "hi " + name
}
Σε αυτή την άσκηση θα γράψεις λίγο κώδικα για να σε βοηθήσει να μαγειρέψεις υπέροχα λαζάνια από το αγαπημένο σου βιβλίο μαγειρικής.
Έχεις τέσσερις εργασίες, όλες σχετικές με τον χρόνο που περνάς μαγειρεύοντας τα λαζάνια.
Όρισε τη σταθερά OvenTime με τον αριθμό λεπτών που πρέπει να μείνουν τα λαζάνια στον φούρνο.
Σύμφωνα με το βιβλίο μαγειρικής, ο αναμενόμενος χρόνος ψησίματος σε λεπτά είναι 40:
OvenTime
// => 40
Όρισε τη συνάρτηση RemainingOvenTime() που παίρνει ως παράμετρο τα πραγματικά λεπτά παραμονής των λαζανιών στον φούρνο και επιστρέφει πόσα λεπτά πρέπει ακόμα να παραμείνουν τα λαζάνια στον φούρνο, με βάση τον αναμενόμενο χρόνο ψησίματος σε λεπτά από την προηγούμενη εργασία.
func RemainingOvenTime(actual int) int {
// TODO
}
RemainingOvenTime(30)
// => 10
Όρισε τη συνάρτηση PreparationTime που παίρνει ως παράμετρο τον αριθμό των στρώσεων που πρόσθεσες στα λαζάνια και επιστρέφει πόσα λεπτά αφιέρωσες για την προετοιμασία των λαζανιών, υποθέτοντας ότι κάθε στρώση σου παίρνει 2 λεπτά για να την ετοιμάσεις.
func PreparationTime(numberOfLayers int) int {
// TODO
}
PreparationTime(2)
// => 4
Όρισε τη συνάρτηση ElapsedTime που παίρνει δύο παραμέτρους: η πρώτη παράμετρος είναι ο αριθμός των στρώσεων που πρόσθεσες στα λαζάνια και η δεύτερη παράμετρος είναι ο αριθμός των λεπτών που τα λαζάνια βρίσκονται στον φούρνο.
Η συνάρτηση πρέπει να επιστρέφει πόσα λεπτά συνολικά έχεις εργαστεί για το μαγείρεμα των λαζανιών, που είναι το άθροισμα του χρόνου προετοιμασίας σε λεπτά και του χρόνου σε λεπτά που τα λαζάνια έχουν περάσει μέχρι στιγμής στον φούρνο.
func ElapsedTime(numberOfLayers, actualMinutesInOven int) int {
// TODO
}
ElapsedTime(3, 20)
// => 26
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Go με 34 έννοιες166 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.