我有一个二维数组,我如何才能用一个维度制作多个数组?
我需要单独的数组,因为我需要将具有单一维度的数组传递给另一个函数。
actions := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
batchSize := 3
batches := make([][]int, 0, (len(actions)+batchSize-1)/batchSize)
for batchSize < len(protoFiles) {
actions, batches = actions[batchSize:], append(batches, actions[0:batchSize:batchSize])
}
batches = append(batches, actions)
最佳答案
我如何...用一个维制作多个数组?
例如,
package main
import "fmt"
func batchActions(a []int, c int) [][]int {
r := (len(a) + c - 1) / c
b := make([][]int, r)
lo, hi := 0, c
for i := range b {
if hi > len(a) {
hi = len(a)
}
b[i] = a[lo:hi:hi]
lo, hi = hi, hi+c
}
return b
}
func main() {
actions := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
fmt.Println(actions)
batchSize := 3
batches := batchActions(actions, batchSize)
fmt.Println(batchSize, batches)
}
游乐场:https://play.golang.org/p/ETazZl1a-2F
输出:
[0 1 2 3 4 5 6 7 8 9]
3 [[0 1 2] [3 4 5] [6 7 8] [9]]
关于arrays - Golang将2维数组拆分为一个维的多个数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60096877/