go语言 – 标签

可以使用标签将外部循环从内部for循环中中断。让我们通过一个简单的例子来说明。

package main

import (  
    "fmt"
)

func main() {  
    for i := 0; i < 3; i++ {
        for j := 1; j < 4; j++ {
            fmt.Printf("i = %d , j = %d\n", i, j)
        }

    }
}

上面的程序将打印

i = 0 , j = 1  
i = 0 , j = 2  
i = 0 , j = 3  
i = 1 , j = 1  
i = 1 , j = 2  
i = 1 , j = 3  
i = 2 , j = 1  
i = 2 , j = 2  
i = 2 , j = 3  

如果我们想在ij相等时停止打印,需要中断外部for循环。当ij相等时,在内部for循环中添加一个break只会中断内部for循环。

package main

import (  
    "fmt"
)

func main() {  
    for i := 0; i < 3; i++ {
        for j := 1; j < 4; j++ {
            fmt.Printf("i = %d , j = %d\n", i, j)
            if i == j {
                break
            }
        }

    }
}

在上面的程序中,当第i行和第j行相等时,我在内部的for循环中添加了一个break,但这只会中断内部for循环,外部循环将继续。这个程序将打印:

i = 0 , j = 1  
i = 0 , j = 2  
i = 0 , j = 3  
i = 1 , j = 1  
i = 2 , j = 1  
i = 2 , j = 2  

这不是预期的输出。当ij相等时,需要停止打印。

这种情况下,可以使用标签。标签可以用来中断外部循环。让我们使用标签重写上面的程序。

package main

import (  
    "fmt"
)

func main() {  
outer:  
    for i := 0; i < 3; i++ {
        for j := 1; j < 4; j++ {
            fmt.Printf("i = %d , j = %d\n", i, j)
            if i == j {
                break outer
            }
        }

    }
}

在上面的程序中,我们在第一行增加了一个标签outer。通过指定标签来中断外部的for循环。当ij相等时,程序将停止打印。这个程序将输出

i = 0 , j = 1  
i = 0 , j = 2  
i = 0 , j = 3  
i = 1 , j = 1  


浙ICP备17015664号 浙公网安备 33011002012336号 联系我们 网站地图  
@2019 qikegu.com 版权所有,禁止转载