haa哈哈==
import "errors" var ( // ErrEmpty 栈为空 ErrEmpty = errors.New("stack is empty") ) // StackNode 栈节点 type StackNode struct { el interface{} // 可以存储任何类型数据 next *StackNode } // LinkStack 栈空间 type LinkStack struct { top *StackNode count int } // New 栈初始化 func New() *LinkStack { return new(LinkStack) // new() 方法刚好返回指针 } // Push 入栈 func (l *LinkStack) Push(el interface{}) (err error) { s := StackNode{el: el, next: l.top} l.top = &s l.count++ return } // Pop 出栈 func (l *LinkStack) Pop() (el interface{}, err error) { if l.count == 0 { return el, ErrEmpty } l.count-- el = l.top.el l.top = l.top.next return } // Length 获取栈长度 func (l *LinkStack) Length() int { return l.count } // Empty 判断栈是否为空 func (l *LinkStack) Empty() bool { if l.count == 0 { return true } return false } // Clear 清空栈 func (l *LinkStack) Clear() { l.count = 0 l.top = nil }