我有一个函数
func doStuff(inout *interface{}) {
...
}
这个函数的目的是能够将任何类型的指针作为输入进行处理。但是当我想用一个结构体指针来调用它时,出现了错误。
type MyStruct struct {
f1 int
}
在调用doStuff
时
ms := MyStruct{1}
doStuff(&ms)
我有
test.go:38: cannot use &ms (type *MyStruct) as type **interface {} in argument to doStuff
如何将&ms
转换为与*interface{}
兼容的类型?
MyStruct
符合协议,则*MyStruct
也符合该协议(因为类型的方法集包括在其指针类型的方法集中)。在这种情况下,接口是空接口,因此它仍然接受所有类型,但是最好还是加以说明。 - newacctreflect.TypeOf(&MyStruct{}).Elem() == reflect.TypeOf(MyStruct)
。请参见https://play.golang.org/p/DGb87RUZqJ - notzippy