Rumah > pembangunan bahagian belakang > Golang > Cara memadamkan data antara muka pendua dalam {}antara muka{}

Cara memadamkan data antara muka pendua dalam {}antara muka{}

PHPz
Lepaskan: 2024-02-09 23:12:09
ke hadapan
1026 orang telah melayarinya

Cara memadamkan data antara muka pendua dalam {}antara muka{}

editor php Youzi akan memperkenalkan kepada anda cara memadamkan data antara muka pendua{} dalam {}antara muka. Semasa proses pembangunan, kami sering menghadapi situasi di mana kami perlu memadamkan data pendua. Data pendua bukan sahaja menjejaskan prestasi sistem, tetapi juga menyebabkan masalah kepada pengguna. Untuk menyelesaikan masalah ini, kami boleh menggunakan beberapa teknik dan kaedah untuk mengesan dan memadam data antara muka pendua, dengan itu meningkatkan kecekapan sistem dan pengalaman pengguna. Seterusnya, kami akan memberikan anda butiran tentang cara untuk mencapai ini.

Kandungan soalan

Cara untuk mengalih keluar masukan antara muka pendua{} daripada data []antara muka{}.

"data": [
        {
            "signstatus": true,
            "username": "yash90"
        },
        {
            "signstatus": false,
            "username": "dhananjay"
        },
        {
            "signstatus": true,
            "username": "yash90"
        }
    ],
Salin selepas log masuk

Pada masa ini, saya mempunyai data di atas dan saya ingin mengalih keluar masukan pendua untuk nama pengguna yang sama. Jadi apakah jenis logik yang saya perlukan dalam fungsi di bawah.

func removeduplicateentries(listofusernamesandsignstatus []interface{}) []interface{} {
    updatedlistofusernamesandsignstatus := make([]interface{}, 0)
    for _, value := range listofusernamesandsignstatus {
        if value != nil {
        updatedlistofusernamesandsignstatus = append(updatedlistofusernamesandsignstatus, value)
        }
    }
    return updatedlistofusernamesandsignstatus
}
Salin selepas log masuk

Ada idea bagaimana untuk melakukan ini?

Saya jangkakan hasilnya harus seperti berikut:

"data": [
        {
            "signstatus": true,
            "username": "Yash90"
        },
        {
            "signstatus": false,
            "username": "Dhananjay"
        },
    ],
Salin selepas log masuk

Penyelesaian

Pertama sekali, saya rasa dalam kes khusus ini gunakan []interface{} 作为输入是一个坏主意。正确的输入应该是 []*entry dengan

type entry struct {
    username   string `json:"username"`
    signstatus bool   `json:"signstatus"`
}
Salin selepas log masuk

atau sekurang-kurangnya map[string]interface{}.

Tetapi jika []interface{} adalah satu kemestian, maka inilah penyelesaiannya.

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

Atas ialah kandungan terperinci Cara memadamkan data antara muka pendua dalam {}antara muka{}. 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