假设我有一个go程序,它执行一个长时间运行的作业(通常作为一个go例程),其中有许多步骤,每一步都依赖于最后一步的完成,即
A -> B -> C -> D
一般来说,我这样做的方式是让A()
在其函数结束时调用B()
,以此类推。switch语句?但是我们怎么决定操作的顺序呢?
谢谢。
这是好的做法,即嵌套函数吗?是否有一种更清晰的方法来做到这一点,从而更容易在代码中阅读?我不太确定是否有其他方法。
如果我想在整个"链"中传递一个context.CancelFunc
,以便我可以取消a和B之间或B和C之间的过程,等等,该怎么办?
这样做的一种方法是实现Pipeline模式,其中所有阶段都通过通道连接,如本文详细描述的那样https://go.dev/blog/pipelines
每个阶段有任意数量的入站和出站通道,除了第一阶段和最后阶段只有出站或入站通道,分别。第一阶段有时被称为源或源生产商;最后一个阶段,接收器或消费者。