Sie haben wahrscheinlich ein Programm geschrieben und wollten einmal eine Standardeingabe mit einem Zeitlimit erstellen. Übrigens nicht. Ich könnte es leicht mit Go realisieren, also werde ich es aufschreiben. Es ist eines Tages für mich.
Die Methode ist sehr einfach. Erstellen Sie einfach eine Unterroutine, die Standardeingaben empfängt und den Eingabetext auf dem Kanal empfängt.
in := make(chan string, 1)
go func() {
sc := bufio.NewScanner(os.Stdin)
sc.Scan()
in <- sc.Text()
}()
Dies kann leicht erreicht werden, indem der obige Kanal mit "time.NewTimer" oder "time.NewTicker" kombiniert wird.
timer := time.NewTimer(time.Second * 10)
select {
case text := <-in:
//Verarbeitung mit Eingabe
case <-timer.C:
//Verarbeitung zum Zeitpunkt des Timeouts
}
Dies ist ein Beispiel, das mit der obigen Methode hergestellt wurde. Sie können ein Gefühl dafür bekommen, indem Sie es lokal ausführen.
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("Das Zeitlimit beträgt 5 Sekunden. Geben Sie den Autor des Jungen ein")
for i := 0; i < 5; i++ {
select {
case text := <-in:
if text == "Natsume Soseki" {
fmt.Printf("Es ist erstaunlich, eintreten zu können\n")
} else {
fmt.Printf("ich liege falsch\n%s\n", text)
}
i = 5
case <-ticker.C:
switch i {
case 0:
fmt.Println("Es gibt ein Zeitlimit, also sei schnell")
case 1:
fmt.Println("schnell schnell")
case 2:
fmt.Println("Glaubst du, es ist im Weg?")
case 3:
fmt.Println("Ich stimme mit Ihnen ein")
case 4:
fmt.Println("Spiel ist aus(Lol)")
}
}
}
}
Es war einfach, aber wann werden Sie es verwenden?
Recommended Posts