Go 时间的行为。计时器
我是新手,时间安排对我来说有点混乱。所以我制作了一个聊天框,它的想法是当你发送信息时,计时器会重置为20秒,如果你在20秒前没有回应,你就会被踢出。我的代码只有在这个人输入了一些东西时才有效,但是如果他们从不输入任何东西,他们就不会被踢出去。我尝试在for循环之前应用Stop,但它不起作用。我应该在循环之前和之后执行所有计时器,而不是在for循环内部执行所有计时器吗Go 时间的行为。计时器,go,Go,我是新手,时间安排对我来说有点混乱。所以我制作了一个聊天框,它的想法是当你发送信息时,计时器会重置为20秒,如果你在20秒前没有回应,你就会被踢出。我的代码只有在这个人输入了一些东西时才有效,但是如果他们从不输入任何东西,他们就不会被踢出去。我尝试在for循环之前应用Stop,但它不起作用。我应该在循环之前和之后执行所有计时器,而不是在for循环内部执行所有计时器吗 func ... { timer := time.NewTimer(20 * time.Second) for inp
func ... {
timer := time.NewTimer(20 * time.Second)
for input.Scan() {
go func(){
<-timer.C
leaving <- ch
conn.Close()
}()
messages <- input.Text()
timer.Stop()
timer.Reset(20 * time.Second)
}
您可以使用time.AfterFunc;比如,
package main
import (
"fmt"
"time"
)
func main() {
timer := time.AfterFunc(time.Second*60, func() {
fmt.Printf("you're out!")
})
defer timer.Stop()
}
'因为无论用户是否键入内容,您都可以关闭连接并发送到离开频道。请显示一个