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)
}

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.