給定一個接口,我該如何獲取指向底層值的指針?Go從接口獲取指向結構的指針?
我天真的嘗試是使用類型聲明是這樣的:
var mytypeptr *MyType = myinterface.(*MyType)
,但我得到:
interface conversion: MyInterface is MyType, not *MyType
給定一個接口,我該如何獲取指向底層值的指針?Go從接口獲取指向結構的指針?
我天真的嘗試是使用類型聲明是這樣的:
var mytypeptr *MyType = myinterface.(*MyType)
,但我得到:
interface conversion: MyInterface is MyType, not *MyType
你可以下手,使用reflect.Indirect()
:
val := reflect.ValueOf(myinterface)
if val.Kind() == reflect.Ptr {
val = reflect.Indirect(val)
}
我想你想把'* MyType'放在'interface'中,這裏是第一個地方。接口值內部包含的指針已經超過機器字長度的任何類型;當你存儲一個'* MyType'([這裏是粗糙的測試代碼來演示](http://play.golang.org/p/3Y3QKTmSW8))時,編譯器足夠聰明,不會產生指針指針。和'.'對於指針類型的行爲與實際結構相同。 – twotwotwo 2014-09-19 19:44:43