我有一个结构如下
type MyStruct {
EmbeddedFooBar
}
func (m *MyStruct) Foo(b *http.Request) {
// Doing something
}
func fn(args ...interfaces) {
// It's here I want to get my struct back and run the "Get" method
// Please keep in mind I am too pass a pointer param into the struct method
strt := args[0]
....
get struct back to static data type MyStruct
and run "Get()", dont mind how/where I will get *http.Request to pass, assume I can
....
strt.Get(*http.Request)
}
func main() {
a := &MyStruct{}
fn(a)
}
我将上面的结构传递给一个期望fn
的可变函数...interfaces{}
(因此任何类型都可以满足参数)
在函数fn
内部我希望将结构MyStruct
返回到它的数据类型和值,并运行它的方法Get
,它也可以接受*http.Request
之类的接收器
如何从界面arg[0]
返回My Struct并运行结构的Get
方法,并能够传递指针。
答案 0 :(得分:1)
你想要的是Type Assertion。解决方案可能是这样的:
func fn(args ...interfaces) {
if strt, ok := args[0].(*MyStruct); ok {
// use struct
} else {
// something went wrong
}
// .......
}