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