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

Tukar peta golang kepada struktur peta yang lain

PHPz
Lepaskan: 2024-02-14 11:33:18
ke hadapan
902 orang telah melayarinya

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",
                    },
                },
            }
Salin selepas log masuk

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"},
                    },
                },
            }
Salin selepas log masuk

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))
}
Salin selepas log masuk

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!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan