欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

go語言編程之select信道處理示例詳解

 更新時間:2022年04月14日 08:27:29   作者:Jeff的技術棧  
這篇文章主要為大家介紹了go語言編程之select信道處理示例詳解,<BR>有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪

select信道處理

注意:有default就不會阻塞

package main
func main() {
	var chan1 = make(chan int)
	var chan2 = make(chan int)
	select {
	case <-chan1:
		// 如果chan1成功讀到數據,則進行該case處理語句
	case chan2:
		// 如果chan2成功讀到數據,則進行該case處理語句
	default:
		// 如果上面都沒有成功,則進行該case處理語句
	}
}

fibonacci數列監(jiān)聽

//fibonacci     1 1 2 3 5 8
package main
import (
	"fmt"
)
//ch只寫,quit只讀
func fibonacci(ch chan<- int, quit <-chan bool) {
	x, y := 1, 1
	for {
		//監(jiān)聽channel數據的流動
		select {
		case ch <- x:
			x, y = y, x+y
		case flag := <-quit:
			fmt.Println("flag = ", flag)
			return
		}
	}
}
func main() {
	ch := make(chan int)    //數字通信
	quit := make(chan bool) //程序是否結束

	//消費者,從channel讀取內容
	//新建協(xié)程
	go func() {
		for i := 0; i < 8; i++ {
			num := <-ch
			fmt.Println(num)
		}
		//可以停止
		quit <- true
	}() //別忘了()
	//生產者,產生數字,寫入channel
	fibonacci(ch, quit)

}


1
1
2
3
5
8
13
21
flag =  true

select監(jiān)聽協(xié)程

func main()  {
	//創(chuàng)建一個有緩存的channel
	ch := make(chan int, 0)
	//len(ch)緩沖區(qū)剩余數據個數, cap(ch)緩沖區(qū)大小
	//新建協(xié)程
	go func() {
		for i := 0; i < 10; i++ {
			ch <- i //往chan寫內容
		}
	}()
	ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
	go func(ctx context.Context) {
		ticker := time.NewTicker(1 * time.Second)
		for _ = range ticker.C {
			select {
			case <-ctx.Done():
				fmt.Println("child process interrupt...")
				return
			default:
				fmt.Printf("send message: %d\n", <-ch)
			}
		}
	}(ctx)
	defer close(ch)
	defer cancel()
	select {
	case <-ctx.Done():
		time.Sleep(1 * time.Second)
		fmt.Println("main process exit!")
	}
}

以上就是go語言編程之select信道處理示例詳解的詳細內容,更多關于go語言select信道處理 的資料請關注腳本之家其它相關文章!

相關文章

  • Go創(chuàng)建Grpc鏈接池實現過程詳解

    Go創(chuàng)建Grpc鏈接池實現過程詳解

    這篇文章主要為大家介紹了Go創(chuàng)建Grpc鏈接池實現過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • Golang初始化MySQL數據庫方法淺析

    Golang初始化MySQL數據庫方法淺析

    這篇文章主要介紹了Golang初始化MySQL數據庫的方法,數據庫的建立第一步即要初始化,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2023-05-05
  • 一文帶你掌握Go語言中的文件讀取操作

    一文帶你掌握Go語言中的文件讀取操作

    這篇文章主要和大家分享一下Go語言中的文件讀取操作,文中的示例代碼講解詳細,對我們學習Go語言有一定的幫助,需要的小伙伴可以參考一下
    2022-12-12
  • Go設計模式之單例模式圖文詳解

    Go設計模式之單例模式圖文詳解

    單例模式是一種創(chuàng)建型設計模式,讓你能夠保證一個類只有一個實例,并提供一個訪問該實例的全局節(jié)點,本文就通過圖文給大家介紹一下Go的單例模式,需要的朋友可以參考下
    2023-07-07
  • go?分布式鎖簡單實現實例詳解

    go?分布式鎖簡單實現實例詳解

    這篇文章主要為大家介紹了go?分布式鎖簡單實現實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • Go語言中錯誤處理的方式總結

    Go語言中錯誤處理的方式總結

    這篇文章會結合?errors?中的函數,來討論一下?Go?中常見的?error?使用方式,文中的示例代碼講解詳細,具有一定的學習價值,需要的可以了解一下
    2023-07-07
  • Golang中反射的常見用法分享

    Golang中反射的常見用法分享

    本篇文章主要為大家詳細介紹一些Go語言中常見的反射用法,涵蓋了常見的數據類型的反射操作。文中的示例代碼講解詳細,感興趣的可以了解一下
    2023-01-01
  • go benchmark 基準測試詳解

    go benchmark 基準測試詳解

    這篇文章主要介紹了go benchmark 基準測試詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • 一文深入探索Go語言中的循環(huán)結構

    一文深入探索Go語言中的循環(huán)結構

    在編程中,循環(huán)結構扮演著重要的角色,它使我們能夠有效地重復執(zhí)行特定的代碼塊,以實現各種任務和邏輯,在Go語言中,for 是 Go 中唯一的循環(huán)結構,本文將深入探討Go語言中的for循環(huán)類型以及它們的用法
    2023-08-08
  • Go 循環(huán)結構for循環(huán)使用教程全面講解

    Go 循環(huán)結構for循環(huán)使用教程全面講解

    這篇文章主要為大家介紹了Go 循環(huán)結構for循環(huán)使用全面講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10

最新評論