Channels

Duration: 20 min•Difficulty: Expert•

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 main
import "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)
}