atomic.Value存储interface的问题

先看这段代码 import ( "io" "net/http" "sync/atomic" ) func main() { var v atomic.Value var err error err = &http.ProtocolError{} v.Store(err) err = io.EOF v.Store(err) } 运行后会报错 panic: sync/atomic: store of inconsistently typed value into Value。 原因是atomic.Value.Store需要类型是一致的。在这里err类型发生了变化,虽然他们都是error接口类型。具体参考Issues#22550 怎么解决?包装一层就能运行了。 type tValue[T any] struct { value T } func main() { var v atomic.Value var err error err = &http.ProtocolError{} v.Store(tValue[error]{err}) err = io.EOF v.Store(tValue[error]{err}) }

2024-06-26 · 1 分钟