インターフェイスが与えられた場合、基になる値へのポインターを取得するにはどうすればよいですか?
私の素朴な試みは、次のような型アサーションを使用することでした:
var mytypeptr *MyType = myinterface.(*MyType)
しかし、私は得る:
interface conversion: MyInterface is MyType, not *MyType
インターフェイスが与えられた場合、基になる値へのポインターを取得するにはどうすればよいですか?
私の素朴な試みは、次のような型アサーションを使用することでした:
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)
}