在开发过程中可能会遇到这样的情况,有一些包是引入自不同地方的,比如:
- Go lang.org/x/net/html 和 net/html,
- golang.org/x/crypto 和 crypto。
那这是什么原因呢?
引用 Go 官方 Wiki 的说法:
They are developed under looser compatibility requirements than the Go core. In general, they will support the previous two releases and tip.
大概意思就是,Go 标准库的包对向前兼容性有严格的标准。虽然 golang.org/x/… 系列包也是 Go 项目的一部分,但是在比 Go 标准库包更宽松的兼容性标准下开发,一般它们支持向前兼容两个版本。
golang.org/x/… 为官方的辅助包,是一种具有官方试验性质的包, 也就是说不排除有 BUG, 或者可能健壮性不是特别好;正式的标准库是有保障的包,前者有些成熟的功能会慢慢的放到标准库包里。
参考: