Verschachtelte Schleifen
Teil des Abschnitts Grundlagen der GO-Journey von Coddy. Lektion 49 von 109.
Verschachtelte Schleifen sind Schleifen, die innerhalb einer anderen Schleife platziert werden. Die innere Schleife wird für jede Iteration der äußeren Schleife vollständig ausgeführt.
Erstellen wir mithilfe verschachtelter Schleifen eine Multiplikationstabelle für die Zahlen 1–3:
for i := 1; i <= 3; i++ {
for j := 1; j <= 3; j++ {
fmt.Printf("%d×%d=%d\t", i, j, i*j)
}
fmt.Println()
}Nach der Ausführung dieses Codes erhalten wir eine Multiplikationstabelle, in der jede Zeile einen Wert der Variablen der äußeren Schleife (i) multipliziert mit allen Werten der Variablen der inneren Schleife (j) darstellt. Die Ausgabe wird auf dem Bildschirm angezeigt:
1×1=1 1×2=2 1×3=3
2×1=2 2×2=4 2×3=6
3×1=3 3×2=6 3×3=9 Verstehen wir Schritt für Schritt, wie das funktioniert:
Zuerst setzt die äußere Schleife i=1, und die innere Schleife läuft vollständig durch:
i=1, j=1: prints "1×1=1"
i=1, j=2: prints "1×2=2"
i=1, j=3: prints "1×3=3"Nachdem die innere Schleife beendet ist, geben wir mit fmt.Println() eine neue Zeile aus.
Dann setzt die äußere Schleife i=2, und die innere Schleife läuft erneut:
i=2, j=1: prints "2×1=2"
i=2, j=2: prints "2×2=4"
i=2, j=3: prints "2×3=6"Schließlich setzt die äußere Schleife i=3, und die innere Schleife wird ein letztes Mal ausgeführt:
i=3, j=1: prints "3×1=3"
i=3, j=2: prints "3×2=6"
i=3, j=3: prints "3×3=9"Dieses Muster aus Schleifen innerhalb von Schleifen ist sehr nützlich für die Arbeit mit Datentabellen oder zum Erstellen gitterähnlicher Strukturen.
Aufgabe
AnfängerIn dieser Herausforderung übst du die Verwendung verschachtelter Schleifen, um ein einfaches Muster auszugeben. Die äußere Schleife durchläuft die Zeilen, und die innere Schleife durchläuft die Spalten, um ein kleines Raster aus Zeichen zu erstellen.
Vervollständige die verschachtelten Schleifen, um ein 3x3-Raster aus Sternchen (*) auszugeben. Auf jedes Sternchen muss ein Leerzeichen folgen, daher sollte jede Zeile wie * * * aussehen (mit einem abschließenden Leerzeichen). Die erwartete Ausgabe lautet:
* * * * * * * * *
Probier es selbst
package main
import "fmt"
func main() {
// Anzahl der Zeilen und Spalten in unserem Gitter
rows := 3
columns := 3
// TODO: Erstelle eine verschachtelte Schleife, um ein Gitter aus Sternchen (*) zu drucken
// Die äußere Schleife sollte durch die Zeilen iterieren
// Die innere Schleife sollte durch die Spalten iterieren
for i := 0; i < rows; i++ {
// Füge hier deine innere Schleife hinzu, um Sternchen in jeder Spalte zu drucken
// Dies druckt nach jeder Zeile eine neue Zeile
fmt.Println()
}
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
4Vergleichs- und logische Operatoren
Vergleichsoperatoren – Teil 1Vergleichsoperatoren – Teil 2Logischer UND-OperatorLogischer ODER-OperatorLogischer NICHT-OperatorGrundlagen der OperatorrangfolgeZusammenfassung – Vergleiche durchführen7Kontrollfluss: Schleifen
Die `for`-Schleife erklärt`for`-Schleife – Grundlagen`for`-Schleife – nur BedingungDas Schlüsselwort `break`Das Schlüsselwort `continue`Verschachtelte SchleifenWiederholung – Aktionen wiederholen2Variablen und grundlegende Datentypen
Was ist eine VariableTypinferenz mit `:=`Ganzzahlen (int)GleitkommazahlenBoolesche WerteZeichenkettenNullwerteKonstantenNamenskonventionenRückblick – Variablen und Typen5Grundlegende Ein- und Ausgabe
Formatierte AusgabeFormatierungsverbenDatentypen ausgebenGrundlegende Benutzereingaben erhaltenRückblick – Ein- und Ausgabe8Funktionen
Funktionen verstehenEine Funktion deklarierenFunktionen aufrufenFunktionsparameterEinen einzelnen Wert zurückgebenMehrere Werte zurückgebenBenannte RückgabewerteGrundlagen des FunktionsumfangsRückblick – Wiederverwendbaren Code erstellen3Grundlegende Operatoren
Arithmetische OperatorenDivisionsoperatorDer Modulo-OperatorZuweisungsoperatorErweiterte ZuweisungsoperatorenInkrement und DekrementRückblick – Berechnungen6Kontrollfluss: Bedingungen
Die `if`-AnweisungDas `else`-SchlüsselwortDas `else if`-SchlüsselwortVariablen-Shadowing in `if`Variablen initialisierenDie `switch`-AnweisungSwitch mit AusdrückenSwitch ohne AusdruckDas `fallthrough`-SchlüsselwortZusammenfassung – Entscheidungen treffen9Zeiger
Was ist ein Zeiger?Zeigervariablen deklarierenDer AdressoperatorZeiger dereferenzierenZeiger in Funktionen verwendenNil-ZeigerRückblick – Zeiger verstehen12Zusammengesetzte Datentypen: Maps
Einführung in MapsMap-Literale deklarierenMaps mit `make` erstellenSchlüssel-Wert-Paare hinzufügen und aktualisierenAuf Map-Werte zugreifenDas Vorhandensein eines Schlüssels prüfenMap-Einträge löschenLänge von MapsMaps durchlaufenZusammenfassung – Schlüssel-Wert-SpeicherungÜbe selbstständig: Online-Go-Compiler