报告使用了可被替换为类型化原子值的原始 sync/atomic 函数,例如 atomic.AddInt64atomic.LoadInt64

atomic.Int64 等类型化原子值使原子访问成为字段类型的一部分。 这有助于防止对同一值进行非原子访问,并避免 32 位平台上出现对齐问题。

示例:


type Counter struct {
	hits int64
}

func (c *Counter) Bump() {
	atomic.AddInt64(&c.hits, 1)
}

func (c *Counter) Read() int64 {
	return atomic.LoadInt64(&c.hits)
}

要修正代码,请使用将 int64 替换为 atomic.Int64 快速修复。

在应用快速修复后:


type Counter struct {
	hits atomic.Int64
}

func (c *Counter) Bump() {
	c.hits.Add(1)
}

func (c *Counter) Read() int64 {
	return c.hits.Load()
}