2025-11-08 09:37:30 +03:00

34 lines
469 B
Go

package core
type Stack[T any] struct {
data []T
}
func (s *Stack[T]) Push(item T) {
s.data = append(s.data, item)
}
func (s *Stack[T]) Pop() T {
l := len(s.data)
if l == 0 {
panic("stack is empty")
}
item := s.data[l-1]
var zero T
s.data[l-1] = zero
s.data = s.data[:l-1]
return item
}
func (s *Stack[T]) Peek() T {
l := len(s.data)
if l == 0 {
panic("stack is empty")
}
return s.data[l-1]
}
func (s *Stack[T]) Len() int {
return len(s.data)
}