多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > golang控制channel的出入口

golang控制channel的出入口

來源:程序員人生   發布時間:2015-05-25 08:47:09 閱讀次數:3690次

golang控制channel的出入口

我們常常使用channel來在多個goroutine之間做數據通訊,但是chan作為函數的入參我們應當怎樣寫呢?或許有人覺得這個問題比較傻,不過這個還真的是我今天才知道的.

首先我們看看下面的代碼:

func main() { c := make(chan int) go in(c) go out(c) time.Sleep(time.Second) } func in(c chan int) { for i := 0; i < 10; i++ { c <- i } close(c) fmt.Println("int end") } func out(c chan int) { for i := range c { fmt.Printf("%d ", i) } fmt.Println("out end") }

這個不過就是在in方法里面給channel插入10個數字,然后在out方法里面把這是個數字順次取出來(是的你沒看錯,range可以用于從channel中取值).

如果我想把out方法交給第3方去實現,但是我又需要輸出的的數字順序嚴格依照我的順序來,也就是說我需要顯式的規定out方法只能從channel中取值,不能給channel中賦值,這個時候我們應當依照下面的方式去寫

type channelFunces interface{ Out(c <-chan int) }

1旦在實現這個out方法的時候向chan里面插入值的話,就會連編譯都不過(感嘆go男的嚴謹,大神的設計就是經典),從而我們可以通過方法的入參來限制通道的數據進出方向,那末如果想限制chan只能插入不能讀出應當怎樣寫呢?

type channelFunces interface{ Out(c <-chan int) In(c chan<- int) }

基于這類寫法我們可以在設計進程中來避免chan暴露出去數據的進出權限沒法控制,固然你在參數上面不寫”<-“的話,這個通道就是1個全雙工的通道了,具體根據你需要編寫的業務來定,不過能限制的話盡可能限制住,養成良好的編碼習慣,應當從這些細節開始.

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 动画毛片 | 欧美视频三区 | 超乳w真性中出し冲田杏梨101 | 亚洲国产精品欧美综合 | 亚洲精品 欧美 | 亚洲欧美国产毛片在线 | 最近中文免费字幕在线播放 | 在线观看国产福利 | 天天涩综合 | 国产成人经典三级在线观看 | 亚洲日本网站 | 日本免费一区二区三区看片 | www久| 亚洲毛片视频 | h在线观看免费 | 久久99精品国产99久久 | 精品精品国产高清a毛片 | 国产精品第8页 | 毛片色毛片18毛片美女 | 国产爽爽视频 | 国产精品视频久久 | 日本校园春色 | 久久免费久久 | 中日韩欧美中文字幕毛片 | 亚洲欧美日韩另类精品一区二区三区 | 天堂日韩| 麻豆影视免费观看 | 亚洲免费在线观看视频 | 男女做爽爽免费视频 | 日本在线观看一区二区三区 | 亚洲国产成人久久笫一页 | 欧美色欧美色 | 羞羞动漫免费观看 | 韩国hd高清xxx | 欧美一二区 | 韩国三级午夜理伦三级99 | 爱爱三级 | 一二三四视频免费观看在线看 | 亚洲a级 | 国产日韩欧美一区二区三区综合 | 色人阁在线 |