Пакет sync/atomic предоставляет атомарные операции над целыми числами и указателями без использования мьютексов.
var n int64
atomic.AddInt64(&n, 1)
atomic.LoadInt64(&n)
atomic.StoreInt64(&n, 100)
ok := atomic.CompareAndSwapInt64(&n, 100, 101)
Есть варианты для int32, uint64, указателей atomic.Pointer[T] (Go 1.19+) и др.
Простой счётчик или флаг, к которому обращаются много горутин: атомики быстрее мьютекса и не блокируют. Для сложной логики (несколько связанных полей) нужен мьютекс.