package util type Stack[T any] []T func (s *Stack[T]) Push(v T) { *s = append(*s, v) } func (s *Stack[T]) Pop() T { v := (*s)[len(*s)-1] *s = (*s)[:len(*s)-1] return v } func (s Stack[T]) Peek() T { return s[len(s)-1] } func (s Stack[T]) Empty() bool { return len(s) == 0 }