a package for building cartesian products in golang
keep in mind, that because how golang handles maps your results will not be "in order"
In order to start, go get
this repository:
go get github.com/schwarmco/go-cartesian-product
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]
}
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))
}