aboutsummaryrefslogtreecommitdiff
path: root/container/stack.go
diff options
context:
space:
mode:
author2026-02-14 00:55:12 +0300
committer2026-02-14 01:07:49 +0300
commitadaaa6bd68a4af7c2e9a7f4c2ed2036a369d707d (patch)
tree0f8c85af9456f1edd3b96a75a36f9b96e4ebecc3 /container/stack.go
downloadstd-master.tar.gz
std-master.tar.bz2
std-master.tar.xz
std-master.zip
added stack, added smapHEADmaster
Diffstat (limited to 'container/stack.go')
-rw-r--r--container/stack.go28
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
+}