Alireza Shamsi
Alireza Shamsi
خواندن ۱ دقیقه·۶ سال پیش

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

<<هدایت کانال----------------------------------------زمان تأخیر>>

آموزش go با مثالgolangselect in go
در جست و جوی خود
مستندات زبان گولنگ به پارسی(GO)
شاید از این پست‌ها خوشتان بیاید