美文网首页
channel对传输值的影响

channel对传输值的影响

作者: 快感炮神 | 来源:发表于2020-03-01 16:33 被阅读0次
package main

import (
    "fmt"
    "time"
)

// Counter 计数器类型
type Counter struct {
    count int
}

// var mapChan = make(chan map[string]Counter, 1)
var mapChan = make(chan map[string]*Counter, 1)

func main() {
    syncChan := make(chan struct{}, 2)
    // 发送
    go func() {
        countMap := map[string]*Counter{
            // "count": Counter{},
            "count": &Counter{},
        }
        for i := 0; i < 5; i++ {
            mapChan <- countMap
            time.Sleep(time.Millisecond)
            fmt.Println("the count map:%v count:%d. [sender]\n", countMap, countMap["count"].count)
        }
        close(mapChan)
        syncChan <- struct{}{}
    }()
    // 接收
    go func() {
        for {
            if elem, ok := <-mapChan; ok {
                counter := elem["count"]
                counter.count++
            } else {
                break
            }
        }
        fmt.Println("stopped. [receiver]")
        syncChan <- struct{}{}
    }()
    <-syncChan
    <-syncChan
}

相关文章

网友评论

      本文标题:channel对传输值的影响

      本文链接:https://www.haomeiwen.com/subject/yxickhtx.html