Inhaltsverzeichnis
Frageninhalt
Problemumgehung
Heim Backend-Entwicklung Golang Wie erhalte ich Eingaben während der Ausgabe?

Wie erhalte ich Eingaben während der Ausgabe?

Feb 09, 2024 pm 12:30 PM
表单提交

Wie erhalte ich Eingaben während der Ausgabe?

PHP-Editor Apple stellt Ihnen heute eine häufig gestellte Frage: Wenn wir in PHP Benutzereingaben erhalten müssen, wie sollen wir diese ausgeben? Das Einholen von Benutzereingaben ist ein wichtiger Teil beim Schreiben interaktiver Programme. Daher ist es wichtig, die richtige Methode zu beherrschen. In PHP können wir einige integrierte Funktionen verwenden, um Benutzereingaben zu erhalten, z. B. die Funktion „fgets()“, um eine Zeile mit Benutzereingaben aus der Standardeingabe zu lesen, oder die Funktion „fgetc()“, um daraus zu lesen die Standardeingabe Nimm ein Zeichen. Natürlich können wir auch die superglobalen Variablen „$_GET“ oder „$_POST“ verwenden, um die vom Benutzer über das Formular übermittelten Daten zu erhalten. Unabhängig davon, welche Methode verwendet wird, müssen Sie auf die erforderliche Validierung und Filterung der Benutzereingaben achten, um die Sicherheit und Stabilität des Programms zu gewährleisten. Ich hoffe, dass die obige Einführung allen helfen kann!

Frageninhalt

Was ich implementieren möchte, ist eine Art Anwendung, die viele Informationen in der Konsole protokolliert (z. B. eine Zahl von 0 bis 1000000000000) und in der Lage ist, die Ausführung durch Eingabe eines Befehls in die Konsole zu stoppen (zum Beispiel „Stopp“).

Ich kam auf die Idee, Goroutine zu verwenden, kann den Befehl jedoch nicht eingeben, da sich das Eingabefeld in eine Ausgabe ändert.

Das ist mein Code:

package main

import (
    "bufio"
    "os"
)

var process bool = true

func commandHandler() {
    reader := bufio.NewReader(os.Stdin)
    for process {
        text, _ := reader.ReadString('\n')
        if text == "stop\r\n" {
            process = false
        }
    }
}

func task() {
    var i int64 = 0
    for ; i < 10000000000 || process; i++ {
        if i%30000000 == 0 { // Just to slow down an output for a while
            println(i)
        }
    }
}

func main() {
    go task()
    commandHandler()
}
Nach dem Login kopieren

Und die Ergebnisse, die ich erzielt habe. Die Buchstaben sind die Eingabe, die ich eingeben möchte, und die Zahlen sind die Ausgabe der App

Irgendwelche Vorschläge, wie ich in meiner Go-Anwendung die richtige Ein-/Ausgabe durchführen kann?

Problemumgehung

Ich kann den Befehl nicht eingeben, da sich das Eingabefeld in „Ausgabe“ ändert

Sie können Befehle wie gewohnt eingeben. Während Sie sie eingeben, werden sie auf Ihrer Konsole wiedergegeben. Dies wird mit allen anderen Ausgaben an der Konsole kombiniert, was den Benutzer verwirren kann – nicht jedoch den Computer.

Vorausgesetzt, dass dies tatsächlich zu Ihrem Betriebssystem passt, läuft Ihr Programm einwandfrei:

if text == "stop\r\n" {
Nach dem Login kopieren

Nicht auf meinem Betriebssystem r。更便携的方法是使用 strings.trimspace Alle Leerzeichen entfernen.

import (
  ...
  "strings"
) 
... 
...
        if strings.TrimSpace(text) == "stop" {
Nach dem Login kopieren

Mit dieser Änderung funktioniert der Code bei mir. Wie Sie sagten, werden die Ausgabe und die Eingabe in den Bildschirm eingefügt, Sie können jedoch weiterhin stop eingeben und das Programm beenden.

Irgendwelche Vorschläge, wie ich in meiner Go-Anwendung die richtige Ein-/Ausgabe durchführen kann?

Fast keine Terminalprogramme in der realen Welt sind interaktiv. Stattdessen stellen Befehlszeilenargumente und Umgebungsvariablen beim Aufruf die Konfiguration bereit. Die Shell-Umleitung wird normalerweise verwendet, um lange Ausgaben eines Programms (in einer Datei) oder auf einer Seite (z. B. |less) beizubehalten.

Man sieht viele akademische Programme, die das interaktive Terminalmodell verwenden, bei dem das Programm den Benutzer auffordert und Daten sammelt, aber in der realen Welt ist dies sehr selten und oft eine unkluge Komplikation. Standardeingaben werden in der Regel verwendet, um Dateneingaben bereitzustellen, die für Berechnungen erforderlich sind, und nicht durch Benutzerbefehle (z. B. Daten, die manipuliert oder gefiltert werden soll).

Wie @tinkerer vorgeschlagen hat, können Signale bereits zum Beenden Ihres Programms verwendet werden (Details sind betriebssystemspezifisch). Sie müssen sich also wirklich keine Gedanken darüber machen, wie die Terminalanwendung mit der visuellen Darstellung der Standardeingabe und -ausgabe umgeht, die nur zum Beenden des Programms interpoliert werden. Es gibt viele andere Signale in der Posix-Umgebung, von denen einige vollständig benutzerorientiert sind und für jeden Zweck verwendet werden können.

Sobald die Laufzeit komplexere Benutzereingaben erfordert, warten Programme normalerweise auf Befehle an einem Socket. Für solche Programme werden Webschnittstellen, die HTTP-Dienste bereitstellen, aufgrund ihrer Einfachheit und Zugänglichkeit immer häufiger verwendet.

Das obige ist der detaillierte Inhalt vonWie erhalte ich Eingaben während der Ausgabe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So richten Sie Jump on Laui-Anmeldeseite ein So richten Sie Jump on Laui-Anmeldeseite ein Apr 04, 2024 am 03:12 AM

Schritte zur Sprungeinstellung der Layui-Anmeldeseite: Sprungcode hinzufügen: Fügen Sie im Anmeldeformular ein Beurteilungsereignis hinzu, klicken Sie auf die Schaltfläche „Senden“ und springen Sie nach erfolgreicher Anmeldung über window.location.href zur angegebenen Seite. Ändern Sie die Formularkonfiguration: Fügen Sie dem Formularelement von „lay-filter="login" ein verstecktes Eingabefeld mit dem Namen „redirect“ und dem Wert der Zielseitenadresse hinzu.

So erhalten Sie Formulardaten in Laui So erhalten Sie Formulardaten in Laui Apr 04, 2024 am 03:39 AM

Layui bietet eine Vielzahl von Methoden zum Abrufen von Formulardaten, einschließlich des direkten Abrufens aller Felddaten des Formulars, des Abrufens des Werts eines einzelnen Formularelements, der Verwendung der formAPI.getVal()-Methode zum Abrufen des angegebenen Feldwerts, der Serialisierung der Formulardaten usw Wenn Sie es als AJAX-Anforderungsparameter verwenden und das Formularübermittlungsereignis abhören, werden Daten abgerufen.

So implementieren Sie die Front-End- und Back-End-Interaktion in Laui So implementieren Sie die Front-End- und Back-End-Interaktion in Laui Apr 01, 2024 pm 11:33 PM

Es gibt die folgenden Methoden für die Front-End- und Back-End-Interaktion mit Laui: $.ajax-Methode: Vereinfachen Sie asynchrone HTTP-Anfragen. Benutzerdefiniertes Anforderungsobjekt: Ermöglicht das Senden benutzerdefinierter Anforderungen. Formularsteuerung: Verwaltet die Formularübermittlung und Datenvalidierung. Upload-Kontrolle: Einfaches Implementieren des Datei-Uploads.

Welche Rolle spielt Serverlet in Java? Welche Rolle spielt Serverlet in Java? Apr 12, 2024 pm 02:39 PM

Servlet dient als Brücke für die Client-Server-Kommunikation und ist verantwortlich für: die Verarbeitung von HTTP-Antworten, die dynamische Verwaltung des HTTP-Sitzungsstatus und die Bereitstellung von Sicherheitsfunktionen.

Der Unterschied zwischen Event und $event in Vue Der Unterschied zwischen Event und $event in Vue May 08, 2024 pm 04:42 PM

In Vue.js ist event ein natives JavaScript-Ereignis, das vom Browser ausgelöst wird, während $event ein Vue-spezifisches abstraktes Ereignisobjekt ist, das in Vue-Komponenten verwendet wird. Im Allgemeinen ist die Verwendung von $event bequemer, da es so formatiert und erweitert ist, dass es die Datenbindung unterstützt. Verwenden Sie „event“, wenn Sie auf bestimmte Funktionen des nativen Ereignisobjekts zugreifen müssen.

So erstellen Sie eine Single-Page-Anwendung mit PHP So erstellen Sie eine Single-Page-Anwendung mit PHP May 04, 2024 pm 06:21 PM

Schritte zum Erstellen einer Single-Page-Anwendung (SPA) mit PHP: Erstellen Sie eine PHP-Datei und laden Sie Vue.js. Definieren Sie eine Vue-Instanz und erstellen Sie eine HTML-Schnittstelle mit Texteingabe- und -ausgabetext. Erstellen Sie eine JavaScript-Framework-Datei mit Vue-Komponenten. Binden Sie JavaScript-Framework-Dateien in PHP-Dateien ein.

Was sind die Anwendungsszenarien von Java Servlet? Was sind die Anwendungsszenarien von Java Servlet? Apr 17, 2024 am 08:21 AM

JavaServlet kann verwendet werden für: 1. Dynamische Inhaltsgenerierung; 3. Formularverarbeitung; 6. Sitzungsverwaltung; Beispiel: Erstellen Sie ein FormSubmitServlet, um die Formularübermittlung zu verarbeiten, indem Sie Name und E-Mail als Parameter übernehmen und an success.jsp umleiten.

Für welche Szenarien können Ereignismodifikatoren in Vue verwendet werden? Für welche Szenarien können Ereignismodifikatoren in Vue verwendet werden? May 09, 2024 pm 02:33 PM

Vue.js-Ereignismodifikatoren werden verwendet, um bestimmte Verhaltensweisen hinzuzufügen, darunter: Verhindern von Standardverhalten (.prevent), Stoppen von Ereignisblasen (.stop), Einmaliges Ereignis (.once), Erfassen von Ereignissen (.capture), Passives Abhören von Ereignissen (.passive), Adaptiv Modifikator (.self)Schlüsselmodifikator (.key)

See all articles