Go გთავაზობთ ორ მიდგომას თანამედროვე კოდის უსაფრთხოებისთვის: channel ("მეხსიერების გაზიარება კომუნიკაციის მাშინ") და sync პაკეტი (mutex/დაკეტვა მეხსიერების პირდაპირი დასაცავად). Go-ს channel-first ფილოსოფიის მიუხედავად, sync პრიმიტივები ხშირად მარტივი და ეფექტური არჩევანია გაზიარებული მდგომარეობის დასაცავად.
sync.Mutex — გაზიარებული მდგომარეობის დაცვა დაკეტვით
Counter {
mu sync.Mutex
count
}
Increment() {
c.mu.Lock()
c.mu.Unlock()
c.count++
}
