Channel
Fungsi -> tempat komunikasi data secara synchronous oleh go routine -> saat melakukan pengiriman data, go routine akan terblok sampai ada yang menerima data tersebut (blocking).
Karakteristik -> hanya bisa menerima 1 tipe data, secara default hanya bisa menampung 1 data, jika tidak digunakan harus di close atau bisa menyebabkan memory leak.
Channel In -> Mengirim data
Channel Out -> Menerima data
Sifatnya -> Blocking
Channel harus di close -> jika tidak bisa menyebabkan memory leak
Contoh #1
package main
import "fmt"
func test(value chan int) {
// channel out
result := 100 + <- value
fmt.Printf("%d ", result)
}
func main() {
fmt.Println("Start")
value := make(chan int)
for i := 0; i < 10; i++ {
go test(value)
// channel in
value <- i
}
fmt.Println("\nEnd")
close(value)
}Contoh 2
Contoh 3
Channel perlu di close
Channel perlu di close untuk mengindikasikan tidak ada data yang dikirim lagi ke channel
Reference:
Last updated