Go实现array_trunk函数切割map

package main

import (
	"fmt"
)

func array_trunk(m map[string]int, n int) []map[string]int {
	l := len(m)
	s := l / n

	if l%n != 0 {
		s += 1
	}

	res := make([]map[string]int, s)

	for i := 0; i < s; i++ {
		res[i] = make(map[string]int)
	}
	index := 0
	sk := 0
	for k, _ := range m {
		res[index][k] = m[k]
		sk++
		if sk == n {
			index++
			sk = 0
		}
	}
	return res
}

func main() {
	m := make(map[string]int)
	m["1"] = 1
	m["2"] = 2
	m["3"] = 3
	m["4"] = 4
	m["5"] = 5

	nm := array_trunk(m, 2)
	fmt.Println(nm)
}

输出(由于map无序,所以这个也是不确定的,除非自己先排序)

[map[4:4 5:5] map[1:1 2:2] map[3:3]]

posted @ 2024-06-27 16:33  朝阳1  阅读(8)  评论(0)    收藏  举报