There are a couple details to how go/types.Type values compare that I think need better documentation. Ideally there would be some programmatic improvement, but that might not be possible.
First: go/types.Type as map keys work... Someof the time. The built-in Types under types.Typ work. Other values, like ones constructed with types.NewPointer, apparently never hash the same, even if they are logically the same type. The compiler doesn't complain about unhashable values, though. Second: types created from two different loaders (golang.org/x/tools/go/loader) never return true from types.Identical even if they were constructed the exact same way (like comparing the type of the first argument of encoding/json.Indent). Put together, these two facts made my first experience with go/types very frustrating. Basically the whole point of the package for anything other than simple type checking, is to compare types. It would be nice if these two things were documented, and ideally, if they could be fixed (preventing typed from being used as map keys, or making them function sanely, and making the same type from two loaders types.Identical = true) -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.