Golang-Channel & Goroutine-基础篇

说到Go最精华的部分就是concurrency的部分了
包含的範围蛮广的,当初在看的时候也是看得满头包,但总结可以分成下列几个

GoroutineChannelPackage syncPackage runtime

新增Gorouting

只需要加上关键字go

go func()

Channel初始化

要使用make

chan:=make(chan Type, Cap)

Channel又可以分成

Buffered Channel 有着非同步的特性UnBuffered Channel 有着同步的特性
后面会解释到同步与非同步的特性

宣告channel最后总结是下列这样

unBufferedIntChan:=make(chan int)bufferedStringChan:=make(chan string, 100)

Channel读取&写入

channel可以分成三种类别
关键符号是 <-
比较好判断的方法就是看箭头指向哪

单向:写入channel(chan int<-int)单向:读取channel(<-chan int)双向:写入&读取channel(chan int)

而双向channel传入function时可以被转换成单向channel
但是单向channel回传没办法再转换成双向channel

Channel赋值&闭关

闭关channel,使用close(channel)

ch:=make(chan int)close(ch)

透过channel赋值跟一般宣告的方法一样,不过多上一个parameter可以判断channel是否已经闭关

ch:=make(chan int)val,ok:=<-chif ok{    log.Println(val)}

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章