下面这个代码发现一个问题,当打印超时后,'fmt.Println("haha")' 还是会出错,如何才能做到超时时结束GO 不在输出HAHA func handleSendaa(){
//生成数据包
chErr:=make(chan error)
ticks:=time.Tick(time.Second*1)
go func(){
<-ticks
fmt.Println("haha")
chErr <- nil
close(chErr)
}()
select {
case <-chErr:
fmt.Println("end")
case <-time.After(time.Millisecond*500):
fmt.Println("TimeOut")
}
}
有疑问加站长微信联系(非本文作者)

os.Exit(1)
os.Exit(1) 退出的是整个程序吧,我只想退出一个GO
这种同步如果要求不严格的话,直接用一个两个goroutine都可以访问到的变量记录是否超时
谢谢
os.Exit(1) ")就可以了
谢谢各位。明白了