func NewSomeResource() *SomeResource { sr := SomeResource{store: make(map[string]int)} return &sr } type SomeResource struct { sync.RWMutex store map[string]int } func (sr *SomeResource) setValue(rw http.ResponseWriter, r *http.Request) { sr.Lock() defer sr.Unlock() var so SomeObject json.NewDecoder(r.Body).Decode(&so) sr.store[so.Key] = so.Value } func (sr *SomeResource) getValue(rw http.ResponseWriter, r *http.Request) { sr.RLock() defer sr.RUnlock() vars := mux.Vars(r) v := strconv.Itoa(sr.store[vars["key"]]) rw.Write([]byte(v)) }