Channel သည် goroutine တွေအချင်းချင်း data ပို့/လက်ခံဖို့သုံးတဲ့ typed pipe ပါ။ Data sharing ကို memory ကိုတူတူကိုင်ပြီးပြောင်းတာထက် message ပို့သလိုစီမံချင်တဲ့အခါ channel ကအလွန်အသုံးဝင်ပါတယ်။
go
package main
import "fmt"
func main() {
messages := make(chan string)
go func() {
messages <- "ping"
}()
msg := <-messages
fmt.Println(msg)
}messages <- "ping" က channel ထဲ message ပို့တာပါ။ msg := <-messages က channel ထဲက message ကိုလက်ခံတာပါ။
You should see
pingInfo
Unbuffered channel မှာ send နဲ့ receive တစ်ဖက်ဖက်မရှိသေးရင် wait လုပ်ပါတယ်။ ဒီ behavior က synchronization အတွက်အသုံးဝင်ပါတယ်။