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.
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
}
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)")
}
}
}
}
C'était facile, mais quand l'utiliserez-vous?
Recommended Posts