package safestring import "sync" /* Потокобезопасная строка */ // SafeString -- потокобезопасная строка type SafeString struct { val string block sync.RWMutex } // NewSafeString -- возвращает новый *SafeString func NewSafeString() *SafeString { return &SafeString{} } // Get -- возвращает хранимое значение func (sf *SafeString) Get() string { sf.block.RLock() defer sf.block.RUnlock() return sf.val } // Set -- устанавливает хранимое значение func (sf *SafeString) Set(strVal string) { sf.block.Lock() defer sf.block.Unlock() sf.val = strVal }