Go 中的 for 循环可以使用 continue, break 进行控制,同时也可以标签
下面看一下使用标签的一个好处
示例:Go 求 N 以内的素数
package main
import (
"fmt"
)
func main() {
printPrime(10)
}
func printPrime(maxNum int) {
next:
for outer := 2; outer < maxNum; outer++ {
for inner := 2; inner < outer; inner++ {
if outer%inner == 0 {
continue next
}
}
fmt.Printf("%d\n", outer)
}
fmt.Println("Completed")
}
再看一下用C语言实现的(C 的 continue, break 不支持标签)
#include <stdio.h>
void printPrime(int maxNum)
{
int outer, inner;
int flag;
for (outer = 2; outer < maxNum; outer++)
{
flag = 1;
for (inner = 2; inner < outer; inner++)
{
if (outer % inner == 0)
{
flag = 0;
break;
}
}
if (flag == 1)
{
printf("%d\n", outer);
}
}
printf("Completed\n");
}
int main()
{
printPrime(10);
return 0;
}
可以看出,对于计算素数这个程序,使用循环使用跳转标签,可以省去如C语言 flag 这样的判断