小编baz*_*a04的帖子

如何比较 Go 中通道的值

我有两个通道,首先给我一些字符串,我需要将其过滤为相同的值,然后将结果发送到第二个通道

func main() {
    c := make(chan string, 5)
    o := make(chan string, 5)
    arr := []string{"aa", "ab", "ab", "bb", "bb", "ba", "cc"}
    for _, v := range arr {
        c <- v
        go removeDuplicates(c, o)
        time.Sleep(1 * time.Second)
        fmt.Println("output: ", <-o)
    }
}

func removeDuplicates(cIn, cOut chan string) {
   last := ""
   for cur, isOpen := <-cIn; isOpen; {
      if cur != last {
        fmt.Printf("val: %s, last: %s\n", cur, last) 
        last = cur
        cOut <- cur
        //close(cOut)
      }
   } …
Run Code Online (Sandbox Code Playgroud)

concurrency channel go goroutine

3
推荐指数
1
解决办法
2472
查看次数

标签 统计

channel ×1

concurrency ×1

go ×1

goroutine ×1