All Projects → schwarmco → go-cartesian-product

schwarmco / go-cartesian-product

Licence: MIT license
a package for building cartesian products in golang

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to go-cartesian-product

fast-cartesian
Fast cartesian product
Stars: ✭ 51 (+131.82%)
Mutual labels:  cartesian-products
combinatoricslib
Combinatorial Objects Generators for Java 7+.
Stars: ✭ 83 (+277.27%)
Mutual labels:  cartesian-products

go-cartesian-product

Build Status GoDoc

a package for building cartesian products in golang

keep in mind, that because how golang handles maps your results will not be "in order"

Installation

In order to start, go get this repository:

go get github.com/schwarmco/go-cartesian-product

Usage

import (
    "fmt"
    "github.com/schwarmco/go-cartesian-product"
)

func main() {
    
    a := []interface{}{1,2,3}
    b := []interface{}{"a","b","c"}

    c := cartesian.Iter(a, b)

    // receive products through channel
    for product := range c {
        fmt.Println(product)
    }

    // Unordered Output:
    // [1 c]
    // [2 c]
    // [3 c]
    // [1 a]
    // [1 b]
    // [2 a]
    // [2 b]
    // [3 a]
    // [3 b]
}

Working with Types

Because you are giving interfaces to Iter() and golang doesn't support mixed-type-maps (which is why i created this package) you have to assert types, when you do function-calls or something like that:

func someFunc(a int, b string) {
    // some code
}

// ...

for product := range c {
    someFunc(product[0].(int), product[1].(string))
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].