【发布时间】:2015-11-05 17:08:16
【问题描述】:
我是 Go 新手,遇到了这个“设计”问题。
我有一个通过通道传递作业的主程序。每个作业最终都会在单独的“worker”包中定义的函数中结束。作业是结构。
现在我希望调用每个函数,通过“结果”通道将结果作为通用结构返回。但是包不知道我在 main 中的结构定义,所以我无法定义它。
package main
type resultEvent struct {
name string
desc string
}
然后在工作包中:
package worker
func Test() {
result := &resultEvent{name: "test"}
}
当然这个想法是最终将这个结果发送到一个通道,但即使这个简单的例子也行不通,因为工人不知道 resultEvent。 这样做的正确方法是什么?
更新:
需要注意的是会有很多worker包,做不同的事情。类似于“插件”(只是根本不可插入)。 我不想在每个 go-file 中定义一个冗余结构,然后必须维护可能超过 50 个非常不同的工作包。
我正在寻找构建此结构的正确方法,因此我可以为所有工作包重用一个结构。
【问题讨论】:
-
反对票有什么解释吗?
标签: go