【问题标题】:Wire google Inject with multi return from provider functionWire google Inject with multi return from provider 函数
【发布时间】:2022-12-01 16:57:16
【问题描述】:

按照 google wire 的例子,我们可以通过以下方式初始化事件结构

消息.go:

type Message string

func NewMessage() Message {
    //TBD    
}

事件.go

func NewEvent(g Message ) Event {
    return Event{Message : g}
}

type Event struct {
    Message message
}

func (e Event) Start() {
   fmt.Println(msg)
}

我们可以通过电线初始化:

func main() {
    e := InitializeEvent()
    e.Start()
}
    
func InitializeEvent() Event {
    wire.Build(NewEvent, NewMessage)
    return Event{}
}

有什么方法可以使用 init 函数返回多个值,但我们只需要一个返回值来注入,例如:

func NewMessage() (Message,error ){
    //TBD
}

或者

func NewMessage() (Message,Greeter) {
    //TBD
}

【问题讨论】:

    标签: go


    【解决方案1】:

    要声明具有多个返回值的函数,您需要将它们放在括号中:

    func NewMessage() (Message, error) {
        return Message(“TBD”), nil
    }
    

    编辑:你问的问题(你是否可以从 init 函数返回错误)在 Wire 教程的下一部分得到回答 - https://github.com/google/wire/tree/main/_tutorial#making-changes-with-wire

    【讨论】:

    • 谢谢,这是我的错字,问题是在 Wire 的 init 函数中只使用一个返回值(来自谷歌)
    • 我懂了。您只需要阅读本教程的下一部分,它完全涵盖了您的问题 - github.com/google/wire/tree/main/…
    • 请编辑您的回复,以便我将其作为答案,谢谢
    猜你喜欢
    • 2017-04-10
    • 2016-06-02
    • 1970-01-01
    • 2015-02-03
    • 1970-01-01
    • 2017-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多