我有一个非常大的循环,循环1000行.如果找到魔术值1,我退出循环.如果未找到魔法值1但发现魔法值2,则循环需要跳到开头.现在我正在使用一个开关,一些ifs和一个goto.我读过goto不是最好的方法.有没有更好的方法来使这项工作?
要退出循环,可以使用break语句转到下一条记录,可以使用continue语句.
for(int i = 0; i < 1000; i++) { if(magicValue1) break; if(magicValue2) continue; }
我没有考虑使用GOTO声明我只是简单地指出了一个可能的使用案例
您可以使用goto jump语句来启动/退出循环,但是除非您使用嵌套循环,否则我将远离此选项.我认为goto语句仍有其用于优化,干净利落的用途......但一般来说最好使用它非常谨慎.
for(int i = 0; i < 100; i++) { start: for(int i = 0; i < 10; i++) { if(magicValue1) goto end; if(magicValue2) goto start; } } end :
这个怎么样:
for(int i = 0; i < 1000; i++) { if(values[i] == MAGIC_VALUE_1) { break; } else if(values[i] == MAGIC_VALUE_2) { i = 0; } }
如果通过"跳到开头"表示"跳过此记录并处理下一个记录",则替换i = 0
为continue
.