code: func (list *SkipList) Remove(key interface{}) *Element {
  	score := getScore(key, list.reversed)
  	prevs := list.getPrevElementNodes(key, score)
  
  	// found the element, remove it
  	if element := prevs[0].next[0]; element != nil && !list.keyFunc.Compare(element.key, key) {
  		for k, v := range element.next {
  			prevs[k].next[k] = v
  		}
  
  		list.length--
  		return element
  	}
  
  	return nil
  }
docs: // Removes an element.
  // Returns removed element pointer if found, nil if not found.