求教,GO超时时如何停止GO进程

admin87 · · 2419 次点击
``` package main import ( "context" "fmt" "time" ) func main() { ctx, cancel := context.WithTimeout(context.Background(), 2000*time.Millisecond) go func(ctx context.Context, cancel context.CancelFunc) { for { select { case _, ok := <-ctx.Done(): if ok { fmt.Println("return") cancel() } else { fmt.Println("time over") } return } } }(ctx, cancel) select { case <-time.After(1 * time.Second): fmt.Println("overslept") cancel() } time.Sleep(10000 * time.Millisecond) } ```
#5
更多评论
windy_
君子知命不惧,日日自省
os.Exit(1)
#1
os.Exit(1) 退出的是整个程序吧,我只想退出一个GO
#2