我有两个通道,首先给我一些字符串,我需要将其过滤为相同的值,然后将结果发送到第二个通道
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)