如果我有:
type foo struct{
}
func bar(baz interface{}) {
}
上述内容是不可更改的 - 我无法更改foo或bar。此外,在调用bar时,必须将baz转换回foo结构体指针。如何将 &foo{} 转换为 interface{},以便在调用bar时将其用作参数?
baz
。 - Juan de Parrasbaz
可能是哪种类型,那么你就需要使用反射(import "reflect"
)。这也是像encoding/json
这样的包可以在不预先知道任何类型的情况下对基本上任何类型进行编码的方式。 - ANisusfmt.Printf
总是将其参数作为接口接收。它告诉您接口内部的类型。这意味着fmt.Printf(“%T”,f)
和fmt.Printf(“%T”,interface {}(f))
是相同的。唯一的区别在于,在后者中,我进行了冗余的显式转换。 - ANisus