VGrabko
@VGrabko
Golang, Php, Js

Как побороть дублирование кода?

Есть хелперы для роботы с глобальной картой (работать с ней возможно только через них). Вот делал но код дублируется чуть менее чем везде. Как можно исправить это дело?
func Get(id string) (Sessid, bool) {
	rw := &sync.RWMutex{}
	rw.RLock()
	defer rw.RUnlock()
	val, ok := stSessid[id].Storage
	return val, ok
}

func Set(id string, value Sessid) error {
	_, dublicate := ramGet(id)
	if dublicate {
		return errors.New("Такой ключ уже есть")
	}
	r := &sync.Mutex{}
	r.Lock()
	defer r.Unlock()
	stSessid[id].Storage = value
}

func Del(id string) error {
	_, dublicate := ramGet(id)
	if !dublicate {
		return errors.New("Ключа нету")
	}
	r := &sync.Mutex{}
	r.Lock()
	defer r.Unlock()
	delete(stSessid, id)
}
func Up(id string, value Sessid) error {
	_, dublicate := ramGet(id)
	if !dublicate {
		return errors.New("Ключа нету")
	}
	r := &sync.Mutex{}
	r.Lock()
	defer r.Unlock()
	stSessid[id].Storage = value
}
  • Вопрос задан
  • 286 просмотров
Решения вопроса 1
Небольшая копипаста, это нормально для go.
У вас тут другая страшная проблема, вы создаете мьютексы как локальные переменные. В результате они бесполезны здесь.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы