go.dev/pkg/ 是最权威的Go模块热度来源,基于真实 go list -m all 在数百万项目中的显式依赖频次统计,右上角“Used by”数字仅计非indirect依赖,实际生态影响力通常更高。

go.dev/pkg/ 页面直接查模块热度
官方 go.dev/pkg/ 是最权威、延迟最低的第三方热度来源,它不靠爬虫或估算,而是基于真实 go list -m all 在数百万公开 Go 项目中的出现频次统计。访问 https://pkg.go.dev/github.com/gorilla/mux 这类地址,右上角会显示「Used by」数字(例如 12.4k),点开可查看全部引用它的知名项目列表。
注意:这个数字只统计被 go.mod 显式声明为依赖(即非 .Indirect)的项目,不包含仅在 _test.go 或 import _ 中使用的场景——所以实际生态影响力通常比显示值更高。
GitHub Stars + fork 数不是可靠指标
GitHub 上的 Stars 容易误导:一个库可能 Star 很多但实际没人用(比如教学 Demo 库),也可能 Star 很少但被大量生产项目深度依赖(如 golang.org/x/net)。更危险的是 fork 数——很多用户 fork 后改名、删 go.mod、甚至不再维护,这类 fork 不计入 go.dev 统计,但会拉高 GitHub 表面数据。
真正值得交叉验证的是:
• 是否出现在 CNCF 毕业/孵化项目依赖中(查 github.com/cncf/landscape 的 YAML 数据)
• 是否被 kubernetes、istio、prometheus 等头部项目 require(用 go mod graph | grep 直接扫)
• 是否在 go list -m -u all 输出里长期无更新(说明生态停滞,即使 Star 多也慎用)
gharchive + BigQuery 查真实 import 频次
如果你需要定量趋势(比如“过去半年 github.com/sirupsen/logrus 的新增使用率是否下降”),可以跑 BigQuery 查询 gharchive 公共数据集:
使用 uber-go/dig 在 Golang 中实现依赖注入——基于反射容器,提供 Provide/Invoke、dig.In/dig.Out 参数与结果对象,支持命名依赖等
立即学习“go语言免费学习笔记(深入)”;
SELECT
DATE(created_at) AS day,
COUNT(*) AS import_count
FROM `githubarchive.month.202607`,
UNNEST(REGEXP_EXTRACT_ALL(content, r'import [^;]*["\']([^"\']+)["\']')) AS imp
WHERE imp = 'github.com/sirupsen/logrus'
GROUP BY day
ORDER BY day
这个查询扫描当月所有公开 Go 代码提交,提取真实 import 语句。缺点是延迟约 2 天,且只覆盖 GitHub 公共仓库;优点是绕过 go.mod 声明,直接抓代码级使用证据。
容易踩的坑:
• 正则必须匹配双引号和单引号路径,漏掉一种就丢数据
• content 字段是原始文件内容,不是 AST,所以会把注释里的假 import 也算进去(需加 NOT LIKE '%//%' 过滤)
• 不要直接用 gharchive.day,它只存最近 7 天,要用 month 表
模块废弃信号比热度更重要
一个库热度高≠适合新项目。真正要警惕的是这些信号:
• go.dev 页面顶部出现黄色警告:“This module is deprecated. Use github.com/xxx/v2 instead.”
• go list -m -u all 中该模块长期显示 [vX.Y.Z] 但无人升级(说明下游卡主版本)
• 作者在 README 明确写 “No new features, only critical fixes”
• 最后一次 tag 距今 > 18 个月,且 Issues/Pull Requests 积压超 50 个未处理
尤其注意伪版本(v0.0.0-20230101000000-abc...)占比突然上升——这往往意味着主干已停更,用户被迫切到 commit-hash 临时方案,属于隐性衰减信号。

















