Heim >Backend-Entwicklung >Golang >Über die typische Verwendung von Golang Select
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!
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!