| package stack | |
| // Stack is a stack interface for integers. | |
| type Stack struct { | |
| Push func(int) | |
| Pop func() int | |
| Length func() int | |
| } | |
| // NewStack returns a new stack of integers. | |
| func NewStack() Stack { | |
| slice := make([]int, 0) | |
| return Stack{ | |
| Push: func(i int) { | |
| slice = append(slice, i) | |
| }, | |
| Pop: func() int { | |
| res := slice[len(slice)-1] | |
| slice = slice[:len(slice)-1] | |
| return res | |
| }, | |
| Length: func() int { | |
| return len(slice) | |
| }, | |
| } | |
| } |