Closed
Description
This isn't quite the behavior I expected the queue.TakeUntil(...)
function to behave. Here's a quick non-test-harness way I wrote a snippit to check my understanding of how this feature works:
q := queue.New(10)
q.Put(`a`, `b`, `c`)
takeItems, _ := q.TakeUntil(func(item interface{}) bool {
return item != `c`
})
restItems, _ := q.Get(3)
fmt.Sprintf("TakeUntil Test. takeItems: %v, restItems: %v",
takeItems, restItems)
This prints:
TakeUntil Test. takeItems: [a b], restItems: [b c]
I would have assumed that restItems
would be either [c]
(mutable call) or [a b c]
(immutable call) but the result of [b c]
is unexpected because the function both returned [a b]
(looks like an immutable return value) but when I see [b c]
it looks as if the queue was indeed mutated, but I would have expected in that case for the queue to have been [c]
. Am I not understanding something, or is this a bug?
Metadata
Metadata
Assignees
Labels
No labels