package fifo import ( "sync" ) type Queue struct { DataList []*IData mutex sync.Mutex ResourceType string } func (q *Queue) Push(data IData) { q.mutex.Lock() defer q.mutex.Unlock() q.DataList = append(q.DataList, &data) } func (q *Queue) Pop() IData { q.mutex.Lock() defer q.mutex.Unlock() if len(q.DataList) <= 0 { return nil } var data = q.DataList[0] q.DataList = q.DataList[1:] return data }