You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

删除GitHub上的Go Module仓库后仍能使用该模块的原因是什么?

为什么已删除的GitHub Go模块仍能在Go Playground中正常使用?

问题场景

我在学习Go Modules时,创建了一个包含Add()函数的基础模块并发布至GitHub,仓库地址已删除(访问返回404)。但我仍能通过如下代码使用该模块的calc包:

package main

import (
    "fmt"

    "github.com/umermasood/nummanip/calc"
)

func main() {
    fmt.Println(calc.Add(1, 2))
}

运行输出为:

3

原因分析

  • Go Playground的本地缓存机制:Go Playground会将首次加载的模块代码缓存到自身服务器中。当你的模块第一次被Playground处理时,它已经把nummanip模块的完整代码保存到了缓存里,即便原GitHub仓库被删除,Playground依然可以调用本地缓存的内容完成编译和运行。
  • 模块依赖的缓存优先策略:Go在处理模块依赖时,会优先使用本地已缓存的版本,而非每次都从远程仓库拉取。你的代码中没有指定模块的具体版本,Playground会直接使用之前缓存的初始版本模块代码。
  • 缓存未触发更新/过期:Playground的缓存不会因为原仓库删除而立即清除,只有当缓存达到过期时间、或者有明确的版本更新请求时,才会尝试重新拉取远程模块。你的场景中缓存尚未失效,因此仍能正常运行代码。

内容的提问来源于stack exchange,提问作者M Umer Masood

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 06:06:25