Cara membuat Channels di Golang
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(chan int)
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:
package main
import "fmt"
func fungsiGoroutine(ch chan int) {
ch <- 42 // Mengirim nilai 42 ke channel
}
func main() {
// Membuat channel bertipe int
ch := make(chan int)
// Menjalankan goroutine dengan channel sebagai argumen
go fungsiGoroutine(ch)
// Menerima nilai dari channel dan mencetaknya
nilai := <-ch
fmt.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
Last updated