以Google wire为例,我们可以通过以下方式初始化事件 struct

留言:对不起.

type Message string

func NewMessage() Message {
    //TBD    
}

Event.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,err或 ){
    //TBD
}

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

推荐答案

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

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

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

Go相关问答推荐

如何使用Docker Compose配置Go,使main. go文件位于/CMD文件夹中

带有条件的for循环中缺少RETURN语句

为什么Slices包中的函数定义Slice参数的类型参数?

Go:拆分一个由逗号分隔的键/值对字符串,并在给定的键/价值对中嵌入可能的逗号

这是go语言gin提供的关于TypeEngine和RouterGroup的问题

使用 goroutine 比较 Golang 中的两棵树是等价的

如何根据地址和大小打印字符串

Golang 发送Post请求出现400错误

Github Actions Go lambda 项目不同的 sha256sums

如何在 fyne-io/fyne 中设置文本的字母间距?

由于 main.go 文件中的本地包导入导致构建 docker 容器时出错

如何在 Golang 中打印 2 列表?

Apache Beam 在 Go 中从 PCollection 中 Select 前 N 行

使用 ssh 从私有 gilab 仓库导入一个 go 项目:未知修订

当函数返回一个函数时,为什么 Go 泛型会失败?

Golang 工作池实现意外工作

使用 oklog/run 来自 Go 编译器的错误(无值)用作值

如何使用 context.WithCancel 启动和停止每个会话的心跳?

map和struct golang的合并

即使没有竞争条件也没有得到任何输出