به صورت پیش فرض کانال ها بافر نشده هستند، به این معنی که ارسال ها را به وسیله (->chan
) قبول میکنند ،اگر یک دریافت کننده مطابق با آن مثل (chan->
) وجود داشته باشد آماده است تا مقدار های ارسال شده را دریافت کند.کاناهالهای بافر شده تعداد محدودی مقدار را بدون مطابقت دریافت کننده برای این مقادیر قبول میکنند.
package main import "fmt" func main() {
اینجا ما از تابع درونی make
برای ساختن یک کانالی که 2 مقدار را در خود بافر میکند داریم.
messages := make(chan string, 2)
چون این کانال بافر شده است, ما میتونیم این مقادیر رو بدون یک دریافت همزمان تطبیقی به کانال ارسال کنیم .
messages <- "buffered" messages <- "channel"
و در بعد ما میتونیم به صورت معمول این دو مقدار را دریافت کنیم.
fmt.Println(<-messages) fmt.Println(<-messages) }
$ go run channel-buffering.go buffered channel
<<کانالها----------------------------------------------- هماهنگ سازی کانال >>