go-yaml can't do it automatically because it can only see what
package reflect exposes about types, and that doesn't include the names of constants in a package. There isn't really a notion of packages from
reflect's perspective at all.
It sounds like you're willing to do it yourself (you've already made a
map, etc). So I think what you can do is make
Unmarshaler, by providing a function that turns the strings the YAML package decodes into values; I lack the specific experience with
go-yaml to be able to tell you exactly how to implement it, but in general that's what interfaces like
If this is something you run into often enough, it might be worthwhile writing something along the lines of
stringer to generate the maps and deserialization functions for you (by inspecting the source files that define the types). There have to be a lot of types before that's worthwhile though.