Go Concurrency Part 2
Parallel Search
type search func(query string) string
func getSearch(kind string) search {
return func(query string) string {
// Optional: implement actual HTTP requests.
time.Sleep(time.Duration(rand.Intn(100)) * time.Millisecond)
return fmt.Sprintf("%s result for %q\n", kind, query)
}
}
var (
web = getSearch("web")
image = getSearch("image")
video = getSearch("video")
)func google(query string) (results []string) {
ch := make(chan string)
go func() {
ch <- web(query)
}()
go func() {
ch <- image(query)
}()
go func() {
ch <- video(query)
}()
for i := 0; i < 3; i++ {
r := <-ch
results = append(results, r)
}
return results
}Search with Timeout
Distributed Search
Last updated