Go 有哪些方式安全读写共享变量?

方法 并发原语 备注
不要修改变量 sync.Once 不要去写变量,变量只初始化一次
只允许一个goroutine访问变量 Channel 不要通过共享变量来通信,通过通信(channel)来共享变量
允许多个goroutine访问变量,但是同一时间只允许一个goroutine访问 sync.Mutex、sync.RWMutex、原子操作 实现锁机制,同时只有一个线程能拿到锁