aboutsummaryrefslogtreecommitdiff
path: root/container/stack.go
blob: 0f5a640ce502ddf0b967f114d5c79e623dfd8f3c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// Package container содержит стандартные контейнеры для данных.
package container

// Stack container.
type Stack[T any] []T

// Push element to stack.
func (s *Stack[T]) Push(e T) {
	*s = append(*s, e)
}

// Pop element from stack.
func (s *Stack[T]) Pop() T {
	var e T
	if len(*s) > 0 {
		e, *s = (*s)[len(*s)-1], (*s)[:len(*s)-1]
	}
	return e
}

// Top element on stack.
func (s *Stack[T]) Top() T {
	var e T
	if len(*s) > 0 {
		e = (*s)[len(*s)-1]
	}
	return e
}