package main

import (
	"fmt"
	"time"
)

func main() {
	// bagian 1: hanya satu channel yang siap
	siap := make(chan string)
	lainnya := make(chan string)

	go func() {
		siap <- "satu-satunya yang siap"
	}()

	select {
	case m := <-siap:
		fmt.Println("diterima dari siap    :", m)
	case m := <-lainnya:
		fmt.Println("diterima dari lainnya :", m)
	}

	// bagian 2: default membuat operasi non-blocking
	ch := make(chan int)
	select {
	case ch <- 99:
		fmt.Println("terkirim")
	default:
		fmt.Println("tidak ada penerima, kirim ditunda")
	}

	// bagian 3: timeout dengan time.After
	lambat := make(chan string)
	select {
	case m := <-lambat:
		fmt.Println("diterima dari lambat  :", m)
	case <-time.After(50 * time.Millisecond):
		fmt.Println("timeout: 50 ms tanpa data")
	}
}
