Go menawarkan dua pendekatan untuk keamanan concurrency: channels ("share memory by communicating") dan paket sync (mutexes/locks untuk melindungi memori bersama secara langsung). Meskipun filosofi Go yang channel-first, sync primitives sering kali merupakan pilihan yang lebih sederhana dan efisien untuk melindungi shared state.
sync.Mutex — lindungi shared state dengan lock
Counter {
mu sync.Mutex
count
}
Increment() {
c.mu.Lock()
c.mu.Unlock()
c.count++
}
