跳至正文
Wener Notes

wire

约 1 分钟阅读
标签:IoC

项目进入维护状态

    • Compile-time DI
    • 编译时生成 DI 逻辑
      • 逻辑清晰明确
    • 不是 IoC 容器
      • 透明 - IoC 容器是一个不透明的盒子
  • 替代
    • uber , dig
bash
go install github.com/google/wire/cmd/wire@latest
main.go
package main

func main() {
    e,err := InitializeEvent()
    if err != nil {
        fmt.Printf("failed to create event: %s\n", err)
        os.Exit(2)
    }
    e.Start()
}
wire.go
//+build wireinject

func InitializeEvent() Event {
    wire.Build(NewEvent, NewGreeter, NewMessage)
    return Event{}
}
wire_gen.go
// 生成的内容
func InitializeEvent() Event {
    message := NewMessage()
    greeter := NewGreeter(message)
    event := NewEvent(greeter)
    return event
}

关联信息

反向链接、本文链接的其他页面和外部资料。

反向链接

  • fx
    笔记 · wire

    uber-go/fx · 基于反射的动态 IoC 容器 · 内部为 uber-go/dig - DI · fx.Supply 不能直接提供 interface · Go 类型检测不到, 使用 constructor 返回 · fx.In 和 fx.Out 要求字段 exported

  • Go Awesome
    笔记 · wire

    https://go-proverbs.github.io/ · mux · chi - ⭐️ · gin, mux · ORM · gorm - ⭐️ · 基于反射 · 目前 Go 里实现最为优美的 ORM · XORM 被 gogs 和 gitea 使用,是 gogs 原作者开发 - 但认为比不上 gorm

站内链接

  • fx
    笔记 · fx

    uber-go/fx · 基于反射的动态 IoC 容器 · 内部为 uber-go/dig - DI · fx.Supply 不能直接提供 interface · Go 类型检测不到, 使用 constructor 返回 · fx.In 和 fx.Out 要求字段 exported

参考资料

GitHub1 条
最近更新commit 84163d5编辑