Maison > développement back-end > Golang > Comment utiliser Golang pour implémenter la sommation de classification

Comment utiliser Golang pour implémenter la sommation de classification

PHPz
Libérer: 2023-04-24 10:57:54
original
856 Les gens l'ont consulté

En programmation informatique, la sommation catégorielle est un problème courant, c'est-à-dire classer un ensemble de nombres en fonction de leurs attributs et additionner les nombres dans chaque catégorie. Ce problème a des applications dans de nombreux domaines, tels que les statistiques, l'exploration de données, l'analyse de données, etc. Dans cet article, nous présenterons comment implémenter la sommation catégorielle à l'aide de Golang.

Tout d'abord, nous devons définir une structure de données pour représenter un nombre, contenant deux attributs, à savoir la valeur et la catégorie. Dans Golang, nous pouvons utiliser des structures pour implémenter cette structure de données. Le code est le suivant :

type Data struct {
    value float64
    category string
}
Copier après la connexion

Ensuite, nous devons créer une fonction qui classe l'ensemble de données d'entrée en fonction de ses catégories et trie les nombres dans chaque catégorie. . Cette fonction doit accepter une liste de données en entrée et renvoyer un dictionnaire où les clés sont les catégories et les valeurs sont la somme des nombres dans cette catégorie. En Golang, nous pouvons utiliser le type map pour implémenter ce dictionnaire. Le code est le suivant :

func sumByCategory(dataList []Data) map[string]float64 {
    sumsByCategory := make(map[string]float64)
    for _, data := range dataList {
        sumsByCategory[data.category] += data.value
    }
    return sumsByCategory
}
Copier après la connexion

Cette fonction crée d'abord une carte vide pour enregistrer la somme des nombres dans chaque catégorie. Ensuite, parcourez la liste des données d’entrée et ajoutez chaque nombre à la somme de la catégorie correspondante. Enfin, renvoyez la carte qui contient la somme des nombres dans chaque catégorie.

Ce qui suit est un exemple de programme complet pour tester la fonction que nous avons implémentée ci-dessus :

package main

import "fmt"

type Data struct {
    value float64
    category string
}

func sumByCategory(dataList []Data) map[string]float64 {
    sumsByCategory := make(map[string]float64)
    for _, data := range dataList {
        sumsByCategory[data.category] += data.value
    }
    return sumsByCategory
}

func main() {
    dataList := []Data{
        {2.0, "A"},
        {3.2, "B"},
        {4.5, "C"},
        {1.8, "A"},
        {2.3, "B"},
        {5.1, "C"},
    }

    sumsByCategory := sumByCategory(dataList)
    fmt.Println(sumsByCategory)
}
Copier après la connexion

L'exécution de ce programme produira les résultats suivants :

map[A:3 B:5.5 C:9.6]
Copier après la connexion

Ce résultat montre que notre fonction de somme catégorielle additionne correctement les données d'entrée classées en fonction de leurs catégories , et les nombres dans chaque catégorie ont été additionnés.

Enfin, il est important de noter que dans des problèmes réels, les données peuvent être très volumineuses et ne peuvent pas toutes être stockées en mémoire. Dans ce cas, nous pouvons utiliser un algorithme de tri externe pour trier les données en morceaux, puis effectuer une sommation de classification. Cet algorithme impliquera davantage de fonctions intégrées à Golang et de bibliothèques externes et dépasse le cadre de cet article.

En bref, la sommation de classification est un problème courant et est très facile à mettre en œuvre dans Golang. En utilisant les types struct et map de Golang, nous pouvons facilement classer un ensemble de données en fonction de ses attributs et additionner les nombres dans chaque catégorie.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal