首页  >  文章  >  后端开发  >  Golang 函数中可以存在嵌套类吗?

Golang 函数中可以存在嵌套类吗?

Patricia Arquette
Patricia Arquette原创
2024-11-04 14:56:02480浏览

Can Nested Classes Exist Within Functions in Golang?

Golang 函数中可以嵌套类吗?

Golang 允许在函数中嵌套结构体,但不允许在其他函数中嵌套函数(不包括拉姆达函数)。这种限制引发了一个问题:是否可以在 Golang 中的函数内定义嵌套类。

考虑以下示例:

<code class="go">func f() {
    // Nested struct Cls within f
    type Cls struct {
        // ...
    }

    // Attempt to bind foo to Cls fails
    func (c *Cls) foo() {
        // ...
    }
}</code>

在这种情况下,尝试将 foo 函数绑定到嵌套类 Cls 将失败。这可能看起来令人惊讶,因为函数内部的类并没有减少。

函数文字来救援

尽管 Golang 中不允许在其他函数中嵌套函数,但是使用函数文字的解决方法:

<code class="go">func f() {
    foo := func(s string) {
        fmt.Println(s)
    }

    foo("Hello World!")
}</code>

这里,我们创建一个类型为 foo 的变量函数,它在另一个函数 f 中声明。调用“外部”函数 f 输出:“Hello World!”正如预期的那样。

这个解决方案允许我们实现与函数内的嵌套类类似的行为,尽管使用不同的机制。

以上是Golang 函数中可以存在嵌套类吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn