Commit e9afb9d3 authored by Roger Peppe's avatar Roger Peppe Committed by Robert Griesemer

container/list: make Remove return Value of removed element.

When it is known that there is already at least one element in the
list, it is awkwardly verbose to use three lines and an extra
variable declaration to remove the first or last item (a common
case), rather than use a simple expression.

a stack:
	stk.PushFront(x)
	x = stk.Front().Remove().(T)

vs.
	stk.PushFront(x)
	e := stk.Front()
	e.Remove()
	x = e.Value.(T)
[An alternative CL might be to add PopFront and PopBack methods].

R=gri
CC=golang-dev
https://golang.org/cl/3000041
parent 96261809
......@@ -54,10 +54,12 @@ func (l *List) Front() *Element { return l.front }
// Back returns the last element in the list.
func (l *List) Back() *Element { return l.back }
// Remove removes the element from the list.
func (l *List) Remove(e *Element) {
// Remove removes the element from the list
// and returns its Value.
func (l *List) Remove(e *Element) interface{} {
l.remove(e)
e.list = nil // do what remove does not
return e.Value
}
// remove the element from the list, but do not clear the Element's list field.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment