Mastering Golang
  • Tentang Go
  • Instalasi Go
  • Membuat Project Go
  • Go Run & Go Build
  • Apa itu Package pada Go
  • Imports dan Exports
  • Variabel
  • Tipe Data
  • Konstanta dan Komentar
  • Operator
  • Type Conversion
  • Kondisional - IF
  • Kondisional - Switch Case
  • Looping
  • Array
  • Array - Looping
  • Slices
  • Pointer
  • Map
  • Fungsi
  • Struct
  • Method
  • Interface
  • Interface Kosong
  • Concurrency
  • Concurrency - Goroutines
  • Channel
  • Buffered Channel
  • Channel - Close and Range
  • Channel - Direction
  • Channel - Select
  • Concurrency - WaitGroup
  • Concurrency - Mutex
  • JSON Data
  • SQL
  • URL Parsing
  • GO Vendor
  • Unit Testing
  • Go Basic for Web Development
    • Aplikasi Web pada Go - Hello World
    • Root Routing
    • Query String
    • Web Service API Server
    • HTTP Basic Auth
    • RESTFul API dengan Gin dan Gorm
Powered by GitBook
On this page

Was this helpful?

Channel - Direction

Pada sesi ini akan dibahas bahwa kita bisa menetapkan suatu fungsi sebagai pengirim saja, penerima saja, atau keduanya

Kita bisa menentukan level akses channel apakah hanya sebagai penerima, pengirim, atau penerima sekaligus pengirim. Konsep ini disebut dengan channel direction.

Cara pemberian level akses adalah dengan menambahkan tanda <- sebelum atau setelah keyword chan. Untuk lebih jelasnya bisa dilihat pada tabel berikut.

Sintaks

Penjelasan

ch chan string

Parameter ch bisa digunakan untuk mengirim dan menerima data

ch chan<- string

Parameter ch hanya bisa digunakan untuk mengirim data

ch <-chan string

Parameter ch hanya bisa digunakan untuk menerima data

package main

import (
	"fmt"
)

func sender(c chan<- string) {
	c <- "Ping"
}

func receiver(c <-chan string) {
	msg := <-c
	fmt.Println(msg)
}

func main() {
	ch := make(chan string)
	go sender(ch)
	go receiver(ch)

	var input string
	fmt.Scanln(&input)
}
PreviousChannel - Close and RangeNextChannel - Select

Last updated 4 years ago

Was this helpful?