翻译自 https://gobyexample.com/
Go by Example
Go is an open source programming language designed for building simple, fast, and reliable software.
Go by Example is a hands-on introduction to Go using annotated example programs. Check out the first example or browse the full list below.
Go by Example: Select
select
允许程序等待多个管道操作,使用select
来组合goroutine
和channel
是golang的一项重要的功能。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| package main
import "time" import "fmt"
func main() { c1 := make(chan string) c2 := make(chan string)
go func() { time.Sleep(time.Second * 1) c1 <- "one" }() go func() { time.Sleep(time.Second * 2) c2 <- "two" }() for i := 0; i < 2; i++ { select { case msg1 <- c1: fmt.Println("received", msg1)
case msg2 <- c2: fmt.Println("received", msg2) } } }
|
1 2 3 4 5 6
| $ time go run select.go received one received two
// 由于两个睡眠操作是并行执行的,所以执行时间并没有超过3秒 real 0m2.245s
|
原文链接:Go by Example: Select