No, you're going to have trouble with canonical xml from the go encoding/xml library. (also
github.com/mattbaird/gosaml looks very basic, and would be surprised if it worked with the majority of providers.)
SAML is a very deep hole to jump into, and I would recommend offloading it as long as possible. Though I worked with it in depth in the past, my knowledge may be a little out of date, Shibboleth has been the most complete and reliable implementation available (
https://shibboleth.net). It was (and probably is still) apache based, but with some clever proxying you can get by only using it for authentication.
At a slightly lower level, the reference libraries are available in C++ and Java (I think there's info on the shibboleth site as well).
If you are going to try and do this in go, I would at least let some of the industry standard libraries do the difficult xml lifting for you. XML canonicalization, security and signing are very complex, and there have been security holes in SAML2 itself in this area. I prefer to shell out to the xmlsec security tools when in doubt. I'm not sure of the status if the libxml2 wrappers for go, but that may be worth looking into too (or wrapping just the functionality you need yourself).