这段代码中的T是什么

时间:2013-11-26 22:15:23

标签: go

这段代码真的是什么?递归减速?

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超过一年。

2 个答案:

答案 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是类型。 tT类型的变量。 t包含对函数的引用

我添加了返回S而不是int的函数类型S,并比较了它的工作原理和返回的内容

http://play.golang.org/p/2VRqmMVQR9