Go 循环跳转语句使用标签的作用之一

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 这样的判断

点赞