در جست و جوی خود
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---------------------------------------- بافر کردن کانال>>
مطلبی دیگر از این انتشارات
11.آموزش GO با مثال (تکرار range)
مطلبی دیگر از این انتشارات
8.آموزش GO با مثال(آرایه ها)
مطلبی دیگر از این انتشارات
9.آموزش GO با مثال(آرایه های برشی)