aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoger Peppe <rogpeppe@gmail.com>2010-11-09 08:58:23 -0800
committerRobert Griesemer <gri@golang.org>2010-11-09 08:58:23 -0800
commite9afb9d399125e3f8bcda135913905ff3a3a6b5e (patch)
treef13d10ca1cddce6295310491923c2327b4608741
parent9626180918d834e0a6eb56e28c6ca201e39dbcba (diff)
downloadgo-e9afb9d399125e3f8bcda135913905ff3a3a6b5e.tar.gz
go-e9afb9d399125e3f8bcda135913905ff3a3a6b5e.zip
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
-rw-r--r--src/pkg/container/list/list.go6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/pkg/container/list/list.go b/src/pkg/container/list/list.go
index ddc8611819..c1ebcddaa7 100644
--- a/src/pkg/container/list/list.go
+++ b/src/pkg/container/list/list.go
@@ -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.