如何检查条件,如果条件为真,则停止报价器并退出应用程序,如果条件不成立并且发生超时,则退出应用程序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何检查条件,如果条件为真,则停止报价器并退出应用程序,如果条件不成立并且发生超时,则退出应用程序相关的知识,希望对你有一定的参考价值。
在我的以下代码k == 3上,我将true发送给channel,但它不检查case x,ok以打印“ test pass”和os.Exit( 20)(我希望应用程序在第一个真实条件下退出并忽略time.Sleep(timeout))
另一方面,当我更改k:= 4时,我希望应用程序在10sec之后退出,并使用os.Exit(10)打印“ 发生超时”
func main()
timeout := time.Second * 10
sleepTime := 5 * time.Second
done := make(chan bool)
ticker := time.NewTicker(sleepTime)
go func()
for
select
case x,ok := <-done:
if ok
if x
//Test passed
log.Println("** Test Passed **")
os.Exit(20)
else
//Timeout
log.Println("Timeout occurred")
os.Exit(10)
return
case <-ticker.C:
// Validate
log.Println("ticker")
//Check for condition and if its true send true to channel
k := 3
if k == 3
done <- true
()
time.Sleep(timeout)
done <- false
答案
k==3
的第一种情况将不起作用,因为您写入了done
通道,但是没有人在听它,因此它挂在那里。如果要退出k==3
情况,则不要写通道,而要在那儿存在的代码。
第二部分,当k==4
可能正在工作时,因为当main超时时,它将写入done
,这将由select中的第一种情况接收。但是可能程序在有机会执行之前就结束了。写入done
通道后,可以在main上使睡眠。
以上是关于如何检查条件,如果条件为真,则停止报价器并退出应用程序,如果条件不成立并且发生超时,则退出应用程序的主要内容,如果未能解决你的问题,请参考以下文章
MySQL存储过程——一一检查是不是满足某些条件;如果不满足,则退出程序并返回特定消息
如果数组中的所有值都为真(字符串)并且其中一个值为假(字符串),则如何返回布尔值 true 停止使用 Javascript 进行检查