I just started learning Go recently and I must say, it's been a lot of fun. The first real difficulty I've had with the language has been trying to use reflection to set a field on a struct
, inside of a function. I found some decent examples, but none that were quite fitting, so I thought I'd share my solution here.
So, just for the fun of it, let's say we have a struct
that we know will "always" have a field Brewery
:
type Beer struct { Brewery string }
Note that Brewery
is public
(sorry for the term, my non-Go experience is showing).
Brewery
to "Dogfish Head"
, but we want it to operate on the general interface and use reflection (for whatever reason):
import "reflect" func breweryToDFH(thing interface{}) { reflect.ValueOf(thing). Elem(). FieldByName("Brewery"). SetString("Dogfish Head") }
Finally, to call it, a pointer must be used, e.g.
beer := Beer{} breweryToDFH(&beer)
And that's all! As one coming from the dynamicity of Ruby, this seems kind of roundabout. So if you know a way to simplify, please feel free to comment. Also, there is a good deal of error handling that should be done here, so for that, I will defer to a stackoverflow post.
Happy "Go-ing"!
Borgata Hotel Casino & Spa, Atlantic City - MapyRO
ReplyDeleteBorgata Hotel 충주 출장샵 Casino & Spa 군포 출장샵 is a 5 star 여주 출장샵 property 공주 출장안마 located in Atlantic City, New Jersey. 광명 출장마사지 The casino is situated near the marina and