()
| 98 | } |
| 99 | |
| 100 | func (q *Queue) resize() { |
| 101 | newCap := q.capacity * 2 |
| 102 | newBuf := make([]interface{}, newCap) |
| 103 | |
| 104 | for i := 0; i < q.size; i++ { |
| 105 | newBuf[i] = q.buffer[(q.head+i)%q.capacity] |
| 106 | } |
| 107 | q.buffer = newBuf |
| 108 | q.head = 0 |
| 109 | q.tail = q.size |
| 110 | q.capacity = newCap |
| 111 | } |
| 112 | |
| 113 | func (q *Queue) RemoveIf(predicate func(v interface{}) bool) (bool, interface{}) { |
| 114 | q.lock.Lock() |