در جست و جوی خود
26.آموزش GO با مثال(هدایت کانال)
وقتی شما از کانالها به عنوان پارامترهای تابعی استفاده میکنید،میتونید مشخص کنید که کانال برای ارسال و دریافت مقادیر است. این خاصیت نوع-ایمنی برنامه را افزایش میدهد .
package main
import "fmt"
تابع ping
تنها یک کانال برای ارسال مقادیر را قبول میکند. اگر بخواهیم سعی کنیم که دریافت را روی این کانال داشته باشیم میتونه یک خطای زمان اجرا رو پدید بیاره.
func ping(pings chan<- string, msg string) {
pings <- msg
}
تابع pong
کانال اول برای دریافت مقادیر(pings
) و کانال دوم را برای ارسال مقادیر (pongs
) قبول میکند.
func pong(pings <-chan string, pongs chan<- string) {
msg := <-pings
pongs <- msg
}
func main() {
pings := make(chan string, 1)
pongs := make(chan string, 1)
ping(pings, "passed message")
pong(pings, pongs)
fmt.Println(<-pongs)
}
$ go run channel-directions.go
passed message
<<هماهنگ سازی کانال-------------------------------------- Select >>
مطلبی دیگر از این انتشارات
10.آموزش GO با مثال(آرایه maps)
مطلبی دیگر از این انتشارات
23.آموزش GO با مثال(کانالها)
مطلبی دیگر از این انتشارات
3.آموزش GO با مثال (متغیر ها)