linkedlist.go
func (list *LinkedList) RemoveBack() (interface{}, bool) {
	list.key.Lock()
	defer list.key.Unlock()

	if list.last == nil {
		return nil, false
	}

	retval := list.last.payload
	list.length--

	if list.length == 0 {
		list.first = nil
	} else {
		node, _ := get(list.first, list.length-1)
		node.next = nil
	}
	return retval, true
}
func (list *LinkedList) RemoveBack() (interface{}, bool) {
	list.key.Lock()
	defer list.key.Unlock()

	if list.last == nil {
		return nil, false
	}

	retval := list.last.payload
	list.length--

	if list.length == 0 {
		list.first = nil
	} else {
		node, _ := get(list.first, list.length-1)
		node.next = nil
	}
	return retval, true
}
// RemoveBack returns the entry logically stored at the back of this list and removes it.