Data Structures

Generic datastructures and algorithms in Go.

Newest releases

rhnvrm LinkPage is a FOSS self-hosted alternative to link listing websites such as LinkTree and

josevalim The goal of this repository is to share solutions to a common problem of traversing and annotating data-structures across a variety of programming languages.

HewlettPackard structex provides annotation rules that extend Go structures for implementation of encoding and decoding of byte backed data frames.

jmattheis goverter is a tool for creating type-safe converters. All you have to do is create an interface and execute goverter.

hexops Valast converts Go values at runtime into their go/ast equivalent,

nofeaturesonlybugs Package set is a small wrapper around the official reflect package that facilitates loose type conversion and assignment into native Go types.

rsms Based on a immutable persistent Hash Array Mapped Trie (HAMT) Minimal interface to the core HAMT implementation so that you can easily implement your own structures on top of it.

RussellLuo slidingwindow Golang implementation of Sliding Window Algorithm for distributed rate limiting. Installation $ go get -u Design slidingwindow is an implement

cespare xxhash xxhash is a Go implementation of the 64-bit xxHash algorithm, XXH64. This is a high-quality hashing algorithm that is much faster than anything in the Go standard library. This package provides a straightforw

haoel Downsampling Algorthim The Golang implemtation for downsampling time series data algorthim Downsampling Algorthim Background Acknowledgement Usage Peformance Profiling Benchmark

openacid low low level data type and utils in Golang. A stable low level function set is the basis of a robust architecture. It focuses on stability and requires high test coverage. Status This project has

itsmontoya LinkedList LinkedList is a simple doubly linked-list implementation which offers: Append Prepend Remove ForEach ForEachRev Map Filter Reduce Aren't linked lists bad? I

vmarkovtsev go-lcss Fast Longest Common Substring algorithm in Go. Overview • How To Use • Installation • Contributions • License Overview Longest Common Substring (don't confuse with Longest Common Subs

TheAlgorithms The Algorithms - Go Algorithms implemented in Go (for education) These algorithms are for demonstration purposes only. There are many sort implementations in the Go standard library that may have better perfo

MaxHalford eaopt is an evolutionary optimization library Table of Contents Changelog Example Background Features Usage General advice Genetic algor

danaugrs go-tsne A Go implementation of t-Distributed Stochastic Neighbor Embedding (t-SNE), a prize-winning technique for dimensionality reduction particularly well suited for visualizing high-dimensional datasets.

murphy214 geohashtree What is it? This library is designed to construct and use large k/v stores to do super quick point-in-polygon queries. This isn't something that I haven't tried before in go but this time with a m

cornelk hashmap Overview A Golang lock-free thread-safe HashMap optimized for fastest read access. Usage Set a value for a key in the map: m := &HashMap{} m.Set("amount", 123) Read a value for

shivamMg ppds Pretty Print Data Structures Stacks, queues, trees and linked lists are data structures that you might find yourself working with quite often. This library lets you pretty print these with minimum effort. Certa

muesli kmeans k-means clustering algorithm implementation written in Go What It Does k-means clustering partitions a multi-dimensional data set into k clusters, where each data point belongs to the cluster with the

0xAX go-algorithms go-algorithms - implementation of different algorithms and data structures with golang. Usage Clone repo, it must be in your $GOPATH.

raviqqe hamt Immutable and Memory Efficient Maps and Sets in Go. This package hamt provides immutable collection types of maps (associative arrays) and sets implemented as Hash-Array Mapped Tries (HAMTs). All operations o

meditativeape wikiracer Finds a path between two Wikipedia articles, using only Wikipedia links. Approach Wikiracer runs a one-way parallel BFS (Breadth First Search) from the given start URL to crawl the graph of Wikiped

mpraski Clusters Go implementations of several clustering algoritms (k-means++, DBSCAN, OPTICS), as well as utilities for importing data and estimating optimal number of clusters. The reason This library was built

ammario Just write your own map wrappers mapgen A tool which generates thread safe maps for Go. Features: Supports any key/value pair supported by Go's native maps Allows complex operations via Lock() and Unlock() Gen

b3ntly Features In-Memory or Redis based storage Concurrency-safe Put, Take, Count, DynamicFill, and many more primitives Designed for distributed systems Well tested Well documented Install

axiomhq FlipCounter Data-structure with 5 byte keys and 3 bytes counters (64 bits per entry). The 3 byte counter (24 bit) uses 23 for counting (guaranteeing 100% accurate counting per key up to (2^23)-1 ==> 8388607 hits. T

lafikl HKSample An algorithm to sample a complete session by hashing its key, and then we see if the keys fits in one the buckets within the sampling percentage. Installation go get

lukechampine randmap go get randmap provides methods for (efficiently) accessing random elements of maps, and iterating through maps in random order. Here is a blog post that dives deeper into ho

cstockton Go Package: iter Get: go get -u Example: func Example() { v := []interface{}{"a", "b", []string{"c", "d"}} err := iter.Walk(v, func(el iter.Pair) error { // check for

uber-go Go rate limiter This package provides a Golang implementation of the leaky-bucket rate limit algorithm. This implementation refills the bucket based on the time elapsed between requests instead of requiring an interval

moxar Arithmetic parser This library parses and solves a mathematical expression. It uses a Shunting-Yard algorithm (aka Reverse-Polish notation). Usual mathematic constants and functions are defined in this package (see

heetch LAPJV - Go Implementation This repository is the Golang implementation of the LAPJV algorithm for assignment problem and includes tools to ease testing and library usage. Overview The repository contains