Heim >Backend-Entwicklung >Golang >So scannen Sie in GoLang

So scannen Sie in GoLang

Susan Sarandon
Susan SarandonOriginal
2025-01-05 14:51:44492Durchsuche

How to Scan in GoLang

In Go (golang) bietet das fmt-Paket mehrere Funktionen zum Scannen von Eingaben von der Konsole oder anderen Eingabequellen.

Für mich waren diese beim Test und in vielen anderen Bereichen immer nützlich. Und bisher arbeite ich beim Scannen meist mit 4 Funktionen.

Lassen Sie uns einige davon erkunden und sehen, wie, warum und wann man sie verwendet.


1. fmt.Scan

  • Zweck: Liest durch Leerzeichen getrennte Eingaben von der Standardeingabe (Konsole).
  • Hört auf zu lesen:Hört beim ersten Zeilenumbruch oder Leerzeichen an.
  • Mehrere Variablen:Kann mehrere Variablen in einem Aufruf lesen.
  • Rückgaben: Anzahl der erfolgreich gescannten Elemente und ggf. Fehler.

Beispiel:

package main

import (
    "fmt"
)

func main() {
    var name string
    var age int
    fmt.Print("Enter your name and age: ")
    fmt.Scan(&name, &age) // Reading input separated by space
    fmt.Printf("Hello %s, you are %d years old.\n", name, age)
}

Eingabebeispiel:

Alice 25

Ausgabe:

Hello Alice, you are 25 years old.

2. fmt.Scanln

  • Zweck: Liest die Eingabe, bis eine neue Zeile (n) gefunden wird.
  • Hört auf zu lesen:Hört bei einer neuen Zeile anstelle eines Leerzeichens an.
  • Mehrere Variablen: Kann mehrere Variablen lesen, stoppt jedoch, wenn zuerst die neue Zeile erreicht wird.
  • Rückgaben: Anzahl der erfolgreich gescannten Elemente und ggf. Fehler.

Beispiel:

package main

import (
    "fmt"
)

func main() {
    var name string
    var age int
    fmt.Print("Enter your name and age: ")
    fmt.Scanln(&name, &age) // Reads until newline is encountered
    fmt.Printf("Hello %s, you are %d years old.\n", name, age)
}

Eingabebeispiel:

Alice 25

Ausgabe:

Hello Alice, you are 25 years old.

3. fmt.Scanf

  • Zweck: Liest formatierte Eingaben unter Verwendung von Formatspezifizierern (wie %s, %d, %f).
  • Stoppt das Lesen: Stoppt basierend auf dem angegebenen Format.
  • Mehrere Variablen: Kann mehrere Variablen mit präziser Steuerung mithilfe von Formatspezifizierern lesen.
  • Rückgaben: Anzahl der erfolgreich gescannten Elemente und ggf. Fehler.

Beispiel:

package main

import (
    "fmt"
)

func main() {
    var name string
    var age int
    fmt.Print("Enter your name and age (formatted): ")
    fmt.Scanf("%s %d", &name, &age) // Reads formatted input
    fmt.Printf("Hello %s, you are %d years old.\n", name, age)
}

Eingabebeispiel:

Alice 25

Ausgabe:

Hello Alice, you are 25 years old.

4. bufio.NewReader (Für erweiterte Eingabeverarbeitung)

  • Zweck: Bietet erweiterte Eingabelesefunktionen im Vergleich zu fmt.
  • Stoppt das Lesen:Ermöglicht das Lesen einer ganzen Zeile einschließlich Leerzeichen.
  • Mehrere Variablen: Liest die Eingabe als einzelne Zeichenfolge und kann dann bei Bedarf weiter aufgeteilt werden.
  • Rückgabe: Die komplette Eingabezeile als String.

Beispiel:

package main

import (
    "bufio"
    "fmt"
    "os"
    "strings"
)

func main() {
    reader := bufio.NewReader(os.Stdin)
    fmt.Print("Enter your name and age: ")
    input, _ := reader.ReadString('\n') // Reads entire line including spaces
    input = strings.TrimSpace(input)    // Trim newline and spaces
    fmt.Printf("You entered: %s\n", input)
}

Eingabebeispiel:

Alice 25

Ausgabe:

package main

import (
    "fmt"
)

func main() {
    var name string
    var age int
    fmt.Print("Enter your name and age: ")
    fmt.Scan(&name, &age) // Reading input separated by space
    fmt.Printf("Hello %s, you are %d years old.\n", name, age)
}

? Übersichtstabelle:

Function Purpose Stops Reading At Supports Formatting? Multiple Variables? Use Case
fmt.Scan Basic scanning Whitespace Simple input without newline
fmt.Scanln Scans until newline Newline (n) Input until newline
fmt.Scanf Formatted input scanning Controlled by format Precise formatted input
bufio.NewReader Advanced input handling Customizable Large input with spaces
Funktion Zweck Hört auf zu lesen um Unterstützt Formatierung? Mehrere Variablen? Anwendungsfall fmt.Scan Grundlegendes Scannen Leerzeichen ❌ ✅ Einfache Eingabe ohne Zeilenumbruch fmt.Scanln Scannt bis zum Zeilenumbruch Neue Zeile (n) ❌ ✅ Eingabe bis zum Zeilenumbruch fmt.Scanf Scannen formatierter Eingaben Kontrolliert durch das Format ✅ ✅ Präzise formatierte Eingabe bufio.NewReader Erweiterte Eingabeverarbeitung Anpassbar ✅ ❌ Große Eingabe mit Leerzeichen

Das obige ist der detaillierte Inhalt vonSo scannen Sie in GoLang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn