Ο for βρόχος είναι μία από τις πιο συχνά χρησιμοποιούμενες εντολές για την επαναλαμβανόμενη εκτέλεση κάποιας λογικής.
Στη Go αποτελείται από τη λέξη-κλειδί for, μια κεφαλίδα και ένα μπλοκ κώδικα που περιέχει το σώμα του βρόχου μέσα σε άγκιστρα.
Η κεφαλίδα αποτελείται από 3 στοιχεία που χωρίζονται με το σύμβολο ;: init, condition και post.
for init; condition; post {
// loop body - code that is executed repeatedly as long as the condition is true
}
Σημείωση: Σε αντίθεση με άλλες γλώσσες, δεν υπάρχουν παρενθέσεις () γύρω από τα τρία στοιχεία της κεφαλίδας.
Στην πραγματικότητα, η εισαγωγή τέτοιων παρενθέσεων είναι σφάλμα μεταγλώττισης.
Ωστόσο, τα άγκιστρα { } γύρω από το σώμα του βρόχου είναι πάντα απαραίτητα.
for βρόχοι - Ένα παράδειγμαΤο στοιχείο init συνήθως αρχικοποιεί μια μεταβλητή μετρητή, το στοιχείο condition ελέγχει αν ο βρόχος πρέπει να συνεχιστεί ή να σταματήσει και το στοιχείο post συνήθως αυξάνει τον μετρητή στο τέλος κάθε επανάληψης.
for i := 1; i < 10; i++ {
fmt.Println(i)
}
Αυτός ο βρόχος θα εκτυπώσει τους αριθμούς από το 1 έως το 9 (συμπεριλαμβανομένου του 9).
Ο ορισμός του βήματος γίνεται συχνά με μια εντολή αύξησης ή μείωσης, όπως φαίνεται στο παραπάνω παράδειγμα.
Είσαι ένας φανατικός παρατηρητής πουλιών που καταγράφει πόσα πουλιά έχουν επισκεφτεί τον κήπο σου. Συνήθως χρησιμοποιείς ένα σημειωματάριο για να μετράς τα πουλιά, αλλά για να δουλέψεις καλύτερα με τα δεδομένα σου, ψηφιοποίησες τις μετρήσεις πουλιών των τελευταίων εβδομάδων.
Ας ξεκινήσουμε την ανάλυση των δεδομένων παίρνοντας μια εικόνα από ψηλά. Βρες πόσα πουλιά μέτρησες συνολικά από τότε που ξεκίνησες τις καταγραφές σου.
Υλοποίησε μια συνάρτηση TotalBirdCount που δέχεται ένα slice από int που περιέχει τον αριθμό πουλιών ανά ημέρα.
Θα πρέπει να επιστρέφει τον συνολικό αριθμό πουλιών που μέτρησες.
birdsPerDay := []int{2, 5, 0, 7, 4, 1, 3, 0, 2, 5, 0, 1, 3, 1}
TotalBirdCount(birdsPerDay)
// => 34
Τώρα που απέκτησες μια γενική αίσθηση των αριθμών των πουλιών σου, θέλεις να κάνεις μια πιο λεπτομερή ανάλυση.
Υλοποίησε μια συνάρτηση BirdsInWeek που δέχεται ένα slice με τον αριθμό πουλιών ανά ημέρα και έναν αριθμό εβδομάδας.
Επιστρέφει τον συνολικό αριθμό πουλιών που μέτρησες σε αυτή τη συγκεκριμένη εβδομάδα. Μπορείς να υποθέσεις ότι οι εβδομάδες καταγράφονται πάντα ολόκληρες.
birdsPerDay := []int{2, 5, 0, 7, 4, 1, 3, 0, 2, 5, 0, 1, 3, 1}
BirdsInWeek(birdsPerDay, 2)
// => 12
Συνειδητοποίησες ότι όλο τον καιρό που προσπαθούσες να καταγράψεις τα πουλιά, υπήρχε ένα πουλί που κρυβόταν σε μια μακρινή γωνιά του κήπου.
Κατάλαβες ότι αυτό το πουλί περνούσε πάντα μέρα παρά μέρα στον κήπο σου.
Δεν ξέρεις ακριβώς πού βρισκόταν τις ενδιάμεσες μέρες, σίγουρα όμως όχι στον κήπο σου.
Το ένστικτό σου ως παρατηρητή πουλιών σου λέει επίσης ότι το πουλί ήταν στον κήπο σου την πρώτη μέρα που κατέγραψες στη λίστα σου.
Με αυτές τις νέες πληροφορίες, γράψε μια συνάρτηση FixBirdCountLog που παίρνει ως όρισμα ένα slice με τα πουλιά που μετρήθηκαν ανά ημέρα και επιστρέφει το slice αφού διορθώσει το λάθος στη μέτρηση.
birdsPerDay := []int{2, 5, 0, 7, 4, 1}
FixBirdCountLog(birdsPerDay)
// => [3 5 1 7 5 1]
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Go με 34 έννοιες165 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.