Go 从接口获取指向结构的指针?
给定一个接口,如何获取指向基础值的指针 我天真的尝试是使用如下类型断言:Go 从接口获取指向结构的指针?,go,go-interface,Go,Go Interface,给定一个接口,如何获取指向基础值的指针 我天真的尝试是使用如下类型断言: var mytypeptr *MyType = myinterface.(*MyType) 但我得到: interface conversion: MyInterface is MyType, not *MyType 您可以从以下内容开始: 有没有一种方法可以在不使用反射的情况下修改接口后面的结构字段?@erjoalgo考虑接口的结构方式请参见,否:在运行时,接口会屏蔽底层值。接口是静态类型的,我想你应该把*MyTyp
var mytypeptr *MyType = myinterface.(*MyType)
但我得到:
interface conversion: MyInterface is MyType, not *MyType
您可以从以下内容开始:
有没有一种方法可以在不使用反射的情况下修改接口后面的结构字段?@erjoalgo考虑接口的结构方式请参见,否:在运行时,接口会屏蔽底层值。接口是静态类型的,我想你应该把*MyType放在接口int的第一位。接口值内部包含已经用于任何长于机器字的类型的指针;编译器足够聪明,当您存储*MyType时,它不会成为指向指针的指针;和指针类型的行为与实际结构的行为相同。
val := reflect.ValueOf(myinterface)
if val.Kind() == reflect.Ptr {
val = reflect.Indirect(val)
}