golang如何trunk一个map

发布于 2022-09-06 04:43:01 字数 65 浏览 9 评论 0

golang如何实现一个像php的array_trunk()的方法来chunk一个map?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

今天小雨转甜 2022-09-13 04:43:01
package main

import (
    //"math"
    "fmt"
)

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

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


    fmt.Println(s)
    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 {
        fmt.Println(index, k,m[k])
        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)
}
撩动你心 2022-09-13 04:43:01
func (d *scanner)ChunksAsCPUNumber()  {
    var divided [][]string
    counts := d.Count()
    CPUNum := runtime.NumCPU()
    size := (counts + CPUNum - 1) / CPUNum

    for i := 0; i < counts; i += size {
        end := i + size

        if end > counts {
            end = counts
        }

        divided = append(divided, d.Files[i:end])
    }

    fmt.Printf("%#v\n", divided)
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文