有这么个需求, 给一组维度, 维度的数量不固定, 各个维度的取值数目也不一定。 类似
di: 0, 1, 2
dj: 0, 1
dk: 0, 1, 2, 3, 4
...
怎么取得这么一组给定不定长维度下值的组合?
# example
package main
import "fmt"
var (
di = []int{0, 1, 2}
dj = []int{0, 1}
dk = []int{0, 1, 2, 3, 4}
)
func main() {
getResult(di, dj, dk)
}
func getResult(di, dj, dk []int) {
for _, i := range di {
for _, j := range dj {
for _, k := range dk {
fmt.Printf("[%d, %d, %d] \t", i, j, k)
}
}
}
}
# result
[0, 0, 0] [0, 0, 1] [0, 0, 2] [0, 0, 3] [0, 0, 4] [0, 1, 0] [0, 1, 1] [0, 1, 2] [0, 1, 3] [0, 1, 4] [1, 0, 0] [1, 0, 1] [1, 0, 2] [1, 0, 3] [1, 0, 4] [1, 1, 0] [1, 1, 1] [1, 1, 2] [1, 1, 3] [1, 1, 4] [2, 0, 0] [2, 0, 1] [2, 0, 2] [2, 0, 3] [2, 0, 4] [2, 1, 0] [2, 1, 1] [2, 1, 2] [2, 1, 3] [2, 1, 4]
如果维度再增加, 还得手动加上一套for range
。
有没有更好的解决方案?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.