Go Academy · Lektion

Eingaben scannen

Formatierte Eingaben lesen

Lektion 4 von 413 Schritte

Eingaben scannen ist eine kostenlose Go Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Go Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.

Eingaben mit fmt lesen

Das Paket fmt kann Werte nicht nur ausgeben, sondern auch einlesen. Die Scan-Funktionen parsen Text in typisierte Variablen.

Sie sind das Gegenstück zu den Ausgabefunktionen.

package main

import "fmt"

func main() {
    var n int
    fmt.Sscan("42", &n)
    fmt.Println(n + 1)
}

Pointer sind erforderlich

Scan-Funktionen müssen ein Ergebnis speichern. Deshalb übergeben Sie mit & die Adresse jeder Variablen.

Das & zu vergessen, ist der häufigste Fehler beim Scannen.

package main

import "fmt"

func main() {
    var a, b int
    fmt.Sscan("3 4", &a, &b)
    fmt.Println(a + b)
}

Sscan trennt an Leerzeichen

fmt.Sscan liest durch Leerzeichen getrennte Werte aus einer Zeichenkette in mehrere Variablen ein und ermittelt den Typ anhand jedes Pointers.

package main

import "fmt"

func main() {
    var name string
    var age int
    fmt.Sscan("Ada 36", &name, &age)
    fmt.Println(name, age)
}

Sscanf verwendet ein Format

fmt.Sscanf parst gemäß einer Formatzeichenkette – ähnlich wie Printf, nur umgekehrt. Wörtliche Zeichen im Format müssen mit der Eingabe übereinstimmen.

package main

import "fmt"

func main() {
    var h, m int
    fmt.Sscanf("09:05", "%d:%d", &h, &m)
    fmt.Println(h, m)
}

Prüfen, wie viele Werte gelesen wurden

Scan-Funktionen geben die Anzahl erfolgreich geparster Elemente und einen Fehler zurück. Prüfen Sie die Anzahl, um festzustellen, ob das Parsen vollständig erfolgreich war.

package main

import "fmt"

func main() {
    var a, b int
    count, _ := fmt.Sscan("7", &a, &b)
    fmt.Println("parsed:", count)
}

Parse-Fehler behandeln

Wenn die Eingabe nicht dem erwarteten Typ entspricht, wird ein Fehler zurückgegeben. Prüfen Sie ihn bei echten Eingaben immer.

package main

import "fmt"

func main() {
    var n int
    _, err := fmt.Sscan("notanumber", &n)
    if err != nil {
        fmt.Println("error:", err)
    }
}

Gemischte Typen parsen

Sie können mehrere verschiedene Typen in einem Aufruf einlesen. Der Typ jedes Pointers bestimmt, wie sein Token geparst wird.

package main

import "fmt"

func main() {
    var word string
    var price float64
    var ok bool
    fmt.Sscan("apple 1.50 true", &word, &price, &ok)
    fmt.Println(word, price, ok)
}

Sscanf mit Literaltext

Sscanf eignet sich hervorragend für feste Strukturen wie Koordinaten oder Schlüssel-Wert-Paare, bei denen Satzzeichen die Zahlen voneinander trennen.

package main

import "fmt"

func main() {
    var x, y int
    fmt.Sscanf("(3,8)", "(%d,%d)", &x, &y)
    fmt.Println(x, y)
}

Gleitkommazahlen einlesen

Verwenden Sie %f in Sscanf oder einen *float64 in Sscan, um Dezimalzahlen einzulesen.

package main

import "fmt"

func main() {
    var temp float64
    fmt.Sscanf("21.5C", "%fC", &temp)
    fmt.Println(temp)
}

Scan vs. Stdin

fmt.Scan und fmt.Scanf lesen genauso aus der Standardeingabe, wie Sscan aus einer Zeichenkette liest. Die Parsing-Regeln sind identisch; nur die Quelle ist eine andere.

package main

import "fmt"

func main() {
    line := "100 200"
    var a, b int
    fmt.Sscan(line, &a, &b)
    fmt.Println(a * b)
}

Ein kleiner Parser

Kombinieren Sie das Scannen mit einer Berechnung, um einen Datensatz zu parsen und ein Ergebnis zu erzeugen.

package main

import "fmt"

func main() {
    var name string
    var qty int
    var unit float64
    fmt.Sscanf("pen 3 1.25", "%s %d %f", &name, &qty, &unit)
    fmt.Printf("%s total: $%.2f\n", name, float64(qty)*unit)
}

Schnelltest

Was müssen Sie an eine Scan-Funktion übergeben, damit sie das Ergebnis speichern kann?

Rückblick: Eingaben scannen

Sie haben gelernt, formatierte Eingaben zu lesen:

  • Sscan trennt an Leerraum; Sscanf folgt einer Formatzeichenkette.
  • Übergeben Sie mit & für jedes Ziel einen Pointer.
  • Prüfen Sie die zurückgegebene Anzahl und den Fehler, um fehlerhafte Eingaben zu erkennen.
package main

import "fmt"

func main() {
    var d, mo, y int
    fmt.Sscanf("30/05/2026", "%d/%d/%d", &d, &mo, &y)
    fmt.Println(y, mo, d)
}
Kostenlos starten

Lerne Go mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
51
Lektionen
203

Häufig gestellte Fragen

Ist die Lektion „Eingaben scannen“ kostenlos?

Ja — der vollständige Text von „Eingaben scannen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Go Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Eingaben scannen“?

Formatierte Eingaben lesen Du übst Go Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Go Academy zu starten?

Keine Vorkenntnisse erforderlich. Go Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Eingaben scannen“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Go Academy-Lektion Code schreiben und ausführen?

Ja. Jede Go Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Printf-Formatverben
  2. Sprintf und Fprintf
  3. Das Stringer-Interface
  4. Eingaben scannen
← Zurück zu Go Academy