前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >golang 使用 Context 实现 IoC 容器

golang 使用 Context 实现 IoC 容器

作者头像
老麦
发布2022-12-24 09:28:58
3210
发布2022-12-24 09:28:58
举报
文章被收录于专栏:Go与云原生Go与云原生

参考文章 控制反转(IoC)与依赖注入(DI) 指出了依赖注入可以降低程序的耦合性。能更好的拆分功能与基础设施。

那么在 golang 中又怎么实现呢?

代码地址 golang-context-ioc.go

  1. 实现了一个 MysqlDriver 实现我们所有的数据存取操作。并在全局域中实例化了一个对象 my
  2. main.go 中创建了一个 ctx := context.Background()
  3. 使用使用 ctx 作为 IoC 容器, 使用 db 作为 key 将 my 对象存放进去。
  4. save(ctx) 正常传递 ctx
  5. save() 函数内部, 使用 context 特性, 将 db 对应的对象取出来, 并进行 db.(*MysqlDriver) 断言,还原成 my 实例对象。
  6. 使用 my 的方法, 例如 my.Save() 进行数据存储操作。

至此, context 实现了 IoC 容器的功能。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 熊猫云原生Go 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档