gpt4 book ai didi

go - 函数中的函数

转载 作者:IT王子 更新时间:2023-10-29 02:25:33 25 4
gpt4 key购买 nike

我遇到了一些使用如下函数的代码:

func main() {

...
X:
...

}

我对它的作用感到困惑。这是我创建的一个示例,试图弄乱看看发生了什么,但我不完全理解 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;
}
}
}

}

我对 Go 和函数式编程也很陌生,所以我试图理解这个概念。

最佳答案

这是一个label statement .您可以将它与 gotobreakcontinue 一起使用。

来自 docs :

It is illegal to define a label that is never used. In contrast to other identifiers, labels are not block scoped and do not conflict with identifiers that are not labels. The scope of a label is the body of the function in which it is declared and excludes the body of any nested function.

它们在您需要以某种方式更改流程的情况下很有用,例如。

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
}
....
}
}

关于go - 函数中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40912149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com