From ac7df7d646ce070c75329d834c0f1a0302602a36 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Tue, 24 Mar 2015 01:20:30 +0100 Subject: Value type --- stack.go | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/stack.go b/stack.go index 3546588..49a59da 100644 --- a/stack.go +++ b/stack.go @@ -2,7 +2,8 @@ package stack // Stack contains a generic value -type Stack []interface{} +type Value interface{} +type Stack []Value // NewStack returns a new Stack func NewStack() Stack { @@ -10,31 +11,31 @@ func NewStack() Stack { } // Push generic value into Stack -func (s *Stack) Push(v interface{}) { +func (s *Stack) Push(v Value) { *s = append(*s, v) } // Pop generic value from Stack -func (s *Stack) Pop() (v interface{}) { - if size := len(*s); size >= 1 { +func (s *Stack) Pop() (v Value) { + if size := len(*s); size > 0 { v, *s = (*s)[size-1], (*s)[:size-1] } return v } // Peek returns top value from Stack -func (s Stack) Peek() interface{} { +func (s Stack) Peek() Value { return s[len(s)-1] } -// Depth returns actual size of Stack -func (s Stack) Depth() int { - return len(s) -} - // Swap swapes two top values func (s Stack) Swap() { if size := len(s); size >= 2 { s[size-1], s[size-2] = s[size-2], s[size-1] } } + +// Depth returns actual size of Stack +func (s Stack) Depth() int { + return len(s) +} -- cgit v1.2.3