package main

import (
	"fmt"
	"runtime"
)

func main() {
	pesan := make(chan string) // channel ini sengaja tidak pernah ditutup
	sinyal := make(chan struct{})

	fmt.Println("goroutine awal  :", runtime.NumGoroutine())

	for range 3 {
		go func() {
			sinyal <- struct{}{} // goroutine sudah berjalan
			<-pesan              // menunggu selamanya: goroutine leak
		}()
	}
	for range 3 {
		<-sinyal
	}

	fmt.Println("goroutine bocor :", runtime.NumGoroutine())
}
