go-cartesian-product
go-cartesian-product copied to clipboard
a package for building cartesian products in golang
go-cartesian-product
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))
}