Go erbjuder två tillvagagångssätt för concurrency safety: channels ("share memory by communicating") och sync-paketet (mutexes/locks för att skydda delat minne direkt). Trots Gos kanal-först-filosofi är sync-primitiver ofta det enklare och mer effektiva valet för att skydda delad state.
sync.Mutex — skydda delad state med ett lås
Counter {
mu sync.Mutex
count
}
Increment() {
c.mu.Lock()
c.mu.Unlock()
c.count++
}
