2020-07-26 17:09:05 +08:00
|
|
|
package main
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"fmt"
|
|
|
|
|
|
2020-07-29 22:34:37 +08:00
|
|
|
"zero/core/mr"
|
2020-07-26 17:09:05 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
var (
|
|
|
|
|
persons = []string{"john", "mary", "alice", "bob"}
|
|
|
|
|
friends = map[string][]string{
|
|
|
|
|
"john": {"harry", "hermione", "ron"},
|
|
|
|
|
"mary": {"sam", "frodo"},
|
|
|
|
|
"alice": {},
|
|
|
|
|
"bob": {"jamie", "tyrion", "cersei"},
|
|
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
|
var allFriends []string
|
2020-07-29 22:34:37 +08:00
|
|
|
for v := range mr.Map(func(source chan<- interface{}) {
|
2020-07-26 17:09:05 +08:00
|
|
|
for _, each := range persons {
|
|
|
|
|
source <- each
|
|
|
|
|
}
|
2020-07-29 22:34:37 +08:00
|
|
|
}, func(item interface{}, writer mr.Writer) {
|
2020-07-26 17:09:05 +08:00
|
|
|
writer.Write(friends[item.(string)])
|
2020-07-29 22:34:37 +08:00
|
|
|
}, mr.WithWorkers(100)) {
|
2020-07-26 17:09:05 +08:00
|
|
|
allFriends = append(allFriends, v.([]string)...)
|
|
|
|
|
}
|
|
|
|
|
fmt.Println(allFriends)
|
|
|
|
|
}
|