Heim >Backend-Entwicklung >Golang >Über die typische Verwendung von Golang Select

Über die typische Verwendung von Golang Select

藏色散人
藏色散人nach vorne
2021-05-08 11:56:261988Durchsuche

Die folgende Tutorial-Kolumne von golang wird Ihnen die typische Verwendung von Golang Select vorstellen. Ich hoffe, dass es Freunden in Not hilfreich sein wird!

Über die typische Verwendung von Golang Select

Code

package main

import (
    "fmt"
    "time"
)

func chanTest(ch chan int) {

    for { //select外层需要循环        select {        case value, ok := <-ch:
            fmt.Println(value, ok, time.Now())            if ok == false {
                fmt.Println("chan已经关闭", time.Now()) //select要自己判断退出,如果是for..range 形式,在读取完了关闭的chanel后,退出循环
                return
            }        default:
            fmt.Println("chan 空了", time.Now())            time.Sleep(time.Second * 5) //分支的处理会阻塞整个select
        }
    }
}

func main() {

    var ch = make(chan int, 100)    go chanTest(ch)

    ch <- 1
    ch <- 2
    time.Sleep(time.Second * 2)
    ch <- 3
    ch <- 4

    time.Sleep(time.Second)    close(ch)    for {        time.Sleep(time.Second)
    }
}

Es ist zu beachten, dass die Daten, die in den Kanal eingegeben wurden, verworfen werden, wenn der Kanal voll ist

Das obige ist der detaillierte Inhalt vonÜber die typische Verwendung von Golang Select. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen