در جست و جوی خود
23.آموزش GO با مثال(کانالها)
کانالها لوله هایی هستند که به طور همزمان goroutine ها را به یکدیگر متصل میکنند. شما میتونید یک مقدار به وسیله کانالها از یک goroutine ارسال کنید و مقداررو از طریق یک goroutine دیگر دریافت کنید.
package main
import "fmt"
func main() {
یک کانال جدید رو به وسیله (make(chan val-type
میسازند. نوع کانالها به وسیله نوع مقادیری که آنها حمل میکنند تعیین میشود.
messages := make(chan string)
به وسیله نحو ->channel
ما یک مقدار رو به یک کانال ارسال میکنیم. اینجا ما کلمه "ping"
رو به کانال messages
که بالا ساخته بودیم ارسال کردیم, از یک goroutineجدید.
go func() { messages <- "ping" }()
نحوchannel->
مقداری رو از کانال دریافت میکنه. اینجا ما پیغام "ping"
که بالا ارسال کرده بودیم را دریافت میکنیم و آن را در خروجی چاپ میکنیم.
msg := <-messages
fmt.Println(msg)
}
وقتی که ما برنامه "ping"
را اجرا میکنیم پیغام با موفقیت از یک goroutineبه دیگری به وسیله کانال ما پاس میدهد.
$ go run channels.go
ping
به صورت پیش فرض ارسال ها و دریافت ها مسدودند تا زمانی که ارسال کننده و دریافت کننده آماده باشند. این ویژگی به ما اجازه میدهد که تا پایان برنامه ما برای پیغام "ping" صبر کنیم بدون اینکه از هماهنگ سازی های دیگر استفاده کنیم.
<<(روالهای گو)Goroutines---------------------------------------- بافر کردن کانال>>
مطلبی دیگر از این انتشارات
26.آموزش GO با مثال(هدایت کانال)
مطلبی دیگر از این انتشارات
20.آموزش GO با مثال(اینترفیس ها)
مطلبی دیگر از این انتشارات
11.آموزش GO با مثال (تکرار range)