Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Tukar peta golang kepada struktur peta yang lain

Tukar peta golang kepada struktur peta yang lain

PHPz
PHPzke hadapan
2024-02-14 11:33:18887semak imbas

Tukar peta golang kepada struktur peta yang lain

PHP Editor Apple akan memperkenalkan anda cara menukar peta Golang kepada struktur peta lain. Semasa proses pembangunan, kadangkala kita perlu melakukan beberapa operasi penukaran pada peta asal untuk memenuhi keperluan khusus. Sama ada penukaran jenis data atau penyusunan semula struktur, ia boleh dicapai melalui beberapa kaedah mudah. Artikel ini akan menganalisis proses ini secara terperinci untuk anda, membantu anda menguasai teknik ini dengan cepat dan meningkatkan kecekapan pembangunan. Mari kita terokai proses penukaran yang menarik ini bersama-sama!

Kandungan soalan

Saya perlukan bantuan untuk menukar peta input ini kepada peta output. Saya cuba menggunakan suis/kes dan tidak berjaya. Terima kasih banyak-banyak!

Masukkan:

values{
                    "toto_voiture_brand": ad{
                        "citroen": "citroen",
                    },
                    "toto_voiture_model": ad{
                        "citroen_toto": "c3",
                    },
                    "toto_moto_brand": ad{
                        "kawasaki": "kawasaki",
                    },
                    "toto_moto_model": ad{
                        "kawasaki_tata": "ninja 1000 sx",
                    },
                    "toto_camion_brand": ad{
                        "renault": "renault",
                        "peugeot": "peugeot",
                    },
                    "toto_camion_model": ad{
                        "renault_toto":  "j5",
                        "peugeot_tata": "255",
                    },
                },
            }

Output

Values{
                "toto_voiture_model": {
                    "Citroen": {
                        {Value: "C3"},
                    },
                },
                "toto_moto_model": {
                    "Kawasaki": {
                        {Value: "Ninja 1000 SX"},
                    },
                },
                "toto_camion_model": {
                    "RENAULT": {
                        {Value: "J5"},
                    },
                    "PEUGEOT": {
                        {Value: "255"},
                    },
                },
            }

Saya telah mencuba menggunakan kes suis dan gelung untuk dan peta. Tetapi saya tidak mempunyai peserta keputusan, saya tidak menemui cara untuk memadankan setiap peta, kunci dan nilai. Terima kasih banyak

Penyelesaian

Saya harus menggunakan kod berikut untuk mengurus perkara yang anda perlukan:

package main

import (
    "encoding/json"
    "fmt"
    "strings"
)

type Output struct {
    Value string `json:"Value"`
}

func main() {
    // declare output
    output := make(map[string]map[string]Output, 0)
    // input
    input := make(map[string]map[string]string, 0)
    input["toto_voiture_brand"] = map[string]string{
        "CITROEN": "CITROEN",
    }
    input["toto_voiture_model"] = map[string]string{
        "CITROEN_toto": "C3",
    }
    input["toto_moto_model"] = map[string]string{
        "KAWASAKI_tata": "Ninja 1000 SX",
    }
    input["toto_camion_model"] = map[string]string{
        "RENAULT_toto": "J5",
        "PEUGEOT_tata": "255",
    }

    // transformation
    for k, v := range input {
        if strings.HasSuffix(k, "_model") {
            tempMap := make(map[string]Output, len(v))
            for kk, vv := range v {
                key := strings.Split(kk, "_")[0]
                tempMap[key] = Output{
                    Value: vv,
                }
            }
            output[k] = tempMap
        }
    }

    data, _ := json.MarshalIndent(&output, "", "\t")
    fmt.Println(string(data))
}

Saya menambah beberapa komen dalam kod hanya untuk memisahkan pelbagai bahagian. Dua bahagian pertama hanya digunakan untuk menentukan pembolehubah input dan output.
Ambil apa yang berlaku dalam // conversion 开头的部分是成为函数的良好候选者,但我更愿意将其保留在 main 函数中以用于演示目的。让我回顾一下 loop:

  1. Anda skop kemasukan pembolehubah input
  2. Jika kunci mempunyai akhiran _model, ia diambil kira
  3. Anda tentukan tempmap 类型的本地范围映射[string]output yang mengandungi bilangan elemen yang betul yang ingin kami tambahkan
  4. Anda skop pembolehubah v (sebab itu kami berurusan dengan pemetaan bersarang)
  5. Untuk setiap projek anda perlu menambah entri pada tempmap
  6. Di penghujung gelung bersarang, tambahkan entri pada peta induk (output)

Bahagian terakhir hanya mencetak json yang bagus yang boleh dibaca dan diperiksa dengan mudah.

Sila ambil perhatian bahawa kod ini dipermudahkan hanya untuk menunjukkan cara mencapai matlamat anda, sila laraskannya sebelum masuk ke dalam pengeluaran.

Sila beritahu saya jika ini membantu, terima kasih!

Atas ialah kandungan terperinci Tukar peta golang kepada struktur peta yang lain. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam