Maison >développement back-end >Golang >Comment répartir uniformément une Go Slice en plusieurs morceaux ?

Comment répartir uniformément une Go Slice en plusieurs morceaux ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-20 06:41:08128parcourir

How to Evenly Distribute a Go Slice into Multiple Chunks?

Slice Chunking in Go

Problème :

Comment répartir uniformément une tranche donnée dans plusieurs tranches dans Allez-y ?

Solution :

Pour découper une tranche uniformément, suivez ces étapes :

  1. Déterminez la taille du morceau en divisant la longueur de la tranche d'origine par le nombre de morceaux souhaité.
  2. Initialisez une tranche de tranches pour stocker les morceaux tranches.
  3. Parcourez la tranche d'origine, en ajoutant des morceaux de la taille définie à la tranche de tranches.
  4. Ajustez l'index de fin du dernier morceau pour vous assurer que tous les éléments sont inclus.

Voici une version révisée du code fourni dans la question :

var divided [][]string

chunkSize := (len(logs) + runtime.NumCPU - 1) / runtime.NumCPU

for i := 0; i < len(logs); i += chunkSize {
    end := i + chunkSize

    if end > len(logs) {
        end = len(logs)
    }

    divided = append(divided, logs[i:end])
}

Ce code mis à jour crée des tranches fragmentées en ajoutant des sous-ensembles de la tranche d'origine à la tranche de tranches. La taille des morceaux est calculée pour garantir que tous les éléments sont répartis aussi uniformément que possible.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn