Kode program channel in & out

Golang – Channel In & Out

Saat kita mengirim channel ke sebuah parameter, isi function tersebut bisa mengirim atau menerima data dari channel tersebut, kadang kita ingin memberi tahu terhadap sebuah function misalnya bahwa channel tersebut hanya digunakan untuk mengirim saja, atau bisa digunakan hanya untuk menerima data dari channel saja. Hal ini bisa kita lakukan di parameter dengan cara menandai apakah channel ini digunakan untuk in(mengirim data) out(menerima data).

Baris kode channel in & out

Seperti biasa kita akan mencoba dengan unit test, jadi silakan buat projek baru atau bisa menggunakan project yang sudah di buat sebelum nya, kemudian isikan baris kode berikut

package belajar_golang_goroutines

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

// hanya boleh mengirim data ke channel
func OnlyIn(channel chan<- string) {
	time.Sleep(2 * time.Second)
	channel <- "Rendy Wijaya"
}

// hanya boleh menerima data ke channel
func OnlyOut(channel <-chan string) {
	data := <-channel
	fmt.Println(data)
}

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

	go OnlyIn(channel)
	go OnlyOut(channel)

	time.Sleep(5 * time.Second)
}
Kode program channel in & out
Kode program channel in & out

Untuk membuat function hanya bisa mengirim data ke channel maka kita bisa membuat function seperti OnlyIn pada baris ke 10, begitu juga sbaliknya untuk membuat function hanya bisa menerima data dari channel maka gunakan function seperti OnlyOut untuk perbedaan dua function tersebut berada pada parameter nya.

Penutup

Pada artikel kali ini kita telah belajar tentang channel in dan out pada bahasa pemrogaman go. Dan pada artikel selanjutnya saya akan membahas buffered channel 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