diff --git a/gotime/Makefile b/gotime/Makefile index 7189d6a..55d3647 100644 --- a/gotime/Makefile +++ b/gotime/Makefile @@ -14,7 +14,9 @@ TARGETS = \ github.com/meatballhat/box-o-sand/gotime/gotour-artifacts/maps \ github.com/meatballhat/box-o-sand/gotime/gotour-artifacts/ranges \ github.com/meatballhat/box-o-sand/gotime/gotour-artifacts/selects \ - github.com/meatballhat/box-o-sand/gotime/junkdrawer/greppish + github.com/meatballhat/box-o-sand/gotime/junkdrawer/greppish \ + github.com/meatballhat/box-o-sand/gotime/junkdrawer/reflectish + test: build go test -x -v $(TARGETS) diff --git a/gotime/junkdrawer/reflectish/main.go b/gotime/junkdrawer/reflectish/main.go new file mode 100644 index 0000000..fbaaeeb --- /dev/null +++ b/gotime/junkdrawer/reflectish/main.go @@ -0,0 +1,41 @@ +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")) +}