Study
Go

Goroutine & Channel Dasar di Go

Penjelasan

Goroutine adalah fitur paling khas Go: fungsi yang dijalankan secara konkuren ("bersamaan") dengan fungsi lain, cukup dengan menambahkan keyword go di depan pemanggilan fungsi — jauh lebih ringan dibanding thread tradisional. Channel dipakai untuk mengirim data dengan aman ANTAR goroutine, mencegah race condition tanpa perlu lock manual.

Contoh Konsep

package main

import "fmt"

func kirimPesan(ch chan string) {
	ch <- "Halo dari goroutine!" // kirim data ke channel
}

func main() {
	ch := make(chan string)

	go kirimPesan(ch) // jalankan sebagai goroutine terpisah

	pesan := <-ch // terima data dari channel (menunggu sampai ada data)
	fmt.Println(pesan)
}

Praktikum

Buat channel bertipe int. Buat goroutine yang mengirim angka 42 ke channel itu. Di main(), terima nilai dari channel dan tampilkan lewat fmt.Println.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Menerima data dari channel kosong (<-ch) akan MENUNGGU (blocking) sampai ada data dikirim ke channel itu — kalau tidak ada goroutine lain yang pernah mengirim, program akan macet selamanya (deadlock). Materi ini baru pengenalan; concurrency Go punya banyak pola lanjutan (buffered channel, select, sync.WaitGroup) yang bisa dipelajari setelah paham dasar ini.