// package section_mode -- типовой режим секция работы части игры // // Имеет имя режима и имя текущей работы в режиме package section_mode import ( "sync" ) // SectionMode -- режим работы секции type SectionMode struct { name string // Имя режима work string // Имя работы block sync.RWMutex } // NewSectionMode -- возвращает новый *SectionMode func NewSectionMode() *SectionMode { return &SectionMode{ name: "start", } } // Set -- устанавливает режим работы func (sf *SectionMode) Set(val string) { sf.block.Lock() defer sf.block.Unlock() sf.name = val } // Get -- возвращает хранимый режим работы func (sf *SectionMode) Get() string { sf.block.RLock() defer sf.block.RUnlock() return sf.name } // Work -- возвращает хранимое имя работы func (sf *SectionMode) Work() string { sf.block.RLock() defer sf.block.RUnlock() return sf.work } // WorkSet -- устанавливает хранимое имя работы func (sf *SectionMode) WorkSet(work string) { sf.block.Lock() defer sf.block.Unlock() sf.work = work }