日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

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

golang控制channel的出入口

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

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個全雙工的通道了,具體根據你需要編寫的業務來定,不過能限制的話盡可能限制住,養成良好的編碼習慣,應當從這些細節開始.

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 在线观看日韩av | 中文字幕在线观看日本 | 在线视频区 | 免费视频三区 | 日韩成人av在线播放 | 99久久精品国产麻豆演员表 | 污污网站免费观看 | 天天操夜夜草 | 欧美福利专区 | 一级性电影 | h黄视频| 亚洲精品电影在线观看 | 免费看黄a| 亚洲香蕉影院 | 欧美日韩国产精品综合 | 亚洲色图35p| 欧美午夜一区二区 | 国产精品美女久久久久人 | 日韩电影一区二区三区 | 天天干狠狠操 | 久久国产精品-国产精品 | 中文字幕日本在线 | 欧美精品h | 99在线视频精品 | 免费国产视频在线观看 | 曰韩三级 | 伊人成人在线视频 | 亚洲成人三区 | 中文一区在线 | 玖玖国产 | 99久久精品免费一区 | 精品国产乱码久久久久久影片 | 国产精品成人一区二区三区 | 欧美视频一二三区 | 久久99视频精品 | 99亚洲视频 | 国产精品视频专区 | 嫩草网址 | 日韩福利一区二区 | 欧美 亚洲 日本 | 日韩一卡二卡 |