无缓冲区的注意事项
參考代碼
func main(){// 錯誤寫法// ch1 := make(chan string)// ch1 <- "test"// // 沒有緩沖區,就會一直阻塞,寫不進去,生產者和消費者要其中一個一定要放在協程中// data,ok = <- ch1// // 不行// if ok{// fmt.Println("接收成功",data)// }else{// fmt.Println("接收失敗")// }// 正確寫法ch1 := make(chan string)go func(){ch1 <- "消費者和生產者其必須有一個放在協程里面"defer close(ch1)}()select{//阻塞case v,ok:= <- ch1:if ok{fmt.Println("無緩沖區輸出值",v)}else{fmt.Println("無法讀取無緩沖區的值")}} }輸出結果
無緩沖區輸出值 消費者和生產者其必須有一個放在協程里面總結
對于無緩沖區的管道,生產者和消費者必須有一個放在協程中。
轉載于:https://www.cnblogs.com/MyUniverse/p/11578320.html
總結
- 上一篇: defer func(参数){}
- 下一篇: OPGL+GLFW+GLEW配置详细步骤