前言
在Go语言中,continue语句可以标签一起使用,continue label在处理复杂的嵌套循环时非常有用,可以让代码变得更简洁。
示例
下面的代码来自Continue statements with Labels in Go
在list.Items中查找与目标 reserved.Items 匹配的item,如果找到了,直接break并继续外层循环,如果没有找到做些处理。可以看到,代码中引入一个bool类型变量found,用于表示是否找到。在内层的循环中如果有匹配的item,设置found为true,在外层的循环中根据found是否为true做不同的处理。
代码语言:javascript复制for _, item := range list.Items {
found := false
for _, reserved := range reserved.Items {
if reserved.ID == item.ID {
found = true
break
}
... do some other work ...
}
if found {
continue
}
... do some other work ...
}
使用continue label
使用continue label,不再用标记位found做很多判断处理,直接continue OUTER简单明了,如果有匹配的item,直接执行外层剩余的循环。
代码语言:javascript复制OUTER:
for _, item := range list.Items {
for _, reserved := range reserved.Items {
if reserved.ID == item.ID {
continue OUTER
}
... do some other work ...
}
... do some other work ...
}