diff options
Diffstat (limited to 'stack.go')
| -rw-r--r-- | stack.go | 12 |
1 files changed, 9 insertions, 3 deletions
@@ -6,11 +6,17 @@ func (s *Stack) push(v float64) { *s = append(*s, v) } -func (s *Stack) pop() *float64 { +func (s *Stack) pop() (float64, error) { if len(*s) > 0 { v := (*s)[len(*s)-1] *s = (*s)[:len(*s)-1] - return &v + return v, nil } - return nil + return 0, EmptyStackErr{} +} + +type EmptyStackErr struct{} + +func (e EmptyStackErr) Error() string { + return "empty stack" } |