mirror of
https://github.com/rocky-linux/peridot.git
synced 2024-10-19 07:55:07 +00:00
24 lines
451 B
Go
24 lines
451 B
Go
|
// +build go1.9
|
||
|
|
||
|
package dynamodbattribute
|
||
|
|
||
|
import "sync"
|
||
|
|
||
|
var fieldCache fieldCacher
|
||
|
|
||
|
type fieldCacher struct {
|
||
|
cache sync.Map
|
||
|
}
|
||
|
|
||
|
func (c *fieldCacher) Load(t interface{}) (*cachedFields, bool) {
|
||
|
if v, ok := c.cache.Load(t); ok {
|
||
|
return v.(*cachedFields), true
|
||
|
}
|
||
|
return nil, false
|
||
|
}
|
||
|
|
||
|
func (c *fieldCacher) LoadOrStore(t interface{}, fs *cachedFields) (*cachedFields, bool) {
|
||
|
v, ok := c.cache.LoadOrStore(t, fs)
|
||
|
return v.(*cachedFields), ok
|
||
|
}
|