Go stack clear solution
\ntype MinStack struct {\n    data []int // elements stack\n    mins []int // minimums stack\n}\n\nfunc Constructor() MinStack {\n    return MinStack{}\n}\n\nfu
```\ntype MinStack struct {\n    data []int // elements stack\n    mins []int // minimums stack\n}\n\nfunc Constructor() MinStack {\n    return MinStack{}\n}\n\nfunc (s *MinStack) Push(val int)  {\n    if len(s.mins) == 0 || val <= s.GetMin() { s.mins = append(s.mins, val) }\n    s.data = append(s.data, val)\n}\n\nfunc (s *MinStack) Pop()  {\n    if s.Top() == s.GetMin() { s.mins = s.mins[:len(s.mins)-1] }\n    s.data = s.data[:len(s.data)-1]\n}\n\nfunc (s *MinStack) Top() int {\n    return s.data[len(s.data)-1]\n}\n\nfunc (s *MinStack) GetMin() int {\n    return s.mins[len(s.mins)-1]\n}\n```
['Stack', 'Go']