1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
   | package main
  import "fmt"
  type MyQueue struct {     inStack  \[\]int     outStack \[\]int }
  func Constructor() MyQueue {     return MyQueue{} }
  func (q *MyQueue) Enqueue(x int) {     q.inStack = append(q.inStack, x) }
  func (q *MyQueue) Dequeue() int {     if len(q.outStack) == 0 {         q.transfer()     }
      if len(q.outStack) == 0 {                  return 0     }
      val := q.outStack\[len(q.outStack)-1\]     q.outStack = q.outStack\[:len(q.outStack)-1\]     return val }
  func (q *MyQueue) transfer() {     for len(q.inStack) > 0 {         q.outStack = append(q.outStack, q.inStack\[len(q.inStack)-1\])         q.inStack = q.inStack\[:len(q.inStack)-1\]     } }
  func main() {     queue := Constructor()
      queue.Enqueue(1)     queue.Enqueue(2)     queue.Enqueue(3)
      fmt.Println(queue.Dequeue())      fmt.Println(queue.Dequeue()) 
      queue.Enqueue(4)
      fmt.Println(queue.Dequeue())      fmt.Println(queue.Dequeue())  }
   |