Maison > développement back-end > Golang > Comment supprimer les données d'interface en double dans {}interface{}

Comment supprimer les données d'interface en double dans {}interface{}

PHPz
Libérer: 2024-02-09 23:12:09
avant
1024 Les gens l'ont consulté

Comment supprimer les données dinterface en double dans {}interface{}

l'éditeur php Youzi vous présentera comment supprimer les données d'interface en double{} dans l'{}interface. Au cours du processus de développement, nous rencontrons souvent des situations dans lesquelles nous devons supprimer les données en double. Les données en double affectent non seulement les performances du système, mais causent également des problèmes aux utilisateurs. Afin de résoudre ce problème, nous pouvons utiliser certaines techniques et méthodes pour détecter et supprimer les données d'interface en double, améliorant ainsi l'efficacité du système et l'expérience utilisateur. Ensuite, nous vous donnerons les détails sur la façon d’y parvenir.

Contenu de la question

Comment supprimer les entrées d'interface{} en double des données []interface{}.

"data": [
        {
            "signstatus": true,
            "username": "yash90"
        },
        {
            "signstatus": false,
            "username": "dhananjay"
        },
        {
            "signstatus": true,
            "username": "yash90"
        }
    ],
Copier après la connexion

Actuellement, j'ai les données ci-dessus et je souhaite supprimer les entrées en double pour le même nom d'utilisateur. Alors, de quel type de logique ai-je besoin dans la fonction ci-dessous.

func removeduplicateentries(listofusernamesandsignstatus []interface{}) []interface{} {
    updatedlistofusernamesandsignstatus := make([]interface{}, 0)
    for _, value := range listofusernamesandsignstatus {
        if value != nil {
        updatedlistofusernamesandsignstatus = append(updatedlistofusernamesandsignstatus, value)
        }
    }
    return updatedlistofusernamesandsignstatus
}
Copier après la connexion

Une idée de comment faire ça ?

Je m'attends à ce que le résultat soit le suivant :

"data": [
        {
            "signstatus": true,
            "username": "Yash90"
        },
        {
            "signstatus": false,
            "username": "Dhananjay"
        },
    ],
Copier après la connexion

Solution de contournement

Tout d'abord, je pense que dans ce cas précis, utilisez []interface{} 作为输入是一个坏主意。正确的输入应该是 []*entry avec

type entry struct {
    username   string `json:"username"`
    signstatus bool   `json:"signstatus"`
}
Copier après la connexion

ou du moins map[string]interface{}.

Mais si []interface{} est un incontournable, alors voici la solution.

func removeDuplicateEntries(entries []interface{}) []interface{} {
    uniqueEntries := make([]interface{}, 0)
    usernameMap := make(map[string]bool)
    for _, entry := range entries {
        entryCast, ok := entry.(map[string]interface{})
        if !ok {
            continue
        }
        username := entryCast["username"].(string)
        if usernameMap[username] {
            continue
        }
        usernameMap[username] = true
        uniqueEntries = append(uniqueEntries, entry)
    }

    return uniqueEntries
}
Copier après la connexion

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:stackoverflow.com
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