无缓冲区的注意事项
參考代碼
func main(){// 錯(cuò)誤寫(xiě)法// ch1 := make(chan string)// ch1 <- "test"// // 沒(méi)有緩沖區(qū),就會(huì)一直阻塞,寫(xiě)不進(jìn)去,生產(chǎn)者和消費(fèi)者要其中一個(gè)一定要放在協(xié)程中// data,ok = <- ch1// // 不行// if ok{// fmt.Println("接收成功",data)// }else{// fmt.Println("接收失敗")// }// 正確寫(xiě)法ch1 := make(chan string)go func(){ch1 <- "消費(fèi)者和生產(chǎn)者其必須有一個(gè)放在協(xié)程里面"defer close(ch1)}()select{//阻塞case v,ok:= <- ch1:if ok{fmt.Println("無(wú)緩沖區(qū)輸出值",v)}else{fmt.Println("無(wú)法讀取無(wú)緩沖區(qū)的值")}} }輸出結(jié)果
無(wú)緩沖區(qū)輸出值 消費(fèi)者和生產(chǎn)者其必須有一個(gè)放在協(xié)程里面總結(jié)
對(duì)于無(wú)緩沖區(qū)的管道,生產(chǎn)者和消費(fèi)者必須有一個(gè)放在協(xié)程中。
轉(zhuǎn)載于:https://www.cnblogs.com/MyUniverse/p/11578320.html
總結(jié)
- 上一篇: defer func(参数){}
- 下一篇: 实现一个正则表达式引擎in Python