首頁 >後端開發 >Golang >如何刪除{}介面中重複的介面資料{}

如何刪除{}介面中重複的介面資料{}

PHPz
PHPz轉載
2024-02-09 23:12:091016瀏覽

如何刪除{}介面中重複的介面資料{}

php小編柚子為您介紹如何刪除{}介面中重複的介面資料{}。在開發過程中,我們常常會遇到需要刪除重複資料的情況。重複的數據不僅影響系統效能,還會帶給使用者困擾。為了解決這個問題,我們可以使用一些技巧和方法來檢測和刪除重複的介面數據,從而提高系統的效率和使用者的體驗。接下來,我們將為您詳細介紹如何實現這一目標。

問題內容

如何從 []interface{} 資料中刪除重複的 interface{} 項目。

"data": [
        {
            "signstatus": true,
            "username": "yash90"
        },
        {
            "signstatus": false,
            "username": "dhananjay"
        },
        {
            "signstatus": true,
            "username": "yash90"
        }
    ],

目前,我有上述數據,我想刪除相同用戶名的重複條目。那麼我在下面的函數中需要什麼樣的邏輯。

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

知道如何做到這一點嗎?

我預期結果應該如下:

"data": [
        {
            "signstatus": true,
            "username": "Yash90"
        },
        {
            "signstatus": false,
            "username": "Dhananjay"
        },
    ],

解決方法

首先,我認為在這種特定情況下使用 []interface{} 作為輸入是一個壞主意。正確的輸入應該是 []*entry with

type entry struct {
    username   string `json:"username"`
    signstatus bool   `json:"signstatus"`
}

或至少 map[string]interface{}

但如果 []interface{} 是必須的,那麼這裡是解決方案。

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
}

以上是如何刪除{}介面中重複的介面資料{}的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除