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