Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 从接口获取指向结构的指针?_Go_Go Interface - Fatal编程技术网

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)
}