打印从0-10的平方,失败后重新执行
func main() {
for i := 0; i < 10; i++ {
ctx, cancel := context.WithTimeout(context.Background(), time.Millisecond*time.Duration(200))
x := example(ctx, i)
for x == -1 {
ctx2, cancel2 := context.WithTimeout(context.Background(), time.Millisecond*time.Duration(200))
x = example(ctx2, i)
cancel2()
}
fmt.Println(x)
cancel()
}
}
func example(ctx context.Context, param int) int {
rand.Seed(time.Now().Unix())
select {
case <-ctx.Done():
// 超时
return -1
case <-time.After(time.Duration(rand.Intn(500)) * time.Millisecond):
// 取消
return param * param
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。