Go 这个代码中的T是什么

Go 这个代码中的T是什么,go,Go,这段代码中真正的T是什么?递归减速 package main import "fmt" type T func() T func main() { var a T a = func() T { return a } fmt.Printf("%#v", a) } 编辑:我已经使用围棋一年多了。它看起来像一个游戏。在声明中,T是返回T的无参数函数,因此是返回函数的函数。这就是类型声明。a是这种类型的T a是一个返回自身的函数,因此这些行基本

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

package main

import "fmt"

type T func() T

func main() {
    var a T
    a = func() T {
        return a
    }

    fmt.Printf("%#v", a)
}

编辑:我已经使用围棋一年多了。

它看起来像一个游戏。在声明中,T是返回T的无参数函数,因此是返回函数的函数。这就是类型声明。a是这种类型的T

a是一个返回自身的函数,因此这些行基本上都执行相同的操作:

fmt.Printf("%#v", a)
fmt.Printf("%#v", a())
fmt.Printf("%#v", a()()()()())

我想不出它有什么好的用途,但话说回来,我在围棋方面还远远没有经验。

GolezTrol是正确的<代码>T是类型
t
t
类型的变量。
t
包含对函数的引用

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


a很简单,它会自动返回,但我的问题是T。T是这个函数类型的类型声明。T是一个返回T的函数。它有点像递归声明:o) 用例:这是Rob Pike在中使用的。需要注意的是,T不是一个返回自身的函数,它是一个返回T的函数。示例::)@kluig没错。正如我所写的,a是一个返回自身的函数。a的类型是T,这是一个返回T的函数。根据声明,不需要相同的T“返回自身”是它在a中的实现方式。