Heim  >  Artikel  >  Backend-Entwicklung  >  GO, Kartenschlüssel wurden alle aktualisiert

GO, Kartenschlüssel wurden alle aktualisiert

WBOY
WBOYnach vorne
2024-02-09 08:36:151147Durchsuche

GO, Kartenschlüssel wurden alle aktualisiert

Die neuesten Nachrichten von PHP-Editor Yuzai: Alle GO-Kartenschlüssel wurden aktualisiert! GO Map Key ist eine leistungsstarke Navigationsanwendung, die Benutzern genaue und praktische Kartennavigationsdienste bietet. Nach dem letzten Update wurden dem GO-Kartenschlüssel weitere Funktionen und Optimierungen hinzugefügt, sodass Benutzer einfacher auf die benötigten Navigationsinformationen zugreifen können. Egal, ob Sie unterwegs sind, reisen oder nach Dienstleistungen in der Nähe suchen, GO Map Key bietet Ihnen umfassende Hilfe. Unabhängig davon, ob Sie mit dem Auto unterwegs sind oder zu Fuß unterwegs sind, kann die GO-Kartentaste die optimale Route planen und Ihnen in Echtzeit Navigationsanweisungen geben. Egal wo Sie sind, der GO-Kartenschlüssel ist Ihr richtiger Helfer auf Reisen!

Frageninhalt

Stimmt etwas mit meiner Vorgehensweise nicht? Ich verstehe nicht, warum alle Kartenschlüssel aktualisiert werden, es sollte nur der „Ether“-Schlüssel sein.

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)

Geh auf den Spielplatz

Die Ausgabe wird sein 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>

Aber ich freue mich darauf 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>

Lösung

Das liegt daran, dass Zuordnungen eigentlich wie Zeiger sind Alle Schlüssel „wlan“, „ether“, „bridge“ und „wg“ zeigen auf denselben Wert (rxTx). Es gibt viele Möglichkeiten, das zu erreichen, was Sie wollen, aber hier ist eine schnelle Lösung:

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)

Das obige ist der detaillierte Inhalt vonGO, Kartenschlüssel wurden alle aktualisiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen