这段代码真的是什么?递归减速?
package main
import "fmt"
type T func() T
func main() {
var a T
a = func() T {
return a
}
fmt.Printf("%#v", a)
}
http://play.golang.org/p/zt4CBXgrmI
编辑:我一直使用Go超过一年。
答案 0 :(得分:9)
看起来像function type。在声明中,T是一个无参数函数,它返回一个T,所以函数返回一个函数。这是类型声明。 a属于这种类型。
a是一个返回自身的函数,所以这些行基本上都是一样的:
fmt.Printf("%#v", a)
fmt.Printf("%#v", a())
fmt.Printf("%#v", a()()()()())
我无法想到这方面有用,但话又说回来,我在Go中远没有经验。
答案 1 :(得分:0)
GolezTrol是正确的。 T
是类型。 t
是T
类型的变量。
t
包含对函数的引用
我添加了返回S
而不是int
的函数类型S
,并比较了它的工作原理和返回的内容