Die for-Schleife ist eine der am häufigsten verwendeten Anweisungen, um Logik wiederholt auszuführen.
In Go besteht sie aus dem Schlüsselwort for, einem Header und einem Block in geschweiften Klammern, der den Schleifenblock enthält.
Der Header besteht aus drei Komponenten, die durch Semikolons ; getrennt sind: init, condition und post.
for init; condition; post {
// loop body - code that is executed repeatedly as long as the condition is true
}
Hinweis: Anders als in anderen Sprachen stehen um die drei Komponenten des Headers keine runden Klammern ().
Solche Klammern einzufügen führt sogar zu einem Compilerfehler.
Die geschweiften Klammern { } um den Schleifenblock sind jedoch immer erforderlich.
Die init-Komponente legt normalerweise eine Zählvariable an, die condition-Komponente prüft, ob die Schleife fortgesetzt oder beendet werden soll, und die post-Komponente erhöht normalerweise den Zähler am Ende jeder Wiederholung.
for i := 1; i < 10; i++ {
fmt.Println(i)
}
Diese Schleife gibt die Zahlen von 1 bis 9 aus (einschließlich 9).
Den Schritt legt man oft mit einer Anweisung fest, die den Zähler erhöht oder verringert, wie im Beispiel oben.
Du bist ein begeisterter Vogelbeobachter und hältst fest, wie viele Vögel deinen Garten besucht haben. Normalerweise zählst du die Vögel mit einer Strichliste in einem Notizbuch, aber um besser mit deinen Daten arbeiten zu können, hast du die Vogelzahlen der letzten Wochen digitalisiert.
Fangen wir an, die Daten zu analysieren und uns einen Überblick zu verschaffen. Finde heraus, wie viele Vögel du insgesamt gezählt hast, seit du mit deinen Aufzeichnungen begonnen hast.
Implementiere eine Funktion TotalBirdCount, die einen Slice von ints entgegennimmt, der die Vogelanzahl pro Tag enthält.
Sie soll die Gesamtzahl der Vögel zurückgeben, die du gezählt hast.
birdsPerDay := []int{2, 5, 0, 7, 4, 1, 3, 0, 2, 5, 0, 1, 3, 1}
TotalBirdCount(birdsPerDay)
// => 34
Jetzt, wo du ein allgemeines Gefühl für deine Vogelzahlen bekommen hast, möchtest du eine genauere Analyse machen.
Implementiere eine Funktion BirdsInWeek, die einen Slice mit der Vogelanzahl pro Tag und eine Wochennummer entgegennimmt.
Sie gibt die Gesamtzahl der Vögel zurück, die du in dieser bestimmten Woche gezählt hast. Du kannst davon ausgehen, dass Wochen immer vollständig erfasst sind.
birdsPerDay := []int{2, 5, 0, 7, 4, 1, 3, 0, 2, 5, 0, 1, 3, 1}
BirdsInWeek(birdsPerDay, 2)
// => 12
Du hast gemerkt, dass sich die ganze Zeit, in der du versucht hast, die Vögel zu erfassen, ein Vogel in einer entfernten Ecke des Gartens versteckt hat.
Du hast herausgefunden, dass dieser Vogel jeden zweiten Tag in deinem Garten war.
Du weißt nicht genau, wo er an den Tagen dazwischen war, aber sicher nicht in deinem Garten.
Deine Vogelbeobachter-Intuition sagt dir außerdem, dass der Vogel am ersten Tag, den du in deiner Liste erfasst hast, in deinem Garten war.
Schreibe mit diesen neuen Informationen eine Funktion FixBirdCountLog, die einen Slice mit der pro Tag gezählten Vogelanzahl als Argument entgegennimmt und den Slice zurückgibt, nachdem der Zählfehler korrigiert wurde.
birdsPerDay := []int{2, 5, 0, 7, 4, 1}
FixBirdCountLog(birdsPerDay)
// => [3 5 1 7 5 1]
Melde dich bei Exercism an, um Go mit 34 Konzepte166 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.