diff options
| author | 2026-02-14 00:55:12 +0300 | |
|---|---|---|
| committer | 2026-02-14 01:07:49 +0300 | |
| commit | adaaa6bd68a4af7c2e9a7f4c2ed2036a369d707d (patch) | |
| tree | 0f8c85af9456f1edd3b96a75a36f9b96e4ebecc3 /container/stack.go | |
| download | std-master.tar.gz std-master.tar.bz2 std-master.tar.xz std-master.zip | |
Diffstat (limited to '')
| -rw-r--r-- | container/stack.go | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/container/stack.go b/container/stack.go new file mode 100644 index 0000000..0f5a640 --- /dev/null +++ b/container/stack.go @@ -0,0 +1,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 +} |
