Delete removes an item.
(obj interface{})
| 221 | |
| 222 | // Delete removes an item. |
| 223 | func (h *Heap) Delete(obj interface{}) error { |
| 224 | key, err := h.data.keyFunc(obj) |
| 225 | if err != nil { |
| 226 | return KeyError{obj, err} |
| 227 | } |
| 228 | h.lock.Lock() |
| 229 | defer h.lock.Unlock() |
| 230 | if item, ok := h.data.items[key]; ok { |
| 231 | heap.Remove(h.data, item.index) |
| 232 | return nil |
| 233 | } |
| 234 | return fmt.Errorf("object not found") |
| 235 | } |
| 236 | |
| 237 | // Pop waits until an item is ready. If multiple items are |
| 238 | // ready, they are returned in the order given by Heap.data.lessFunc. |