Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "log"
- "math/rand"
- "strconv"
- )
- func worker(input <-chan string, output chan<- string) {
- defer close(output)
- bufer := make(map[string]bool)
- for data := range input {
- if data == ":reset" {
- bufer = make(map[string]struct{})
- }
- if _, has := bufer[data]; has {
- continue
- }
- bufer[data] = true
- output <- data
- }
- }
- func reader(data <-chan string, done chan<- struct{}) {
- defer close(done)
- for row := range data {
- log.Println("received", row)
- }
- }
- func main() {
- input := make(chan string)
- output := make(chan string)
- go worker(input, output)
- done := make(chan struct{})
- go reader(output, done)
- for i := 0; i < 10; i++ {
- data := strconv.Itoa(rand.Intn(10))
- log.Println("sent", data)
- input <- data
- }
- close(input)
- <-done
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement