NVIDIA开源的Go依赖注入神器:gontainer,真香!

简介: gontainer 是 NVIDIA 开源的零依赖 Go DI 容器,基于泛型+反射实现函数签名自动注入,无需代码生成。支持懒加载、生命周期管理、可选/批量依赖,轻量易用,适合中小型项目,让 Go 依赖注入回归简洁本质。(239字)

推荐阅读

Gin 1.12新版本发布:这个新特性让开发者少写一半代码!
最新我用AI开发了自己的第一个博客网站:https://golangai.site ,可前往阅读公众号的文章。

写Go还在手动NewXXX(db, logger, config)?NVIDIA悄悄开源了这个零依赖的DI容器,看完直呼:早该这样了!


🔍 gontainer 是什么?

一句话:用函数签名自动注入依赖的轻量级容器,零外部依赖、零代码生成,纯靠 Go 泛型 + 反射实现。

image.png

// 以前:手动组装,写到怀疑人生
svc := NewUserService(
    NewDatabase(NewConfig()),
    NewLogger(),
    NewCache(),
)

// 现在:声明依赖,自动注入✨
gontainer.NewFactory(func(db *Database, log *Logger) *UserService {
   
    return &UserService{
   db: db, log: log}
})

⚡ 核心亮点:简单到离谱

特性 说明 爽点
🎯 自动注入 按函数参数类型匹配依赖 不用写wire.go,不用跑go generate
🚀 懒加载 服务真正用到时才创建 启动快,内存省
🔄 生命周期 自动反向清理资源 defer级体验,容器级管理
🧩 零依赖 纯标准库+泛型 go.mod清爽到哭

💡 进阶玩法:不止于"自动注入"

1️⃣ 可选依赖?安排!

gontainer.NewFactory(func(metrics gontainer.Optional[*Metrics]) *API {
   
    if m := metrics.Get(); m != nil {
   
        api.WithMetrics(m) // 有就用,没有也不崩
    }
    return api
})

适合插件化架构:核心功能不依赖可选模块,解耦满分💯

2️⃣ 批量注入接口实现?也支持!

type Middleware interface {
    Process(http.Handler) http.Handler }

gontainer.NewFactory(func(mws gontainer.Multiple[Middleware]) *Router {
   
    for _, mw := range mws {
     // 所有实现Middleware的自动收集
        router.Use(mw)
    }
    return router
})

中间件、钩子、处理器…批量注册,优雅到像写配置🎨


🤔 个人锐评:它适合你吗?

推荐场景

  • 中小型微服务/CLI工具,追求启动速度
  • 团队不想维护复杂DI框架(比如google/wire
  • 希望依赖关系"看得见摸得着",调试友好

谨慎使用

  • 超大型单体应用(可能需要更细粒度的生命周期控制)
  • 需要循环依赖的场景(设计上就该避免🙅)

💬 深度看法:gontainer 的哲学是"约定优于配置"——你用函数签名声明依赖,它用反射帮你连线。这种"显式声明+隐式组装"的平衡,恰恰是Go语言"简单但不简陋"精神的体现。


🎯 30秒上手示例

package main

import "github.com/NVIDIA/gontainer/v2"

type DB struct{
    url string }
type Service struct{
    db *DB }

func main() {
   
    gontainer.Run(
        gontainer.NewFactory(func() *DB {
    
            return &DB{
   url: "postgres://local"} 
        }),
        gontainer.NewFactory(func(db *DB) *Service {
    
            return &Service{
   db: db}  // db自动注入!
        }),
        gontainer.NewEntrypoint(func(svc *Service) {
   
            // 直接用,爽!
        }),
    )
}

相关文章
|
1月前
|
存储 人工智能 开发者
AI Agent 越来越难迭代,你缺少的不是功能
还在担心 Token 消耗过多?还在纠结 Agent 难以优化?不改一行业务代码,LoongSuite Python 探针帮你把一次请求从头到尾捋顺:哪一步访问了什么模型、调用了什么工具、召回了哪些文档、花费了多少 token、上下文发生了什么变化。
198 27
|
18天前
|
人工智能 小程序 机器人
超详细!OpenClaw一键部署实操教程,快速上手不踩坑
OpenClaw是开源AI智能体,可处理文件、操控浏览器、接入钉钉等IM工具。本文详解阿里云三大一键部署方案(轻量服务器/计算巢/无影云电脑),2步完成部署,零代码配置,助你快速启用“数字员工”!
381 5
|
19天前
|
人工智能 开发者 C++
Claude Code 搞了个UltraPlan:Agent开始上云写代码了!
UltraPlan是Anthropic推出的AI编程新范式:将代码规划“动脑”环节移至云端,终端专注“动手”,实现不卡顿、可协作、灵活执行。支持精准评论、异步运行与多端同步,兼顾效率与隐私选择权。(239字)
228 5
|
19天前
|
人工智能 前端开发 IDE
Cursor 3.1 更新:智能体窗口终于「摊平」了,说话即编程!
Cursor 3.1重磅更新!平铺布局支持多智能体分屏协作,语音输入2.0实现高准度实时转写,新增分支预选防误操作,Diff跳转+文件筛选提升代码审查效率。真实场景驱动,丝滑体验拉满——懂开发者,更懂痛点。(239字)
259 0
|
18天前
|
人工智能 弹性计算 机器人
超详细!Hermes Agent一键部署实操教程,快速上手不踩坑
Hermes Agent是Nous Research开源的自主AI智能体,支持自进化、持久记忆与多平台接入。阿里云提供轻量服务器、计算巢、无影云电脑三大一键部署方案,最快两步完成,新手30分钟即可上手实操!
599 1
|
1月前
|
人工智能 安全 数据可视化
不止是聊天!深度解析OpenClaw“养龙虾”:技能扩展与多Agent协作
本文围绕 OpenClaw “养龙虾” 展开,解析其技能扩展与多 Agent 协作机制。作为 LLM 执行中间层,它通过可插拔技能为 AI 拓展工具调用与操作能力,借助多智能体分工协作完成复杂任务。文章揭示 AI 从单纯对话向自主执行、协同工作演进的核心趋势,展现智能体工程化落地的关键路径。
1302 7
|
2月前
|
人工智能 运维 API
OpenClaw部署难、成本高?不存在!阿里云一键部署方案+免费大模型配置教程
2026年顶流开源AI智能体OpenClaw,支持微信/钉钉/飞书等多平台,可执行文件管理、信息检索、流程自动化等真实任务。依托阿里云一键部署+免费大模型,零代码、10分钟、低成本即可拥有专属“AI数字员工”。
698 9
|
18天前
|
安全 JavaScript 前端开发
Burp Suite Professional 2026.4 发布 - 领先的 Web 渗透测试软件
Burp Suite Professional 2026.4 发布 - 领先的 Web 渗透测试软件
134 1
Burp Suite Professional 2026.4 发布 - 领先的 Web 渗透测试软件
|
18天前
|
人工智能 Linux Docker
Docker 部署 Open WebUI + Ollama 完整教程(Windows / Linux 通用)—— 打造自己的本地OpenAI
无需复杂配置!Docker一键部署Open WebUI+Ollama,Windows/Linux通用,新手也能轻松上手。无需依赖云端,打造专属本地OpenAI,实现可视化聊天交互,兼顾数据隐私,还附带常见问题排查,全程步骤清晰,快速拥有本地大模型平台!
828 0
Docker 部署 Open WebUI + Ollama 完整教程(Windows / Linux 通用)—— 打造自己的本地OpenAI
|
6天前
|
人工智能 Rust 开发工具
Zed 1.0正式发布:VS Code慌了?
Zed 1.0正式发布!这款用Rust打造、GPU加速的“游戏引擎级”编辑器,告别Electron瓶颈,实现毫秒级响应;原生集成AI多Agent协作,支持DeltaDB字符级同步。它不是VS Code替代品,而是对编辑器本质的重新定义——性能即自由,人机协作为常态。(239字)
103 1