https://github.com/shamsher31/gostack
gostack is heterogeneous stack which allows you to store any type of value.
https://github.com/shamsher31/gostack
golang package stack
Last synced: over 1 year ago
JSON representation
gostack is heterogeneous stack which allows you to store any type of value.
- Host: GitHub
- URL: https://github.com/shamsher31/gostack
- Owner: shamsher31
- License: mit
- Created: 2016-02-29T06:42:01.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2016-07-14T10:58:21.000Z (almost 10 years ago)
- Last Synced: 2025-01-12T14:13:10.959Z (over 1 year ago)
- Topics: golang, package, stack
- Language: Go
- Homepage:
- Size: 3.91 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: license
Awesome Lists containing this project
README
# gostack
[](https://godoc.org/github.com/shamsher31/gostack)
[](https://travis-ci.org/shamsher31/gostack)
[](release)
[](license)
This package implements heterogeneous stack which allows you to store any type of value
as compared to the built-in slice and maps which will only allow specific types. Its a thread safe so it works pretty well with multiple goroutines.
### How to install
```go
go get github.com/shamsher31/gostack
```
### How to use
```go
package main
import (
"fmt"
"github.com/shamsher31/gostack"
)
func main() {
// Declare new stack
var myStack stack.Stack
fmt.Println("Stack is empty : ", myStack.IsEmpty())
//Push some elements of different types in Stack
myStack.Push(10)
myStack.Push([]string{"Shamsher", "Ansari"})
myStack.Push(13.5)
myStack.Push("My Awesome stack")
fmt.Println("Elements of stack : ", myStack)
fmt.Println("Stack is empty : ", myStack.IsEmpty())
if myStack.IsEmpty() == false {
fmt.Println("Total elements in stack : ", myStack.Len())
}
top, err := myStack.Top()
if err != nil {
fmt.Println(err)
}
fmt.Println("Top of the stack : ", top)
elem, err := myStack.Pop()
if err != nil {
fmt.Println(err)
}
fmt.Println("Poped element : ", elem)
fmt.Println("Elements of stack : ", myStack)
}
```
### Why
This package is born while learning and experimenting with golang to understand how pointers, mutual exclusion locks and interface works together.
### License
MIT © [Shamsher Ansari](https://github.com/shamsher31)