2013-01-05 53 views

回答

3

不幸的是,沒有。雖然它可能看起來很醜,但確實表達了獲得所需所需的最少量信息。這些通常包含在var()塊中的文件頂部,包含所有這些必需類型,以便在程序初始化時計算它們,並且每次函數需要該值時不會導致查找懲罰。

這個成語整個標準庫使用,例如:

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

這樣做的原因詳細施工的事實,reflect.TypeOf是一個庫的一部分,而不是一個內置的,因此必須莖實際上是一個價值。

在某些語言中,類型的名稱是可以用作表達式的標識符。 Go的情況並非如此。有效的表達式可以在in the spec找到。如果某個類型的名稱也可用作reflect.Type,則它會引入方法表達式的不明確性,因爲reflect.Type有其自己的方法(實際上,它是一個接口)。它還會將語言規範與標準庫結合起來,從而降低兩者的靈活性。

相關問題