V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
index90
V2EX  ›  Go 编程语言

Go 上的 DI 有什么比较好的解决方案

  •  
  •   index90 · 2019-03-04 09:19:00 +08:00 · 4863 次点击
    这是一个创建于 2084 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题^ 目前看过 dig 和 wire,有人用过吗?有什么坑分享一下。

    第 1 条附言  ·  2019-03-04 10:34:05 +08:00
    DI:依赖注入
    感谢 @50infivedays 提醒
    18 条回复    2019-03-05 17:29:14 +08:00
    shallyy
        1
    shallyy  
       2019-03-04 10:13:31 +08:00
    GoCD
    50infivedays
        2
    50infivedays  
       2019-03-04 10:21:51 +08:00
    直接写依赖注入不好吗 di 这个缩写也太模糊了
    ptyfork
        3
    ptyfork  
       2019-03-04 10:25:19 +08:00
    @50infivedays

    还好我回复的慢,差点把 DI 当成 CI 了。
    hanabi
        4
    hanabi  
       2019-03-04 10:30:56 +08:00 via iPhone
    facebook 也有个 inject 库
    SabaPing
        5
    SabaPing  
       2019-03-04 10:55:10 +08:00
    手动构造函数注入不用库
    php01
        6
    php01  
       2019-03-04 12:18:11 +08:00
    用 go 去用依赖注入?问号脸。。。
    Presbyter
        7
    Presbyter  
       2019-03-04 13:35:37 +08:00
    选择用 go 就是为了追求更高的性能。所以不用依赖注入。
    janxin
        8
    janxin  
       2019-03-04 14:12:20 +08:00
    dig 是用反射实现的,其实还行

    wire 是代码生成的,如果不是很复杂的项目,代码生成不如手工写了
    50infivedays
        9
    50infivedays  
       2019-03-04 14:17:19 +08:00
    @ptyfork 我也想了一下 要不是提到了 wire 我也以为是 ci 的什么变种
    zjsxwc
        10
    zjsxwc  
       2019-03-04 16:35:10 +08:00
    有没有基于 xml 文件的注入?

    wire 的方式看起来不爽啊
    jlkm2010
        11
    jlkm2010  
       2019-03-04 16:37:26 +08:00
    建议换成 Java
    fairyto2
        12
    fairyto2  
       2019-03-04 16:44:19 +08:00 via iPhone
    还以为在说数据智能╮( ̄▽ ̄"")╭
    Cbdy
        13
    Cbdy  
       2019-03-04 16:44:29 +08:00   ❤️ 2
    @Presbyter 依赖注入和性能有什么关系?
    rockyou12
        14
    rockyou12  
       2019-03-04 16:47:43 +08:00
    依赖注入有啥影响性能的……大部分启动时候扫一下就行了
    reus
        15
    reus  
       2019-03-04 17:20:44 +08:00
    @php01 官方博客都教你用 wire,有什么问题?
    Presbyter
        16
    Presbyter  
       2019-03-04 17:47:07 +08:00
    @Cbdy go 的依赖注入( dig )用的反射实现的,反射性能不佳。
    当然,你要是能做到只在程序初始加载时做一次注入,那就无所谓了。
    sampeng
        17
    sampeng  
       2019-03-04 22:59:27 +08:00 via iPhone
    出门左转是 java … go 需要啥依赖注入…
    zjsxwc
        18
    zjsxwc  
       2019-03-05 17:29:14 +08:00
    如果不用 xml 配置注入的话,用注解注入我也喜欢。

    发现这个 facebook 的项目,它通过注解来注入比 wire 那种手动写一堆 NewXXXXX 函数来注入更自然:

    https://github.com/facebookgo/inject
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2884 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 03:52 · PVG 11:52 · LAX 19:52 · JFK 22:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.