日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

Golang make chan 第二个参数(size)

發(fā)布時(shí)間:2025/3/15 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Golang make chan 第二个参数(size) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

說(shuō)明

func make(t Type, size ...IntegerType) Type

指出該值在同一時(shí)刻最多可以容納 size 個(gè)元素值。

如果我們發(fā)送給該通道的元素值未被取走,那么該通道最多可以暫存(或者說(shuō)緩沖)size 個(gè)元素值。

當(dāng)發(fā)送第size +1個(gè)元素值后, 會(huì)造成當(dāng)前Goroutine的堵塞(在chan<-時(shí)會(huì)卡住,等chan有空間時(shí)才可以<-并且進(jìn)行后面的代碼)

示例

代碼

func HelloMakeChanSize() {size := 0c1 := make(chan int, size)go func() {for i := 0; i < 4; i++ {val := i*10 + 7fmt.Println(time.Now(), "<- ", val, "at", i)c1 <- i*10 + 7}c1 <- 0}()time.Sleep(time.Second * 3)fmt.Println("After Sleep")for val := range c1 {fmt.Println(time.Now(), "receive:", val)if val == 0 {break}} }

c1 := make(chan int,size)?中的size修改為不同值, 會(huì)有不同的輸出效果

無(wú)size 或 size=0 時(shí)的輸出結(jié)果

第一次c1<-時(shí), 由于沒(méi)有立刻被取走func就會(huì)堵塞住,等3秒后c1被讀取才進(jìn)行后面的代碼

2019-05-17 14:57:29.2314327 +0800 CST m=+0.003910401 <- 7 at 0 After Sleep 2019-05-17 14:57:32.2321627 +0800 CST m=+3.004754901 receive: 7 2019-05-17 14:57:32.2321627 +0800 CST m=+3.004754901 <- 17 at 1 2019-05-17 14:57:32.2321627 +0800 CST m=+3.004754901 <- 27 at 2 2019-05-17 14:57:32.2321627 +0800 CST m=+3.004754901 receive: 17 2019-05-17 14:57:32.2321627 +0800 CST m=+3.004754901 receive: 27 2019-05-17 14:57:32.2321627 +0800 CST m=+3.004754901 <- 37 at 3 2019-05-17 14:57:32.2321627 +0800 CST m=+3.004754901 receive: 37 2019-05-17 14:57:32.2321627 +0800 CST m=+3.004754901 receive: 0

size=1時(shí)的輸出結(jié)果

第二次c1<-時(shí),由于第一個(gè)沒(méi)有取走, 會(huì)堵塞

2019-05-17 14:57:57.7795593 +0800 CST m=+0.004894501 <- 7 at 0 2019-05-17 14:57:57.819622 +0800 CST m=+0.044958701 <- 17 at 1 After Sleep 2019-05-17 14:58:00.7799573 +0800 CST m=+3.005407001 receive: 7 2019-05-17 14:58:00.7799573 +0800 CST m=+3.005407001 receive: 17 2019-05-17 14:58:00.7799573 +0800 CST m=+3.005407001 <- 27 at 2 2019-05-17 14:58:00.7799573 +0800 CST m=+3.005407001 <- 37 at 3 2019-05-17 14:58:00.7799573 +0800 CST m=+3.005407001 receive: 27 2019-05-17 14:58:00.7799573 +0800 CST m=+3.005407001 receive: 37 2019-05-17 14:58:00.7799573 +0800 CST m=+3.005407001 receive: 0

size=3時(shí)的輸出結(jié)果

2019-05-17 14:58:24.7116812 +0800 CST m=+0.004888401 <- 7 at 0 2019-05-17 14:58:24.7449182 +0800 CST m=+0.038126701 <- 17 at 1 2019-05-17 14:58:24.7449182 +0800 CST m=+0.038126701 <- 27 at 2 2019-05-17 14:58:24.7449182 +0800 CST m=+0.038126701 <- 37 at 3 After Sleep 2019-05-17 14:58:27.7108697 +0800 CST m=+3.004191401 receive: 7 2019-05-17 14:58:27.7108697 +0800 CST m=+3.004191401 receive: 17 2019-05-17 14:58:27.7108697 +0800 CST m=+3.004191401 receive: 27 2019-05-17 14:58:27.7108697 +0800 CST m=+3.004191401 receive: 37 2019-05-17 14:58:27.7108697 +0800 CST m=+3.004191401 receive: 0

?

總結(jié)

以上是生活随笔為你收集整理的Golang make chan 第二个参数(size)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。