鍍金池/ 問答/人工智能  PHP  GO/ golang如何trunk一個map

golang如何trunk一個map

golang如何實現(xiàn)一個像php的array_trunk()的方法來chunk一個map?

回答
編輯回答
檸檬藍
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)
}
2018年5月13日 03:32
編輯回答
風清揚
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)
}
2017年4月20日 02:32