draj30958 2016-10-03 07:45
浏览 63
已采纳

渠道有什么用?

When looking through some Go code I found the following:

  ch := make(chan int)

I looked up in a online tutorial how Go Channels work:

https://tour.golang.org/concurrency/2

But I find this example unclear.

Can someone give me a easy explanation and an example of the use of channels?

  • 写回答

2条回答 默认 最新

  • douliao1911 2016-10-03 12:44
    关注

    chan is a channel in Golang. In simple word you can think it as a box in which you put a item at one end and then pick it from other end.

    Unbuffered Channels

    enter image description here

    Buffered Channel

    enter image description here

    This is the small code I have written for you to understand channels. Now change order of go routines and see the outputs. Each time output may differ.

        package main
    
        import (
            "fmt"
            "time"
        )
    
        func main() {
            messages := make(chan int)
            go func() {
                time.Sleep(time.Second * 3)
                messages <- 1
            }()
            go func() {
                time.Sleep(time.Second * 2)
                messages <- 2
            }() 
            go func() {
                time.Sleep(time.Second * 1)
                messages <- 3
            }()
            go func() {
                for i := range messages {
                    fmt.Println(i)
                }
            }()
            go func() {
                time.Sleep(time.Second * 1)
                messages <- 4
            }()
            go func() {
                time.Sleep(time.Second * 1)
                messages <- 5
            }()
            time.Sleep(time.Second * 5)
        }
    

    For best understanding visit this blog where go routines and channels are described in GUI.

    Visit http://divan.github.io/posts/go_concurrency_visualize/

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路