Maison >développement back-end >Golang >GO, les clés de la carte ont toutes été mises à jour

GO, les clés de la carte ont toutes été mises à jour

WBOY
WBOYavant
2024-02-09 08:36:151216parcourir

GO, les clés de la carte ont toutes été mises à jour

Dernières nouvelles de l'éditeur php Yuzai : Toutes les clés de la carte GO ont été mises à jour ! GO Map Key est une application de navigation puissante qui fournit aux utilisateurs des services de navigation cartographique précis et pratiques. Après la dernière mise à jour, la clé de carte GO a ajouté plus de fonctions et d'optimisations, permettant aux utilisateurs d'obtenir plus facilement les informations de navigation dont ils ont besoin. Que vous soyez en voyage, en voyage ou à la recherche de services à proximité, GO Map Key peut vous fournir une aide complète. Que vous voyagiez en voiture ou à pied, la clé de carte GO peut planifier l'itinéraire optimal et vous fournir des conseils de navigation en temps réel. Où que vous soyez, la clé de carte GO est votre assistant idéal lorsque vous voyagez !

Contenu de la question

Y a-t-il quelque chose qui ne va pas dans mon approche ? Je ne comprends pas pourquoi toutes les clés de carte sont mises à jour, ce devrait être juste la clé "éther".

data := []byte(`
    [{".id":"*1","actual-mtu":"1500","default-name":"ether1","disabled":"false","l2mtu":"1514","type":"ether"},{".id":"*2","actual-mtu":"1500","default-name":"bridge2","disabled":"false","l2mtu":"1514","type":"bridge"}] 
`)

var dst []map[string]string
json.Unmarshal(data, &dst)

rxTx := map[string]int{"rx": 0, "tx": 0}
typeMap := map[string]map[string]int{"wlan": rxTx, "ether": rxTx, "bridge": rxTx, "wg": rxTx}

fmt.Println(typeMap)

for _, v := range dst {

    if v["type"] == "ether" {

        typeMap["ether"]["rx"] += 1

        typeMap["ether"]["tx"] += 1
    }
}

fmt.Println(typeMap)

Aller au terrain de jeux

Le résultat sera map[桥:map[rx:1 tx:1] ether:map[rx:1 tx:1] wg:map[rx:1 tx:1] wlan:map[rx:1 tx:1]] p>

Mais j'ai hâte d'y être map[桥:map[rx:0 tx:0] ether:map[rx:1 tx:1] wg:map[rx:0 tx:0] wlan:map[rx:0 tx:0]] p>

Solution

C'est parce que les mappages sont en fait comme des pointeurs Toutes les touches "wlan", "ether", bridge" et "wg" pointent vers la même valeur (rxTx). Il existe de nombreuses façons d'obtenir ce que vous voulez, mais voici une solution rapide :

data := []byte(`
    [{".id":"*1","actual-mtu":"1500","default-name":"ether1","disabled":"false","l2mtu":"1514","type":"ether"},{".id":"*2","actual-mtu":"1500","default-name":"bridge2","disabled":"false","l2mtu":"1514","type":"bridge"}] 
`)

    var dst []map[string]string
    json.Unmarshal(data, &dst)

    rxTxWlan := map[string]int{"rx": 0, "tx": 0}
    rxTxEther := map[string]int{"rx": 0, "tx": 0}
    rxTxBridge := map[string]int{"rx": 0, "tx": 0}
    rxTxWg := map[string]int{"rx": 0, "tx": 0}

    typeMap := map[string]map[string]int{"wlan": rxTxWlan, "ether": rxTxEther, "bridge": rxTxBridge, "wg": rxTxWg}

    fmt.Println(typeMap)

    for _, v := range dst {

        if v["type"] == "ether" {
            typeMap["ether"]["rx"] += 1

            typeMap["ether"]["tx"] += 1
        }
    }

    fmt.Println(typeMap)

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer