Cara membuat Select statement di Golang

Select Statement adalah konstruksi kontrol di Go yang digunakan untuk memilih (select) salah satu dari beberapa tindakan yang dapat dijalankan. Dalam konteks channels, select digunakan untuk menangani komunikasi dengan beberapa channels secara konkuren. select memungkinkan goroutine untuk mencoba melakukan pengiriman atau penerimaan pada beberapa channels dan melanjutkan eksekusi dengan channel pertama yang siap.

Berikut adalah contoh penggunaan select untuk meng-handle komunikasi melalui beberapa channels:

package main

import (
    "fmt"
    "time"
)

func main() {
    // Membuat dua channel bertipe int
    ch1 := make(chan int)
    ch2 := make(chan int)

    // Goroutine untuk mengirim data ke ch1
    go func() {
        time.Sleep(2 * time.Second) // Menunggu 2 detik
        ch1 <- 42
    }()

    // Goroutine untuk mengirim data ke ch2
    go func() {
        time.Sleep(1 * time.Second) // Menunggu 1 detik
        ch2 <- 100
    }()

    // Menggunakan select statement untuk menangani multiple channels
    select {
    case nilai := <-ch1:
        fmt.Println("Menerima dari ch1:", nilai) // Output: Menerima dari ch1: 42
    case nilai := <-ch2:
        fmt.Println("Menerima dari ch2:", nilai) // Output: Menerima dari ch2: 100
    }

    // Output: Menerima dari ch2: 100 (dalam contoh ini, ch2 adalah yang pertama kali siap)
}

Pada contoh di atas, kita membuat dua goroutine yang masing-masing mengirim nilai ke dua channel (ch1 dan ch2). Dengan menggunakan select, program mencoba menerima nilai dari kedua channel secara konkuren. Channel yang pertama kali siap akan mengaktifkan blok kode yang sesuai. Dalam contoh ini, ch2 siap lebih cepat, sehingga nilai dari ch2 yang diterima dan dicetak.

select sangat berguna dalam situasi di mana Anda ingin menunggu data dari beberapa goroutine atau channels dan mengambil tindakan berdasarkan channel yang pertama kali siap. Ini memungkinkan Anda menangani komunikasi konkuren dengan mudah dan efisien di Go.

Di bab berikutnya akan dibahas tentang bagaimana membuat http server di Golang

Last updated