如果是仅想知道如何将 interface{}
转化为 struct{}
的话, 代码如下:
interface.(*Struct)
使用反射转的话,先用 reflect.ValueOf
来获取 interface
的 value
, 然后使用 Interface()
来获取 interface
。 如下:
type Human interface {
Name() string
Type() string
}
type Martian struct {
name string
id int
}
func (m *Martian) Name() string {
return m.name
}
func (m *Martian) Type() string {
return "martian"
}
func TestHuman(t *testing.T) {
var human Human
human = &Martian{
name: "Jack",
id: 1,
}
t.Log(human.Name())
// convert interface{} to struct{}
obj := reflect.ValueOf(human)
martian := obj.Interface().(*Martian)
t.Log(martian.id)
}