当前位置: 首页 > 面试题库 >

Golang内部嵌套类的功能

公冶谦
2023-03-14
问题内容

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。调用“外部”函数f输出:"Hello World!"符合预期。

在Go Playground上尝试一下。



 类似资料:
  • Oracle留档(在下面的链接)说: 非静态嵌套类(内部类)可以访问封闭类的其他成员,即使它们被声明为私有的。 但在下面的示例中,我创建了一个对象(内部类),它无法访问其封闭外部类的任何方法或变量。下面是代码,你能解释一下吗? http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html 使用Main方法初始化 对于对象,我无法访问其

  • 问题内容: 我正在为新网站构建 用户类 ,但是这次我在考虑构建它有点不同… C ++ , Java 甚至 Ruby (可能还有其他编程语言)都允许在主类内部使用嵌套/内部类,这使我们可以使代码更加面向对象和组织化。 在PHP中,我想这样做: 这在PHP中可行吗?我该如何实现? 更新 如果不可能,将来的PHP版本是否会支持嵌套类? 问题答案: 介绍: 嵌套类与其他类的关系与外部类略有不同。以Java

  • 本文向大家介绍深入理解Java嵌套类和内部类,包括了深入理解Java嵌套类和内部类的使用技巧和注意事项,需要的朋友参考一下  一、什么是嵌套类及内部类 可以在一个类的内部定义另一个类,这种类称为嵌套类(nested classes),它有两种类型:静态嵌套类和非静态嵌套类。静态嵌套类使用很少,最重要的是非静态嵌套类,也即是被称作为内部类(inner)。嵌套类从JDK1.1开始引入。其中inner类

  • 问题内容: 它运行。 它也可以运行。 它再次运行! 但是失败了!? Go中的嵌套地图有问题吗?还是对嵌套地图没有多括号支持? 问题答案: 地图类型的零值为。尚未初始化。您无法在地图中存储值,这是运行时的恐慌。 在上一个示例中,您初始化了(外部)映射,但是它没有条目。当您像那样对它进行索引时,由于尚无键输入,因此对其进行索引将返回用于地图的值类型的零值。因此,尝试分配给运行时恐慌。 您必须先初始化地

  • 编译程序突出显示“companion”,表示“修饰符companion不适用于内部类”,还突出显示InnerClass()调用,表示“表达式无法从嵌套类工厂访问”,使用“inner”关键字使类处于内部。 我如何用Java中的静态工厂方法来实现我在这里试图做的事情?

  • JVM为内部类成员和方法分配空间的方式有什么不同吗。请提供所有可用类型的嵌套类(静态、本地、非静态、匿名)在此上下文中的区别。我从其他各种渠道寻找,但没有弄清楚。