#go
#Вперед
Вопрос:
У меня запущено приложение, и через 5 секунд я хочу получить весь текст, который пользователь написал, не нажимая ни одной клавиши, например enter. В Golang
Ответ №1:
Вот функция readInput
, которая использует a time.Timer
для ожидания определенного времени ввода пользователя
package main
import (
"bufio"
"fmt"
"log"
"os"
"time"
"golang.org/x/crypto/ssh/terminal"
)
func readInput() string{
state, err := terminal.MakeRaw(0)
if err != nil {
log.Fatalln("setting stdin to raw:", err)
}
defer func() {
if err := terminal.Restore(0, state); err != nil {
log.Println("warning, failed to restore terminal:", err)
}
}()
timer := time.NewTimer(2 * time.Second)
in := bufio.NewReader(os.Stdin)
input := []rune{}
go func() {
for {
r, _, err := in.ReadRune()
if err != nil {
log.Println("stdin:", err)
break
}
input = append(input, r)
}
}()
<- timer.C
return string(input);
}
func main() {
s:= readInput()
fmt.Println(s)
}
Комментарии:
1. Потому что в ответе есть таймер на 2 секунды. Вам нужно настроить его так, как вам подходит