gpt4 book ai didi

go - 如何在for循环中的GoRoutine中使用 'break'或 'continue'?

转载 作者:行者123 更新时间:2023-12-02 02:12:52 24 4
gpt4 key购买 nike

我是 golang 菜鸟。我想在 for 循环中包含的 GoRoutine 中中断或继续。

下面是我的代码

for i, m := range something {
go func(i int, m someModel){
if m.Name == "AAA" {
continue; // Here occurs error
}

// Do something
// which is very long....
}
}

在 vsCode 中,错误提示“在 for 语句中不继续”。

我知道可以通过(if ~ else)语句轻松解决,但是我的代码中的“else”部分太长,这使得代码看起来很脏。
我只是想知道是否还有其他方法可以解决这个问题。

谢谢。

最佳答案

使用go语句运行的函数将脱离主线程的上下文,因此这里不能使用continue语句。有两种方法可以实现您的目标

第一种方式是通过go语句启动函数,函数里面判断是否不满足继续执行的条件,return语句结束Routine

for i, m := range something {
go func(i int, m someModel){
if m.Name == "AAA" {
return // use return
}

// Do something
// which is very long....
}
}

第二种方式是通过go语句在启动函数之前检查数据。如果不满足启动要求,可以通过 continue 语句跳过。

for i, m := range something {
if m.Name == "AAA" {
continue // Check before start
}

go func(i int, m someModel){
// Do something
// which is very long....
}
}

根据您的代码上下文推断,我推荐您第二种

关于go - 如何在for循环中的GoRoutine中使用 'break'或 'continue'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67513311/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com