用go语言构建一个单向队列和双向队列

package main

import "fmt"

//type LinkedNode struct {
//      val interface{}
//      next *LinkedNode
//}
//
//func NewLinkedNode(val interface{}) *LinkedNode {
//      return &LinkedNode{
//              val:val,
//      }
//}
//
//func main() {
//      node := NewLinkedNode("aaa")
//      node2 := NewLinkedNode("bbb")
//      node.next = node2
//      node3 := NewLinkedNode("ccc")
//      node2.next = node3
//      for ; node != nil; node = node.next {
//              fmt.Println(node)
//      }
//}

type LinkedNode struct {
        val interface{}
        pre *LinkedNode
        next *LinkedNode
}

func NewLinkedNode(val interface{}) *LinkedNode {
        return &LinkedNode{
                val:val,
        }
}

func main() {
        node := NewLinkedNode("aaa")
        node2 := NewLinkedNode("bbb")
        node.next = node2
        node2.pre = node
        node3 := NewLinkedNode("ccc")
        node2.next = node3
        node3.pre = node2
        temp := node
        for ; temp != nil; temp = temp.next {
                fmt.Println(temp)
                if temp.next == nil {
                        break
                }
        }
        fmt.Println("-------------------")
        for ; temp != nil; temp = temp.pre {
                fmt.Println(temp)
        }
}