31 lines
443 B
Go
31 lines
443 B
Go
package main
|
|
|
|
import "errors"
|
|
|
|
const StackSize = 64
|
|
|
|
type StackType int
|
|
type Stack struct {
|
|
data []StackType
|
|
pos int
|
|
}
|
|
|
|
func (s *Stack) push(val StackType) {
|
|
s.data = append(s.data, val)
|
|
s.pos++
|
|
}
|
|
|
|
func (s *Stack) pop() (StackType, error) {
|
|
if s.pos-1 < 0 {
|
|
return 0, errors.New("stack is empty")
|
|
}
|
|
s.pos--
|
|
res := s.data[s.pos]
|
|
s.data = s.data[:s.pos]
|
|
return res, nil
|
|
}
|
|
|
|
func (s *Stack) wipe() {
|
|
s.pos = 0
|
|
s.data = s.data[:0]
|
|
}
|