2014-05-20 28 views
2

如何值類型另一個值的reflect.Type在Golang 也許這樣的轉換:如何通過另一個值的reflect.Type值類型轉換成Golang

func Scan(value interface{}, b string) error { 
    converted := value.(reflect.TypeOf(b)) // do as "value.(string)" 
    return nil 
} 

如何在golang做到這正常嗎?

+0

您可以使用'reflect.ValueOf(interface {})'來獲取表示實際對象的'reflect.Value'對象。我不確定你想要做什麼,你能詳細說明一下嗎? –

+0

好吧,我會讓它更詳細@Not_a_Golfer – user1221244

+0

一般來說,你可以做'converted:= reflect.ValueOf(value).Convert(reflect.TypeOf(b))'。但是這對你沒有多大的幫助,因爲你可能想要將b的值複製到一個右邊? –

回答

3

從接口獲取類型值的唯一方法是使用類型斷言,語法爲value.(T),其中T是一個類型。有一個很好的理由,因爲它使得類型斷言表達式的類型可計算:value.(T)具有類型T.如果相反,您允許value.(E)其中E是一個表達式,其計算結果爲reflect.Type(我認爲這是您問題的要點),那麼編譯器無法(通常)靜態確定value.(E)的類型,因爲它取決於任意計算的結果。

相關問題