github.com/angenalZZZ/gofunc@v0.0.0-20210507121333-48ff1be3917b/data/queue/example_priority_queue_test.go (about) 1 package queue_test 2 3 import ( 4 "fmt" 5 6 "github.com/angenalZZZ/gofunc/data/queue" 7 ) 8 9 // ExamplePriorityQueue demonstrates the implementation of a queue queue. 10 func Example_priorityQueue() { 11 // Open/create a priority queue. 12 pq, err := queue.OpenPriorityQueue("data_dir", queue.ASC) 13 if err != nil { 14 fmt.Println(err) 15 return 16 } 17 defer pq.Close() 18 19 // Enqueue the item. 20 item, err := pq.Enqueue(0, []byte("item value")) 21 if err != nil { 22 fmt.Println(err) 23 return 24 } 25 26 fmt.Println(item.ID) // 1 27 fmt.Println(item.Priority) // 0 28 fmt.Println(item.Key) // [0 58 0 0 0 0 0 0 0 1] 29 fmt.Println(item.Value) // [105 116 101 109 32 118 97 108 117 101] 30 fmt.Println(item.ToString()) // item value 31 32 // Change the item value in the queue. 33 item, err = pq.Update(item.Priority, item.ID, []byte("new item value")) 34 if err != nil { 35 fmt.Println(err) 36 return 37 } 38 39 fmt.Println(item.ToString()) // new item value 40 41 // Dequeue the next item. 42 deqItem, err := pq.Dequeue() 43 if err != nil { 44 fmt.Println(err) 45 return 46 } 47 48 fmt.Println(deqItem.ToString()) // new item value 49 50 // Delete the queue and its database. 51 pq.Drop() 52 }