From 39fdd6fdd6a260ce421bce5cc705ce7e7f80e414 Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Thu, 13 Dec 2012 21:02:19 -0500 Subject: [PATCH] Reflection thing from Jesse :-) --- gotime/Makefile | 4 ++- gotime/junkdrawer/reflectish/main.go | 41 ++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 gotime/junkdrawer/reflectish/main.go 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")) +}