常见模式之二:使用时顺序模式
定义
顾名思义,起初goroutine不管是怎么个先后顺序,等到要使用的时候,需要按照一定的顺序来,也被称为未来使用模式
使用场景
-
每个goroutine函数都比较独立,不可通过参数循环复用
-
任务各自独立,结果组合依赖顺序
示例
package mainimport ("fmt""time"
)func grepMySQL() <-chan string {res := make(chan string)go func() {time.Sleep(time.Millisecond * 30)res <- "grep data from MySQL"}()return res
}func grepSQLServer() <-chan string {res := make(chan string)go func() {time.Sleep(time.Millisecond * 10)res <- "grep data from SQLServer"}()return res
}func grepRedis() <-chan string {res := make(chan string)go func() {time.Sleep(time.Millisecond * 20)res <- "grep data from Redis"}()return res
}func main() {mysqlRes := grepMySQL()sqlServerRes := grepSQLServer()redisRes := grepRedis()// 数据排序规则是 redis -- mysql -- sqlServerresArr := []string{<-redisRes,<-mysqlRes,<-sqlServerRes,}fmt.Println(resArr)
}