Channels adalah salah satu fitur kunci di Go yang digunakan untuk mengizinkan komunikasi antara goroutine. Channels digunakan untuk mengirim dan menerima data antara goroutine-goroutine yang berjalan konkuren. Mereka memungkinkan sinkronisasi dan koordinasi antara goroutine, menjadikannya alat yang kuat untuk mengelola konkurensi di Go.
Membuat Channels:
Untuk membuat channel di Go, Anda menggunakan operator make dengan menyertakan jenis data yang ingin Anda kirim melalui channel. Misalnya, untuk membuat channel yang dapat mengirim dan menerima nilai bertipe int, Anda dapat melakukannya seperti ini:
ch:=make(chanint)
Channel ini sekarang dapat digunakan untuk mengirim dan menerima nilai bertipe int antara goroutine.
Mengirim Data ke Channel:
Untuk mengirim data ke channel, Anda menggunakan operator <-. Berikut adalah contoh cara mengirim nilai 42 ke channel ch:
ch<-42
Menerima Data dari Channel:
Untuk menerima data dari channel, Anda juga menggunakan operator <-. Berikut adalah contoh cara menerima nilai dari channel ch dan menyimpannya dalam variabel nilai:
nilai:=<-ch
Contoh Penggunaan Channel:
Berikut adalah contoh program sederhana yang menggunakan channel untuk mengirim dan menerima data antara dua goroutine:
packagemainimport"fmt"funcfungsiGoroutine(chchanint){ch<-42// Mengirim nilai 42 ke channel}funcmain(){// Membuat channel bertipe intch:=make(chanint)// Menjalankan goroutine dengan channel sebagai argumengofungsiGoroutine(ch)// Menerima nilai dari channel dan mencetaknyanilai:=<-chfmt.Println("Nilai dari channel:",nilai)// Output: Nilai dari channel: 42}
Pada contoh di atas, goroutine fungsiGoroutine mengirim nilai 42 ke channel ch, dan nilai tersebut kemudian diterima dan dicetak oleh fungsi main.
Channels memungkinkan goroutine berkomunikasi dengan aman tanpa memerlukan penguncian eksternal. Mereka adalah alat yang sangat berguna untuk mengkoordinasikan kerja antara goroutine-goroutine di dalam aplikasi Go.
Di bab berikutnya akan dibahas tentang bagaimana membuat WaitGroup di Golang