Go 支持函数内嵌套结构体,但除了 lambda 外没有嵌套函数,是不是意味着函数内无法定义嵌套类?
func f() {
// nested struct Cls inside f
type Cls struct {
...
}
// try bounding foo to Cls but fail
func (c *Cls) foo() {
...
}
}
所以类在函数内部被弱化感觉有点奇怪。
有什么提示吗?
最佳答案
其实声明函数 with 或 without 接收器都没有关系: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/