در جست و جوی خود
27.آموزش GO با مثال(Select)

دستور select در GO این امکان را به شما میدهدکه روی عملیات کانال چندگانه بتوانید زمان گذاری کنید.ترکیب کردن goroutineها و کانالها با select یک ویژگی قدرتمند Go است.
package main
import "time"
import "fmt"
func main() {برای مثال ما select را بر روی دو کانالمان اعمال مکنیم.
c1 := make(chan string)
c2 := make(chan string)هر کانال یک مقدار را پس از گذری از زمان دریافت میکند , به عنوان مثال برای شبیه سازی . عملیات های مسدود سازی RPC در goroutine ها همزمان اجرا میشوند.
go func() {
time.Sleep(1 * time.Second)
c1 <- "one"
}()
go func() {
time.Sleep(2 * time.Second)
c2 <- "two"
}()ما از select برای منتظر گذاشتن هردوی این مقادیر به صورت همزمان استفاده میکنیم , هرکدام از آنها که نوبت آن میرسد را چاپ کنیم.
for i := 0; i < 2; i++ {
select {
case msg1 := <-c1:
fmt.Println("received", msg1)
case msg2 := <-c2:
fmt.Println("received", msg2)
}
}
}ما ابتدا مقدار "one" و سپس "two" به صورت جداگانه دریافت میکنیم.
$ time go run select.go
received one
received twoتوجه داشته باشید که زمان اجرای کل فقط~2 ثانیه است زیرا هر دو 1 و 2 ثانیه Sleeps همزمان اجرا میشوند.
real 0m2.245s<<هدایت کانال----------------------------------------زمان تأخیر>>
مطلبی دیگر از این انتشارات
7.آموزش GO با مثال (شرط switch)
مطلبی دیگر از این انتشارات
12.آموزش GO با مثال (توابع)
مطلبی دیگر از این انتشارات
16.آموزش GO با مثال(بازگشتی ها)