Membuat channel pada golang

Golang – Pengenalan dan cara membuat channel

Channel adalah tempat komunikasi secara synchronous yang bisa dilakukan oleh goroutine, seperti yang kita tau jika kita membuat function dengan return value dan menjalankan function tersebut dengan goroutine maka data nya tidak akan bisa diterima. Nah bagaimana cara nya jika kita membutuhkan return value dari sebuah goroutine, untuk masalah ini kita bisa menggunakan channel.

Jadi channel ini adalah tempat komunikasi secara synchronous dari dua atau lebih goroutine, jadi jika kita ingin mengirim data dari goroutine ke goroutine yang lain maka kita bisa menggunakan goroutine. Di channel biasa nya terdapat pengirim(goroutine) dan penerima(goroutine), biasanya pengirim dan penerima nya adalah goroutine yang berbeda.

Saat melakukan pengiriman data ke channel goroutine akan terblock, artinya jika kita memiliki satu goroutine yang mengirim data ke channel maka goroutine tersebut akan di block atau akan di biarkan sampai ada goroutine lain yang mengambil data dari channel. Maka dari itu channel disebut alat komunikasi secara synchronous(blocking), channel cocok sekali sebagai mekanisme async await yang terdapat di bahasa pemrogaman lain

Karakteristik channel

Secara default channel hanya bisa menampung satu data, jika kita ingin memasukkan data lagi ke dalam channel maka kita harus menunggu data yang pertama diambil dari channel. Channel hanya bisa menerima satu jenis data, jadi saat kita membuat channel kita harus menentukan tipe datanya apa, misal string, int, struct dll.

Channel bisa diambil dari lebih dari satu goroutine begitu juga pengirim nya bisa banyak goroutine, tetapi saat diterima hanya bisa satu terlebih dahulu dan yang lainnya harus menunggu sampai data pertama di ambil. Channel harus di close jika tidak digunakan, atau bisa menyebabkan memory leak.

Membuat channel

Chnnel pada golang direpresentasikan dengan tipe data chan, untuk membuat channel sangat mudah kita bisa menggunakan function make(), mirip ketika kita membuat map. Namun saat kita membuat channel kita hars menentukan tipe data yang bisa dimasukkan ke dalam channel tersebut. Contohnya saat membuat channel channel := make(chan string).

Untuk mengirim dan menerima data dari channel kita bisa menggunakan kode channel <- data dan untuk menerima data data <- channel, jika selesai dangan lupa untuk menutup channel dengan function close.

package belajar_golang_goroutines

import (
	"fmt"
	"testing"
	"time"
)

func TestCreateChannel(t *testing.T) {
	channel := make(chan string)
	defer close(channel)

	go func() {
		time.Sleep(2 * time.Second)
		channel <- "Rendy Wijaya"
		fmt.Println("Selesai mengirim data ke channel")
	}()

	data := <-channel
	fmt.Println("Data", data)
	time.Sleep(5 * time.Second)
}
Membuat channel pada golang
Membuat channel pada golang

Pada baris kode diatas kita membuat channel pada baris 10 dan kita juga membuat anonymous function yang langsung dijalankan dalam goroutines, dan dilamanya kita menambah data string nama ke channel tersebut. Dan pada baris ke 19 kita menyimpan atau mengambil data dari channel dimasukkan ke variable data dan terakhir kita melakukan print pada data tersebut.

Penutup

Pada artikel kali ini kita telah belajar tentang apa itu channel dan cara membuat channel pada bahasa pemrogaman go. Dan pada artikel selanjutnya saya akan membahas channel sebagai parameter pada bahasa pemrogaman go.

Leave a reply:

Your email address will not be published.

Site Footer

Sliding Sidebar

About Me

About Me

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam.

Social Profiles

Facebook