我遇到了一些使用如下函数的代码:
func main() {
...
X:
...
}
Run Code Online (Sandbox Code Playgroud)
我很困惑这是做什么的.这是我创建的一个例子,试图让我们看看发生了什么,但我不完全明白K它是什么,它是一个闭包吗?一个lambda函数?
package main
import "fmt"
func main() {
for i:=0; i<10; i++ {
K: for j:=0; j<10; j++{
if i*j == 81 {
fmt.Printf("%v,%v", i, j)
break;
} else {
continue K;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我对Go和函数式编程也很陌生,所以我试图理解这个概念.
这是一个标签声明.你使用它goto,break或continue.
来自docs:
定义从未使用过的标签是违法的.与其他标识符相比,标签不是块作用域,也不与非标签的标识符冲突.标签的范围是声明它的函数体,并排除任何嵌套函数的主体.
它们在您需要以某种方式改变流量的情况下非常有用,即.
K: for i:=0; i<10; i++ {
for j:=0; j<10; j++{
if (somefunction(j)) {
continue K; // stops this for, and continue the outer one
} else if (otherfunction(i, j)) {
break K; // stops the outer loop
}
....
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
92 次 |
| 最近记录: |