Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
函数内部的Golang嵌套类_Go_Nested - Fatal编程技术网

函数内部的Golang嵌套类

函数内部的Golang嵌套类,go,nested,Go,Nested,Go支持函数内部的嵌套结构,但除了lambda之外没有嵌套函数,这是否意味着无法在函数内部定义嵌套类 func f() { // nested struct Cls inside f type Cls struct { ... } // try bounding foo to Cls but fail func (c *Cls) foo() { ... } } 因此,类在函数中被削弱感觉有点奇怪 有什么提示吗?实际上,无论您是否要

Go支持函数内部的嵌套结构,但除了lambda之外没有嵌套函数,这是否意味着无法在函数内部定义嵌套类

func f() {
    // nested struct Cls inside f
    type Cls struct {
    ...
    }
    // try bounding foo to Cls but fail
    func (c *Cls) foo() {
    ...
    }
}
因此,类在函数中被削弱感觉有点奇怪


有什么提示吗?

实际上,无论您是否要声明带接收器的函数,都无关紧要:不允许在Go中嵌套函数

尽管您可以使用来实现以下目标:

func f() {
    foo := func(s string) {
        fmt.Println(s)
    }

    foo("Hello World!")
}
在这里,我们创建了一个变量
foo
,该变量有一个函数类型,它位于另一个函数
f
中。调用“outer”(外部)函数
f
输出:
“Hello World!”
,如预期的那样


试试看。

struct
是一种结构类型。Go没有类。@很抱歉,上面的
表示带边界函数的
struct
。请原谅我的错误表达。是的,我理解了,我刚刚更正了术语或术语。好的~有没有办法将函数文本绑定到嵌套的
结构
?@HayesPan不,你不能。而不是为类型创建方法。您可以为函数literal指定一个附加参数,该参数将与接收方一样属于
struct
类型,但它不会是
struct
方法集的一部分。函数文字不是函数,它只是一个值(它有一个函数类型)。明白了吗√ 谢谢@ICZA如果我想从内部递归调用这个文本函数呢?@schehata然后检查以下内容: