Jika Goroutine adalah cara menjalankan tugas secara bersamaan, maka Channel adalah cara mereka berbicara/bertukar data satu sama lain.
Analogy
Bayangkan Goroutine sebagai pelari estafet. Channel adalah tongkat estafet yang diberikan dari satu pelari ke pelari lain.
Rules
- Mengirim data:
channel <- data - Menerima data:
data <- channel - Menerima data bersifat Blocking. Program akan berhenti menunggu sampai ada data yang dikirim.
MAIN.GO
package mainimport "fmt"func main() { // Membuat channel yang membawa tipe data string pesan := make(chan string) // Goroutine anonim mengirim data go func() { pesan <- "Halo dari Goroutine!" }() // Main thread menunggu data masuk (Blocking) isiPesan := <-pesan fmt.Println(isiPesan)}