Table des matières
Contenu de la question
Solution
Maison développement back-end Golang Comment puis-je obtenir l'entrée lors de la sortie ?

Comment puis-je obtenir l'entrée lors de la sortie ?

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

Comment puis-je obtenir lentrée lors de la sortie ?

Éditeur PHP Apple vous présentera aujourd'hui une question courante : en PHP, lorsque nous avons besoin d'obtenir une entrée de l'utilisateur, comment devons-nous la générer ? L'obtention des commentaires de l'utilisateur est une partie importante de l'écriture de programmes interactifs, il est donc important de maîtriser la bonne méthode. En PHP, nous pouvons utiliser certaines fonctions intégrées pour obtenir les entrées de l'utilisateur, comme utiliser la fonction `fgets()` pour lire une ligne d'entrée utilisateur à partir de l'entrée standard, ou utiliser la fonction `fgetc()` pour lire depuis l'entrée standard Prendre un caractère. Bien entendu, nous pouvons également utiliser les variables superglobales `$_GET` ou `$_POST` pour obtenir les données soumises par l'utilisateur via le formulaire. Quelle que soit la méthode utilisée, vous devez faire attention à la validation et au filtrage nécessaires des entrées utilisateur pour garantir la sécurité et la stabilité du programme. J'espère que l'introduction ci-dessus pourra aider tout le monde !

Contenu de la question

Ce que je souhaite implémenter, c'est une sorte d'application qui enregistre beaucoup d'informations sur la console (par exemple, un nombre de 0 à 1000000000000) et est capable d'arrêter l'exécution en tapant une commande dans la console (par exemple "arrêter").

J'ai eu l'idée d'utiliser goroutine, cependant, je ne peux pas saisir la commande car le champ de saisie passe en sortie.

Voici mon 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()
}
Copier après la connexion

Et les résultats que j'ai obtenus. Les lettres sont l'entrée que j'essaie de saisir et les chiffres sont la sortie de l'application

Des suggestions sur la façon d'effectuer des entrées/sorties appropriées dans mon application go ?

Solution

Je ne peux pas saisir la commande car le champ de saisie passe à la sortie

Vous pouvez saisir des commandes normalement. Au fur et à mesure que vous les tapez, ils sont répercutés sur votre console. Ceci sera combiné avec tout le reste envoyé à la console, ce qui peut dérouter l'utilisateur - mais pas l'ordinateur.

En supposant que cela correspond réellement à votre système d'exploitation, votre programme fonctionne très bien :

if text == "stop\r\n" {
Copier après la connexion

Pas sur mon système d'exploitation r。更便携的方法是使用 strings.trimspace Supprimez tous les espaces.

import (
  ...
  "strings"
) 
... 
...
        if strings.TrimSpace(text) == "stop" {
Copier après la connexion

Avec ce changement, le code fonctionne pour moi. Comme vous l'avez dit, la sortie et l'entrée sont insérées dans l'écran, mais vous pouvez toujours taper stop et terminer le programme.

Des suggestions sur la façon d'effectuer des entrées/sorties appropriées dans mon application go ?

Presque aucun programme de terminal dans le monde réel n'est interactif. Au lieu de cela, les arguments de ligne de commande et les variables d'environnement fournissent sa configuration lorsqu'ils sont appelés. La redirection Shell est généralement utilisée pour conserver (dans un fichier) ou une page (par exemple |less) toute sortie longue d'un programme.

Vous voyez beaucoup de programmes académiques utilisant le modèle de terminal interactif, où le programme invite l'utilisateur et collecte des données, mais dans le monde réel, cela est très rare et constitue généralement une complication imprudente. L'entrée standard est généralement utilisée pour fournir l'entrée de données requise pour les calculs, plutôt que des commandes utilisateur (telles que des données à manipuler ou à filtrer).

Comme @tinkerer l'a suggéré, les signaux peuvent déjà être utilisés pour terminer votre programme (les détails sont spécifiques au système d'exploitation). Il n'y a donc vraiment pas lieu de s'inquiéter de la façon dont l'application du terminal gère la représentation visuelle des entrées et sorties standard, qui sont interpolées uniquement pour terminer le programme. Il existe de nombreux autres signaux dans l'environnement posix, dont certains sont entièrement destinés à l'utilisateur et peuvent être utilisés à n'importe quelle fin.

Une fois que le runtime nécessite une entrée utilisateur plus complexe, les programmes écoutent généralement les commandes sur un socket. Pour de tels programmes, les interfaces Web fournissant des services http sont de plus en plus courantes en raison de leur simplicité et de leur accessibilité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Vous avez un jeu croisé?
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment configurer le saut sur la page de connexion Layui Comment configurer le saut sur la page de connexion Layui Apr 04, 2024 am 03:12 AM

Étapes de configuration du saut de la page de connexion Layui : Ajouter un code de saut : ajoutez un jugement dans l'événement de clic sur le bouton de soumission du formulaire de connexion et accédez à la page spécifiée via window.location.href après une connexion réussie. Modifiez la configuration du formulaire : ajoutez un champ de saisie masqué à l'élément de formulaire de lay-filter="login", avec le nom "redirect" et la valeur étant l'adresse de la page cible.

Comment obtenir des données de formulaire dans Layui Comment obtenir des données de formulaire dans Layui Apr 04, 2024 am 03:39 AM

layui fournit diverses méthodes pour obtenir des données de formulaire, notamment l'obtention directe de toutes les données de champ du formulaire, l'obtention de la valeur d'un seul élément de formulaire, l'utilisation de la méthode formAPI.getVal() pour obtenir la valeur de champ spécifiée, la sérialisation des données de formulaire et en l'utilisant comme paramètre de requête AJAX et en écoutant l'événement de soumission de formulaire, vous obtenez des données.

Comment implémenter l'interaction front-end et back-end dans layui Comment implémenter l'interaction front-end et back-end dans layui Apr 01, 2024 pm 11:33 PM

Il existe les méthodes suivantes pour l'interaction front-end et back-end à l'aide de layui : Méthode $.ajax : simplifie les requêtes HTTP asynchrones. Objet de requête personnalisée : permet d'envoyer des requêtes personnalisées. Contrôle de formulaire : gère la soumission du formulaire et la validation des données. Contrôle du téléchargement : implémentez facilement le téléchargement de fichiers.

Quel est le rôle du Serverlet en Java Quel est le rôle du Serverlet en Java Apr 12, 2024 pm 02:39 PM

Le servlet sert de pont pour la communication client-serveur dans les applications Web Java et est chargé de : traiter les demandes des clients ; générer des réponses HTTP de manière dynamique ; répondre aux interactions des clients et assurer la protection de la sécurité ;

La différence entre event et $event dans vue La différence entre event et $event dans vue May 08, 2024 pm 04:42 PM

Dans Vue.js, event est un événement JavaScript natif déclenché par le navigateur, tandis que $event est un objet d'événement abstrait spécifique à Vue utilisé dans les composants Vue. Il est généralement plus pratique d'utiliser $event car il est formaté et amélioré pour prendre en charge la liaison de données. Utilisez l'événement lorsque vous devez accéder à des fonctionnalités spécifiques de l'objet événement natif.

Comment créer une application d'une seule page en utilisant PHP Comment créer une application d'une seule page en utilisant PHP May 04, 2024 pm 06:21 PM

Étapes pour créer une application monopage (SPA) à l'aide de PHP : créez un fichier PHP et chargez Vue.js. Définissez une instance Vue et créez une interface HTML contenant du texte d'entrée et de sortie. Créez un fichier de framework JavaScript contenant les composants Vue. Incluez des fichiers de framework JavaScript dans des fichiers PHP.

Quels sont les scénarios d'application de Java Servlet ? Quels sont les scénarios d'application de Java Servlet ? Apr 17, 2024 am 08:21 AM

JavaServlet peut être utilisé pour : 1. Génération de contenu dynamique ; 2. Accès et traitement des données ; 3. Traitement de formulaires ; 5. Gestion de sessions ; Exemple : créez un FormSubmitServlet pour gérer la soumission du formulaire, en prenant le nom et l'adresse e-mail comme paramètres et en redirigeant vers success.jsp.

Pour quels scénarios les modificateurs d'événements dans vue peuvent-ils être utilisés ? Pour quels scénarios les modificateurs d'événements dans vue peuvent-ils être utilisés ? May 09, 2024 pm 02:33 PM

Les modificateurs d'événements Vue.js sont utilisés pour ajouter des comportements spécifiques, notamment : empêcher le comportement par défaut (.prevent) arrêter le bouillonnement d'événements (.stop) événement ponctuel (.once) capturer l'événement (.capture) écouter passivement les événements (.passive) Adaptatif modificateur (.self)Modificateur de touche (.key)

See all articles