22 lines
281 B
Go
22 lines
281 B
Go
|
package hodu
|
||
|
|
||
|
import "sync/atomic"
|
||
|
|
||
|
type Atom[T any] struct {
|
||
|
val atomic.Value
|
||
|
}
|
||
|
|
||
|
func (av* Atom[T]) Set(v T) {
|
||
|
av.val.Store(v)
|
||
|
}
|
||
|
|
||
|
func (av* Atom[T]) Get() T {
|
||
|
var v interface{}
|
||
|
v = av.val.Load()
|
||
|
if v == nil {
|
||
|
var t T
|
||
|
return t // return the zero-value
|
||
|
}
|
||
|
return v.(T)
|
||
|
}
|