mirror of
https://github.com/cubixle/codekata-golang.git
synced 2026-04-24 22:44:44 +01:00
36 lines
476 B
Go
36 lines
476 B
Go
package main
|
|
|
|
type Stack []interface{}
|
|
|
|
func MakeStack() *Stack {
|
|
return &Stack{}
|
|
}
|
|
|
|
func (s Stack) IsEmpty() bool {
|
|
return len(s) == 0
|
|
}
|
|
|
|
func (s Stack) Len() int {
|
|
return len(s)
|
|
}
|
|
|
|
func (s Stack) Top() interface{} {
|
|
if s.IsEmpty() {
|
|
return nil
|
|
}
|
|
return s[len(s)-1]
|
|
}
|
|
|
|
func (s *Stack) Push(item interface{}) {
|
|
*s = append(*s, item)
|
|
}
|
|
|
|
func (s *Stack) Pop() interface{} {
|
|
if s.IsEmpty() {
|
|
return nil
|
|
}
|
|
ret := (*s)[len(*s)-1]
|
|
*s = (*s)[:len(*s)-1]
|
|
return ret
|
|
}
|