Entrée standard avec limite de temps

Vous avez probablement écrit un programme et une fois voulu créer une entrée standard avec une limite de temps. Au fait, je ne le fais pas. Je pourrais facilement le réaliser avec Go, alors je vais l'écrire. C'est pour moi un jour.

Méthode

La méthode est très simple, il suffit de créer un sous-programme qui reçoit l'entrée standard et de recevoir le texte d'entrée sur le canal.

in := make(chan string, 1)
go func() {
	sc := bufio.NewScanner(os.Stdin)
	sc.Scan()
	in <- sc.Text()
}()

Ceci peut être facilement réalisé en combinant le canal ci-dessus avec "time.NewTimer" ou "time.NewTicker".

timer := time.NewTimer(time.Second * 10)
select {
  case text := <-in:
    //Traitement utilisant l'entrée
  case <-timer.C:
    //Traitement au moment de l'expiration du délai
}

Échantillon correctement fait

Ceci est un exemple réalisé par la méthode ci-dessus. Vous pouvez vous en faire une idée en l'exécutant localement.

package main

import (
	"bufio"
	"fmt"
	"os"
	"time"
)

func main() {
	in := make(chan string, 1)
	go func() {
		sc := bufio.NewScanner(os.Stdin)
		sc.Scan()
		in <- sc.Text()
	}()

	ticker := time.NewTicker(time.Second)
	defer ticker.Stop()
	fmt.Println("Le délai est de 5 secondes. Entrez l'auteur du garçon")
	for i := 0; i < 5; i++ {
		select {
		case text := <-in:
			if text == "Natsume Soseki" {
				fmt.Printf("C'est incroyable de pouvoir entrer\n")
			} else {
				fmt.Printf("J'ai tort\n%s\n", text)
			}
			i = 5
		case <-ticker.C:
			switch i {
			case 0:
				fmt.Println("Il y a une limite de temps, alors soyez rapide")
			case 1:
				fmt.Println("vite vite")
			case 2:
				fmt.Println("Pensez-vous que cela vous gêne?")
			case 3:
				fmt.Println("je suis d'accord avec toi")
			case 4:
				fmt.Println("Jeu terminé(Lol)")
			}
		}
	}
}

Contraction

C'était facile, mais quand l'utiliserez-vous?

Recommended Posts

Entrée standard avec limite de temps
Représentation matricielle avec entrée standard Python
[Python] Entrée standard
Résumé des entrées standard
Entrée japonaise avec pyautogui
[Python] À propos de l'entrée standard
Résumé des entrées / sorties standard
Obtenez une sortie standard en temps réel avec le sous-processus Python
Ecrire l'entrée standard dans le code
[Python3] Entrée standard [Cheet sheet]
Tester la sortie standard avec Pytest
Partie 1 de la réception de l'entrée standard
[Pour les débutants] Résumé de l'entrée standard en Python (avec explication)
Entrée standard Python3 (compétition pro)
Entrée standard / résumé / python, ruby
Recevoir des conseils d'entrée standard @ python
Mesure du temps d'exécution avec Python avec
[Pour AtCoder] Mémo d'entrée standard
Synchronisation de l'heure (Windows) avec Python
Entrée standard Python3 pour une programmation compétitive
Prédiction de séries chronologiques facile avec Prophet
Obtenez un temps de réaction négatif avec psychopy.event.getKeys ()
Entrée / sortie avec Python (mémo d'apprentissage Python ⑤)
Conforme à la norme de codage Python PEP8
RPC complété avec des modules Python 3 standard
Premiers pas avec CPU Steal Time
Comment stocker des données CSV dans Amazon Kinesis Streams avec une entrée standard