Skip to content

Latest commit

Β 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ Go Goroutine Exercises

Koleksi lengkap latihan Go untuk mempelajari concurrency, goroutines, channels, dan distributed systems patterns. Proyek ini dirancang sebagai pengalaman pembelajaran interaktif yang mirip dengan Rustlings.

πŸ“š Tentang Proyek Ini

Proyek ini menyediakan 20 exercise yang mencakup semua aspek penting dari concurrency dalam Go, mulai dari konsep dasar hingga pola-pola advanced untuk distributed systems. Setiap exercise dilengkapi dengan:

  • πŸ“– README.md - Penjelasan konsep dan teori
  • πŸ”§ main.go - Template dengan TODO untuk implementasi
  • βœ… Solution - Implementasi lengkap di folder solutions/

🎯 Struktur Exercise

πŸ”° Basic Concurrency

  • 01. Hello Goroutine - Pengenalan goroutines dan concurrency dasar
  • 02. WaitGroup - Sinkronisasi goroutines dengan sync.WaitGroup
  • 03. Channels - Komunikasi antar goroutines menggunakan channels
  • 04. Buffered Channels - Bekerja dengan buffered channels
  • 05. Select - Menggunakan select statements untuk operasi non-blocking
  • 07. Channel Closing - Menutup channels dan mendeteksi channel yang tertutup

πŸ”’ Synchronization & Safety

  • 08. Mutex - Mencegah race conditions dengan sync.Mutex
  • 09. Atomic - Operasi atomic untuk programming lock-free
  • 10. Sync Once - Menggunakan sync.Once untuk inisialisasi satu kali

⚑ Advanced Patterns

  • 11. Producer Consumer - Pola producer-consumer dengan channels
  • 12. Worker Pool - Pola worker pool untuk distributed processing
  • 13. Fan-out Fan-in - Pola fan-out/fan-in untuk parallel processing
  • 14. Pipeline - Data processing pipelines dengan channels

🎯 Context & Lifecycle

  • 15. Context Cancellation - Pola advanced context cancellation
  • 16. Context Timeout - Context untuk cancellation dan timeouts

🌐 Network & Systems

  • 17. HTTP Client Concurrency - Concurrent HTTP requests dan worker pools
  • 18. Rate Limiting - Pola dan implementasi rate limiting
  • 19. Graceful Shutdown - Pola graceful shutdown untuk aplikasi
  • 20. Distributed Systems - Pola distributed systems dalam Go

πŸš€ Cara Memulai

Prerequisites

  • Go 1.21 atau lebih baru
  • Terminal/Command line

Installation

git clone <repository-url>
cd go-goroutine
go mod tidy

Menjalankan Exercise

Mode Interaktif

go run main.go

Pilih exercise yang ingin Anda kerjakan dari menu yang tersedia.

Menjalankan Exercise Tertentu

go run main.go 01  # Menjalankan exercise 01

Menjalankan Semua Exercise

go run main.go all

Watch Mode (Rustlings-like)

go run main.go watch

Mode ini akan:

  • Memantau perubahan file secara real-time
  • Menjalankan exercise secara otomatis saat file disimpan
  • Memberikan feedback langsung
  • Melanjutkan ke exercise berikutnya saat berhasil

Verifikasi Solutions

go run main.go verify
# atau
./exercises/verify.sh

πŸ“– Cara Belajar

1. Baca README Exercise

Setiap exercise memiliki README.md yang menjelaskan:

  • Konsep yang akan dipelajari
  • Contoh penggunaan
  • Best practices
  • Tips implementasi

2. Implementasi TODO

Buka file main.go di folder exercise dan implementasikan bagian yang ditandai dengan TODO.

3. Jalankan dan Test

Gunakan go run main.go <nomor> untuk menjalankan exercise Anda.

4. Bandingkan dengan Solution

Jika kesulitan, lihat implementasi lengkap di folder solutions/.

5. Lanjut ke Exercise Berikutnya

Setelah memahami konsep, lanjutkan ke exercise selanjutnya.

πŸ“š Referensi Pembelajaran

🌟 Go by Example

https://gobyexample.com/ adalah sumber pembelajaran Go yang sangat baik dengan contoh-contoh praktis. Topik yang relevan dengan exercise ini:

πŸ“– Dokumentasi Resmi

πŸ“Ί Video & Tutorial

πŸ› οΈ Fitur Khusus

Watch Mode

Mode watch memberikan pengalaman pembelajaran yang mirip dengan Rustlings:

  • Auto-reload saat file berubah
  • Feedback real-time
  • Progress tracking
  • Automatic progression

Verification System

Sistem verifikasi otomatis untuk memastikan semua solutions berfungsi dengan benar.

Interactive Menu

Menu interaktif yang memudahkan navigasi antar exercise.

🀝 Kontribusi

Kontribusi sangat diterima! Silakan:

  1. Fork repository ini
  2. Buat branch untuk fitur baru
  3. Commit perubahan Anda
  4. Push ke branch
  5. Buat Pull Request

πŸ“„ Lisensi

Proyek ini dilisensikan di bawah MIT License.

πŸ™ Acknowledgments


Selamat belajar Go concurrency! πŸš€

Jika Anda menemukan bug atau memiliki saran, silakan buat issue di repository ini.

About

Small exercises to get used to using goroutine in Go 🦦

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages