可以用简单的slice来实现。
代码语言:javascript复制// Stack ...
type Stack struct {
inner []byte
}
// Push ...
func (s *Stack) Push(v byte) {
s.inner = append(s.inner, v) // Push
}
// Pop ...
func (s *Stack) Pop() byte {
n := len(s.inner) - 1 // Top element
v := s.inner[n]
s.inner = s.inner[:n] // Pop
return v
}
// Peek ...
func (s *Stack) Peek() byte {
n := len(s.inner) - 1 // Top element
v := s.inner[n]
return v
}
// Len ...
func (s *Stack) Len() int {
return len(s.inner)
}
也可以用 collections里的库,链表实现的,线程不安全
代码语言:javascript复制import (
stackLib "github.com/golang-collections/collections/stack"
)
stack := stackLib.New()
// stack.Len() stack.Peek() stack.Pop() stack.Push(v)