Skip to content

Repository files navigation

AtomicGo



AtomicGo | stack

DownloadsLatest ReleaseTestsCoverageUnit test countLicense: MITGo report


Documentation | Contributing | Code of Conduct


go get atomicgo.dev/stack

stack

import"atomicgo.dev/stack"

Package stack is a simple implemntation of a stack data structure. It uses generics to make it type safe.

Index

type Stack

Stack is a simple implementation of a stack data structure.

typeStack[Tany] struct {
// contains filtered or unexported fields
}

func New

funcNew[Tany]() Stack[T]

New returns a new stack.

package main
import (
"atomicgo.dev/stack"
)
funcmain() {
stack.New[string]()
}

func (*Stack[T]) Clear

func (s*Stack[T]) Clear()

Clear removes all items from the stack.

package main
import (
"fmt""atomicgo.dev/stack"
)
funcmain() {
s:=stack.New[string]()
s.Push("Hello")
s.Push("World")
s.Clear()
fmt.Println(s)
}

Output

[]

func (*Stack[T]) Contains

func (s*Stack[T]) Contains(itemT) bool

Contains returns true if the stack contains the item.

package main
import (
"fmt""atomicgo.dev/stack"
)
funcmain() {
s:=stack.New[string]()
s.Push("Hello")
s.Push("World")
fmt.Println(s.Contains("Hello"))
fmt.Println(s.Contains("Foo"))
}

Output

true
false

func (*Stack[T]) IsEmpty

func (s*Stack[T]) IsEmpty() bool

IsEmpty returns true if the stack is empty.

package main
import (
"fmt""atomicgo.dev/stack"
)
funcmain() {
s:=stack.New[string]()
s.Push("Hello")
s.Push("World")
fmt.Println(s.IsEmpty())
s.Clear()
fmt.Println(s.IsEmpty())
}

Output

false
true

func (*Stack[T]) Peek

func (s*Stack[T]) Peek() T

Peek returns the top item of the stack without removing it.

func (*Stack[T]) Pop

func (s*Stack[T]) Pop() T

Pop removes an item from the stack and returns it. Panics if the stack is empty. Use PopSafe for safer access to the Stack.

package main
import (
"fmt""atomicgo.dev/stack"
)
funcmain() {
s:=stack.New[string]()
s.Push("Hello")
s.Push("World")
fmt.Println(s.Pop())
fmt.Println(s.Pop())
}

Output

World
Hello

func (*Stack[T]) PopSafe

func (s*Stack[T]) PopSafe() T

PopSafe removes an item from the stack and returns it. Returns the zero value of the type if the stack is empty. To make this function safe, it uses reflection and is therefore slower than Pop.

package main
import (
"fmt""atomicgo.dev/stack"
)
funcmain() {
s:=stack.New[string]()
s.Push("Hello")
s.Push("World")
fmt.Println(s.PopSafe())
fmt.Println(s.PopSafe())
fmt.Println(s.PopSafe())
}

Output

World
Hello

func (*Stack[T]) Push

func (s*Stack[T]) Push(item...T)

Push adds items to a stack.

package main
import (
"fmt""atomicgo.dev/stack"
)
funcmain() {
s:=stack.New[string]()
s.Push("Hello")
s.Push("World")
fmt.Println(s)
}

Output

[Hello World]

func (*Stack[T]) Size

func (s*Stack[T]) Size() int

Size returns the size of the stack.

package main
import (
"fmt""atomicgo.dev/stack"
)
funcmain() {
s:=stack.New[string]()
s.Push("Hello")
s.Push("World")
fmt.Println(s.Size())
}

Output

2

func (Stack[T]) String

func (sStack[T]) String() string
package main
import (
"fmt""atomicgo.dev/stack"
)
funcmain() {
s:=stack.New[string]()
s.Push("Hello")
s.Push("World")
fmt.Println(s.String())
}

Output

[Hello World]

func (*Stack[T]) Values

func (s*Stack[T]) Values() []T

Values returns the values of the stack as a slice.

package main
import (
"fmt""atomicgo.dev/stack"
)
funcmain() {
s:=stack.New[string]()
s.Push("Hello")
s.Push("World")
fmt.Println(s.Values())
}

Output

[Hello World]

Generated by gomarkdoc


AtomicGo.dev · with ❤️ by @MarvinJWendt | mjw.dev

About

📚 A simple stack implementation in Go

Topics

Resources

Code of conduct

Stars

8 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages

Generated from atomicgo/template