package shsh type TokenStack struct { buffer []*Token int capacity } func (s *Stack) Push(v *Token) { s.capacity++ *s.buffer = append(*s.buffer, v) } func (s *Stack) Pop() *Token { if s.capacity <= 0 { return nil } s.capacity-- res := *s.buffer[len(*s.buffer) - 1] *s = *s.buffer[ :len(*s) - 1] return ret }