stacks
is a Go library with generics implementing multiple Stack data structures
for optimizing by use-case.
stack (noun):
1. a LIFO data structure
The stacks
package can be added to a Go project with go get
.
go get cattlecloud.net/go/stacks@latest
import "cattlecloud.net/go/stacks"
The Simple
stack type is backed by a normal Go slice and is a good choice for
small numbers of elements or where the size of the stack will not increase or
decrease repeatedly - this is important so as to minmize re-copying the data as
the underlying slice is resized.
s := stacks.Simple[string]()
s.Push("how")
s.Push("are")
s.Push("you")
fmt.Println(s.Pop()) // "you"
The Linked
stack type is backed by a linked-list and is a good choice for large
numbers of elements or where the size of the stack does increase or decrease
repeatedly. The nature of the linked list avoids the need to re-copy elements as
the size of the data structure changes over time.
s := stacks.Linked[string]()
s.Push("foo")
s.Push("bar")
s.Push("baz")
fmt.Println(s.Pop()) // "baz"
s.Push[T](item T)
s.Pop() T
s.Peek() T
s.Empty() bool
s.Size() int
The cattlecloud.net/go/stacks
module is opensource under the BSD-3-Clause license.