scratch/proglangs/rpn-go/stack.go
2024-12-26 14:02:40 -03:00

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]
}