github.com/gogf/gf@v1.16.9/.example/container/gqueue/gqueue.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "time" 6 7 "github.com/gogf/gf/container/gqueue" 8 "github.com/gogf/gf/os/gtime" 9 "github.com/gogf/gf/os/gtimer" 10 ) 11 12 func main() { 13 q := gqueue.New() 14 // 数据生产者,每隔1秒往队列写数据 15 gtimer.SetInterval(time.Second, func() { 16 v := gtime.Now().String() 17 q.Push(v) 18 fmt.Println("Push:", v) 19 }) 20 21 // 3秒后关闭队列 22 gtimer.SetTimeout(3*time.Second, func() { 23 q.Close() 24 }) 25 26 // 消费者,不停读取队列数据并输出到终端 27 for { 28 if v := q.Pop(); v != nil { 29 fmt.Println(" Pop:", v) 30 } else { 31 break 32 } 33 } 34 }