欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go語(yǔ)言中比較兩個(gè)map[string]interface{}是否相等

 更新時(shí)間:2023年08月10日 11:15:15   作者:妮蔻大眼睛  
本文主要介紹了Go語(yǔ)言中比較兩個(gè)map[string]interface{}是否相等,我們可以將其轉(zhuǎn)化成順序一樣的 slice ,然后再轉(zhuǎn)化未json,具有一定的參考價(jià)值,感興趣的可以了解一下

Go語(yǔ)言中Map是無(wú)序的

再Go語(yǔ)言中,Map是一個(gè)內(nèi)置類(lèi)型,它將鍵與值綁定在一起,可以通過(guò)鍵獲取響應(yīng)的值。

由于Go Map內(nèi)部不存儲(chǔ)機(jī)制是以key為hash的結(jié)構(gòu)來(lái)實(shí)現(xiàn)的,所以順序是混亂的。

舉例說(shuō)明:在兩次遍歷中讀取數(shù)據(jù)的順序是不一樣的。

func main() {
    a := map[string]interface{}{
        "orange": "1",
        "apple":  "2",
        "banana": "3",
    }
    fmt.Println("第一遍:")
    for k, v := range a {
        fmt.Print(k + " : ")
        fmt.Println(v)
    }
    fmt.Println("第二遍:")
    for k, v := range a {
        fmt.Print(k + " : ")
        fmt.Println(v)
    }
}

執(zhí)行結(jié)果:

第一遍:
apple : 2
banana : 3
orange : 1
第二遍:
banana : 3
orange : 1
apple : 2

因?yàn)镚o中的Map是無(wú)序的,所以每次讀取都不一樣。

Go interface{}無(wú)法比較是否相等

Go 語(yǔ)言中兩個(gè) interface{} 是無(wú)法比較是否相等的。因?yàn)轭?lèi)型不確定,任何類(lèi)型的數(shù)據(jù)都可以被塞到interface{}中。

那么如何比較兩個(gè)map[string]interface{} 是否相等呢?

首先,我們可以將它們轉(zhuǎn)化為 json 字符串來(lái)比較即可,但是因?yàn)镸ap是無(wú)序的,所以轉(zhuǎn)化的json字符串不一定會(huì)一模一樣。(當(dāng)然,你也可以用反射來(lái)做,但是代碼量多,麻煩。)

所以我們可以將其轉(zhuǎn)化成順序一樣的 slice ,然后再轉(zhuǎn)化未 json 。 這樣就確保的json可以一樣了。

代碼如下:

func CompareTwoMapInterface(data1 map[string]interface{},?
?? ??? ??? ??? ??? ??? ?data2 map[string]interface{}) bool {
?? ?keySlice := make([]string, 0)
?? ?dataSlice1 := make([]interface{}, 0)
?? ?dataSlice2 := make([]interface{}, 0)
?? ?for key, value := range data1 {
?? ??? ?keySlice = append(keySlice, key)
?? ??? ?dataSlice1 = append(dataSlice1, value)
?? ?}
?? ?for _, key := range keySlice {
?? ??? ?if data, ok := data2[key]; ok {
?? ??? ??? ?dataSlice2 = append(dataSlice2, data)
?? ??? ?} else {
?? ??? ??? ?return false
?? ??? ?}
?? ?}
?? ?dataStr1, _ := json.Marshal(dataSlice1)
?? ?dataStr2, _ := json.Marshal(dataSlice2)
?? ?return string(dataStr1) == string(dataStr2)
}

到此這篇關(guān)于Go語(yǔ)言中比較兩個(gè)map[string]interface{}是否相等的文章就介紹到這了,更多相關(guān)Go 兩個(gè)map[string]interface{}相等內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Golang 并發(fā)以及通道的使用方式

    Golang 并發(fā)以及通道的使用方式

    這篇文章主要介紹了Golang 并發(fā)以及通道的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • Go語(yǔ)言中三種不同md5計(jì)算方式的性能比較

    Go語(yǔ)言中三種不同md5計(jì)算方式的性能比較

    md5計(jì)算在我們?nèi)粘9ぷ鞯臅r(shí)候經(jīng)常能遇到,下面這篇文章主要介紹了Go語(yǔ)言中三種不同md5計(jì)算方式的性能比較,需要的朋友可以參考借鑒,下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-01-01
  • Linux中Go環(huán)境配置和GoModule常用操作

    Linux中Go環(huán)境配置和GoModule常用操作

    這篇文章主要介紹了Linux中Go環(huán)境配置和GoModule,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-01-01
  • GoFrame?gtree樹(shù)形結(jié)構(gòu)的使用技巧示例

    GoFrame?gtree樹(shù)形結(jié)構(gòu)的使用技巧示例

    這篇文章主要為大家介紹了GoFrame?gtree樹(shù)形結(jié)構(gòu)的使用技巧示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Go開(kāi)發(fā)go-optioner工具實(shí)現(xiàn)輕松生成函數(shù)選項(xiàng)模式代碼

    Go開(kāi)發(fā)go-optioner工具實(shí)現(xiàn)輕松生成函數(shù)選項(xiàng)模式代碼

    go-optioner?是一個(gè)在?Go?代碼中生成函數(shù)選項(xiàng)模式代碼的工具,可以根據(jù)給定的結(jié)構(gòu)定義自動(dòng)生成相應(yīng)的選項(xiàng)代碼,下面就來(lái)聊聊go-optioner是如何使用的吧
    2023-07-07
  • Go語(yǔ)言for-range函數(shù)使用技巧實(shí)例探究

    Go語(yǔ)言for-range函數(shù)使用技巧實(shí)例探究

    這篇文章主要為大家介紹了Go語(yǔ)言for-range函數(shù)使用技巧實(shí)例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • Go語(yǔ)言中最便捷的http請(qǐng)求包resty的使用詳解

    Go語(yǔ)言中最便捷的http請(qǐng)求包resty的使用詳解

    go語(yǔ)言雖然自身就有net/http包,但是說(shuō)實(shí)話(huà)用起來(lái)沒(méi)那么好用,resty包是go語(yǔ)言中一個(gè)非常受歡迎的http請(qǐng)求處理包,下面我們一起來(lái)學(xué)習(xí)一下resty的具體使用吧
    2025-03-03
  • golang?手寫(xiě)貪吃蛇示例實(shí)現(xiàn)

    golang?手寫(xiě)貪吃蛇示例實(shí)現(xiàn)

    這篇文章主要為大家介紹了golang?手寫(xiě)貪吃蛇示例實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • golang用melody搭建輕量的websocket服務(wù)的示例代碼

    golang用melody搭建輕量的websocket服務(wù)的示例代碼

    在Go中,可以使用gin和melody庫(kù)來(lái)搭建一個(gè)輕量級(jí)的WebSocket服務(wù),gin是一個(gè)流行的Web框架,而melody是一個(gè)用于處理WebSocket的庫(kù),本文給大家演示如何使用gin和melody搭建WebSocket服務(wù),感興趣的朋友一起看看吧
    2023-10-10
  • golang獲取網(wǎng)卡信息操作

    golang獲取網(wǎng)卡信息操作

    這篇文章主要介紹了golang獲取網(wǎng)卡信息操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12

最新評(píng)論