Golang Go语言中为什么安装包不包含 golang.org/x/net/context?
添加完 sqlite 后编译提示 cannot find package “golang.org/x/net/context” in any of: ,发现这个谷歌自己的,且好像还有其他的包,好奇问为啥不直接添加进安装包里去???
Golang Go语言中为什么安装包不包含 golang.org/x/net/context?
那是因为它包含到 “context” 包里了,这个是作为 1.7 的特性被写到 release note 里的。
改个导入地址吧,不少第三方包没能在这半年半年内跟上 go 的节奏。
更多关于Golang Go语言中为什么安装包不包含 golang.org/x/net/context?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
这个功能是 1.7 的新功能,考虑到很多版本并未迁移的用户所以保留了这个路径。如果你使用了 1.8 版本的 go ,可以使用 go fix 自动修复
想起来因为自动 import 导致两个文件导入了不同的 context 的悲剧事件😂
不同 context 其实很多时候使用得当可以兼容,毕竟他们有相同的 interface
在Go语言(Golang)的发展过程中,golang.org/x/net/context
作为一个重要的包,曾用于处理上下文(context)管理,特别是在控制并发操作、超时和取消信号等方面。然而,它在标准库中的位置和作用经历了一些变化,这是理解为什么安装包默认不包含 golang.org/x/net/context
的关键。
早期,context
包是作为 golang.org/x/net/context
存在于 Go 的扩展库中。但随着 Go 1.7 版本的发布,context
包被正式纳入标准库(位于 context
包下),成为官方推荐使用的版本。这一变动意味着开发者可以直接使用标准库中的 context
,而无需额外依赖 golang.org/x/net/context
。
因此,现代的 Go 安装包通常不包含 golang.org/x/net/context
,因为该包的功能已经被标准库中的 context
包所替代。对于新项目或维护中的项目,建议迁移到使用标准库中的 context
,以享受更好的兼容性、维护和更新支持。
如果你遇到必须使用 golang.org/x/net/context
的旧代码,可能需要手动通过 go get
命令获取这个包,但这通常不是推荐的做法,除非有特定的兼容性需求。总的来说,迁移到标准库中的 context
是保持代码现代和兼容性的最佳实践。