In Go ist die Interaktion mit der Standardeingabe (stdin) oft eine entscheidende Aufgabe bei der Arbeit mit Befehlen und Pipelines. Allerdings kann es eine Herausforderung sein, festzustellen, ob stdin über Daten verfügt, ohne die Ausführung des Programms zu blockieren.
Das Dateiobjekt os.Stdin stellt stdin dar und verfügt über ähnliche Funktionen wie andere Dateiobjekte in Go. Dadurch können wir die Stat-Funktion nutzen, um Informationen über stdin, einschließlich seiner Größe, zu sammeln.
Um festzustellen, ob stdin Daten enthält, können wir seine Größe mit dem folgenden Code überprüfen:
func main() {
file := os.Stdin
fi, err := file.Stat()
if err != nil {
fmt.Println("file.Stat()", err)
}
size := fi.Size()
if size > 0 {
fmt.Printf("%v bytes available in Stdin\n", size)
} else {
fmt.Println("Stdin is empty")
}
}
Wenn dieser Code in eine ausführbare Datei kompiliert wird, kann er als Filter zum Verarbeiten von Eingaben verwendet werden, die an stdin weitergeleitet werden. Führen Sie beispielsweise den Befehl echo test | aus ./executable würde „5 Bytes verfügbar in Stdin“ auf der Konsole ausgeben, was darauf hinweist, dass Stdin Daten enthält. Umgekehrt würde beim Ausführen von ./executable ohne Eingabe „Stdin ist leer“ angezeigt.
Dieser Ansatz ermöglicht es Entwicklern, ohne Blockierung nach Daten in stdin zu suchen und mit der Logik ihres Programms entsprechend fortzufahren. Dies ist besonders nützlich, wenn Sie mit Pipelines arbeiten oder Benutzereingaben von stdin verarbeiten.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3