package main import ( "fmt" "reflect" ) type Fooer interface { Foo(int) int } type Bar struct { SomeField int } func (this *Bar) Foo(x int) int { return x } type Baz struct { SomeField int } func (this Baz) Foo(x int) int { return x } func main() { var bar, baz Fooer bar = &Bar{ SomeField: 5, } baz = Baz{ SomeField: 5, } fmt.Println(reflect.ValueOf(baz).FieldByName("SomeField")) fmt.Println(reflect.Indirect(reflect.ValueOf(bar)).FieldByName("SomeField")) }