35 lines
535 B
Go
35 lines
535 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
)
|
|
|
|
func main() {
|
|
ch1 := make(chan string)
|
|
ch2 := make(chan string)
|
|
|
|
// 模拟两个不同来源的“数据源”
|
|
go func() {
|
|
time.Sleep(1 * time.Second)
|
|
ch1 <- "result from ch1 (1s)"
|
|
}()
|
|
|
|
go func() {
|
|
time.Sleep(2 * time.Second)
|
|
ch2 <- "result from ch2 (2s)"
|
|
}()
|
|
|
|
fmt.Println("等待 ch1 或 ch2 的结果...(谁先来处理谁)")
|
|
|
|
select {
|
|
case v := <-ch1:
|
|
fmt.Println("收到 ch1:", v)
|
|
case v := <-ch2:
|
|
fmt.Println("收到 ch2:", v)
|
|
}
|
|
|
|
fmt.Println("main 结束")
|
|
}
|
|
|