Golang嵌套类在函数内

标签 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() {
    ...
    }
}

所以类在函数内部被弱化感觉有点奇怪。

有什么提示吗?

最佳答案

其实声明函数 withwithout 接收器都没有关系:Go 中不允许嵌套函数。

虽然你可以使用 Function literals实现这样的目标:

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

    foo("Hello World!")
}

这里我们创建了一个变量foo,它有一个函数类型,并在另一个函数f中声明。调用“外部”函数 f 输出:"Hello World!" 符合预期。

试用 Go Playground .

关于Golang嵌套类在函数内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28252117/

相关文章:

go 函数 - panic : runtime error: invalid memory address or nil pointer dereference

Google Cloud KMS App Engine 加密不起作用

go - 如何引用用于 HTTP header 字段的字符串?

go - 如何将文件模式转换为 int?

python - 访问嵌套在字典python中的元组中的项目

java - 重构嵌套的 if 语句

mysql - 是否存在支持单个字符串中的多个语句的 Go Mysql 驱动程序?

Java:嵌套类可以解决这个问题吗?

c++ - 如何声明一个采用模板类的嵌套类的全局友元函数?

amazon-web-services - Cloudformation 模板错误:每个 Fn::GetAtt 对象都需要两个非空参数