2013-01-05 103 views

回答

3

不幸的是,没有。虽然它可能看起来很丑,但确实表达了获得所需所需的最少量信息。这些通常包含在var()块中的文件顶部,包含所有这些必需类型,以便在程序初始化时计算它们,并且每次函数需要该值时不会导致查找惩罚。

这个成语整个标准库使用,例如:

html/template/content.go: errorType = reflect.TypeOf((*error)(nil)).Elem() 

这样做的原因详细施工的事实,reflect.TypeOf是一个库的一部分,而不是一个内置的,因此必须茎实际上是一个价值。

在某些语言中,类型的名称是可以用作表达式的标识符。 Go的情况并非如此。有效的表达式可以在in the spec找到。如果某个类型的名称也可用作reflect.Type,则它会引入方法表达式的不明确性,因为reflect.Type有其自己的方法(实际上,它是一个接口)。它还会将语言规范与标准库结合起来,从而降低两者的灵活性。

相关问题