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)
    }