Stackgo is a slice-based implementation of a simple stack in Go. It uses a pre-alloc pagination strategy which adds little memory overhead to the stack allocation but makes push operations faster than with a classic Stack implementation.
Please NOTE that the current implementation is NOT thread-safe.
You can either import this package directly:
import "github.com/alediaferia/stackgo"
or through gopkg.in
import "gopkg.in/alediaferia/stackgo.v1"
Currently only version 1 has been released.
Using it is pretty straightforward
package main
import (
"github.com/alediaferia/stackgo"
"fmt"
)
func main() {
stack := stackgo.NewStack()
// Stack supports any type
// so we just push whatever
// we want here
stack.Push(75)
stack.Push(124)
stack.Push("Hello World!")
for stack.Size() > 0 {
fmt.Printf("Just popped %v\n", stack.Pop())
}
}
Check the implementation details here.
I'd really appreciate contributions, otherwise I wouldn't have made this open 😃. Also, if you have suggestions on how to make this perform even faster I'd be really happy to hear about them.
This code is released under the MIT License term, included in this project tree. Copyright © 2015, Alessandro Diaferia [email protected]