I've been using go for a short time now, and I've been noticing that there are duplicate packages between Go (standard library) and golang.org/x/.
My questions are: Why are they released twice? And of the two, which one should I use (more up-to-date, canonical, etc)?
Some sample packages that are released twice that I've noticed so far:
golang.org/x/net/html
vs net/html
golang.org/x/crypto
vs crypto
https://golang.org/pkg/#subrepo
These packages are part of the Go Project but outside the main Go tree. They are developed under looser compatibility requirements than the Go core.
Use the standard library packages unless you have a strong need to use the /x/
variant and can accept the risk of breaking changes.
Many of the packages in the golang.org/x/
namespace used to live only there, then were later adopted into the standard library. For backward compatibility, the golang.org/x/
version remains.
New apps should always use the standard library version, though, unless there's a compelling reason otherwise (such as using a library that still uses the old version).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With