Go语言示例 --13Channels

1. Channels

Channels是一个阻塞操作,只有在通信双方写入/读完变量,channels后续的操作才能执行。

通过make(chan type)创建channel。使用close()函数关闭channel,或者通过子函数执行完毕后关闭channel。

channels.go源代码介绍了channels的使用。


采用close()函数关闭channel
package main
import "fmt"

func main(){
    ch := make(chan int, 10)
    ch <- 11
    ch <- 12

    close(ch)

    for x := range ch {
        fmt.Println(x)
    }
}

解释执行。

$ go run channels.go
11
12

采用子函数关闭channel

函数执行完毕,阻塞结束,并发送一个signal。

package main
import "fmt"

func main() {
    ch := make(chan string)

    go func(){ 
        ch <- "I finished it!"
    }()

    msg := <-ch
    fmt.Println(msg)
}

解释执行。

$ go run channels.go
I finished it!


参考资料

[1. Go语言的Channel例子] https://play.golang.org/p/Kd8B0T_JGK
[2. 通过Channel阻塞函数,直到执行完毕发送信号] https://www.jianshu.com/p/24ede9e90490

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值