diff --git a/src/hi/sku.go b/src/hi/sku.go new file mode 100644 index 00000000..8a5fb71b --- /dev/null +++ b/src/hi/sku.go @@ -0,0 +1,4 @@ +package hi + +func init() { +} diff --git a/src/sku.go b/src/sku.go new file mode 100644 index 00000000..c6668757 --- /dev/null +++ b/src/sku.go @@ -0,0 +1,25 @@ +package main + +import "fmt" + +func helper(chunks [][]string, chunkIndex int, prev []string, res [][]string) [][]string { + chunk := chunks[chunkIndex] + isLast := chunkIndex == len(chunks)-1 + for _, val := range chunk { + if cur := append(prev, val); isLast { + res = append(res, cur) + } else { + res = helper(chunks, chunkIndex+1, cur, res) + } + } + return res +} +func combine(chunks ...[]string) (res [][]string) { + return helper(chunks, 0, []string{}, res) +} +func main() { + names := []string{"iPhone X", "iPhone XS"} + colors := []string{"黑色", "白色"} + storage := []string{"64g", "256g"} + fmt.Println(combine(names, colors, storage)) +}