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

GO中對map排序的實(shí)現(xiàn)

 更新時間:2023年03月06日 10:11:06   作者:雨雨不怕雨  
本文主要介紹了GO中對map排序的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

GO語言中,map是哈希表,能夠?qū)⑻囟愋偷膋ey映射到特定類型的Value上。在查詢Map里面的內(nèi)容時,其時間復(fù)雜度為O(1)非常高效。但其存儲并不是線性的,遍歷輸出時,也沒有順序可言。如果需要按順序的輸出map中的元素,就需要借助其他數(shù)據(jù)結(jié)構(gòu)的幫助。

按照需求,本文分別提供了按Key順序輸出map、按Value順序輸出map兩種方法。

按Key順序輸出map

思路就是,先將key存儲下來進(jìn)行排序,然后按照排序后的順序依次訪問map,得到排序后的結(jié)果:

package main

import (
?? ?"fmt"
?? ?"sort"
)

func main() {
?? ?m := make(map[int]int)
?? ?m[2] = 5
?? ?m[3] = 7
?? ?m[1] = 6
?? ?m[10] = 22
?? ?m[8] = 9
?? ?m[4] = 7
?? ?fmt.Println("not sort:")
?? ?for k, v := range m {
?? ??? ?fmt.Println(k, v)
?? ?}
?? ?// 得到key值
?? ?var ks []int
?? ?for k, _ := range m {
?? ??? ?ks = append(ks, k)
?? ?}
?? ?//對key排序
?? ?sort.Ints(ks)
?? ?//輸出結(jié)果
?? ?fmt.Println("sort:")
?? ?for _, v := range ks {
?? ??? ?fmt.Println(v, m[v])
?? ?}
}

按Value順序輸出map

思路就是,先將map中的值,存儲到一個結(jié)構(gòu)體中,然后將結(jié)構(gòu)體實(shí)現(xiàn)Sort接口實(shí)現(xiàn)排序,再輸出結(jié)果,代碼如下:

package main

import (
?? ?"fmt"
?? ?"sort"
)

//定義結(jié)構(gòu)體存放map值
type temp struct {
?? ?k int
?? ?v int
}
type temps []temp

// ?實(shí)現(xiàn)sort包中Interface接口

func (t temps) Len() int {
?? ?return len(t)
}

func (t temps) Less(i, j int) bool {
?? ?return t[i].v < t[j].v
}

func (t temps) Swap(i, j int) {
?? ?t[i], t[j] = t[j], t[i]
}

func main() {
?? ?m := make(map[int]int)

?? ?m[2] = 5
?? ?m[3] = 7
?? ?m[1] = 6
?? ?m[10] = 22
?? ?m[8] = 9
?? ?m[4] = 7
?? ?fmt.Println("not sort:")
?? ?for k, v := range m {
?? ??? ?fmt.Println(k, v)
?? ?}
?? ?// 得到key值
?? ?var ts temps
?? ?for k, v := range m {
?? ??? ?ts = append(ts, temp{k: k, v: v})
?? ?}
?? ?//對key排序
?? ?sort.Sort(ts)
?? ?//輸出結(jié)果
?? ?fmt.Println("sort:")
?? ?for _, v := range ts {
?? ??? ?fmt.Println(v.k, v.v)
?? ?}

}

到此這篇關(guān)于GO中對map排序的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)GO map排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Golang語言中的interface

    詳解Golang語言中的interface

    這篇文章主要介紹了Golang語言中的interface的相關(guān)資料,幫助大家更好的理解和使用golang,感興趣的朋友可以了解下
    2021-01-01
  • golang語言如何將interface轉(zhuǎn)為int, string,slice,struct等類型

    golang語言如何將interface轉(zhuǎn)為int, string,slice,struct等類型

    這篇文章主要介紹了golang語言如何將interface轉(zhuǎn)為int, string,slice,struct等類型,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • Golang中String,rune和byte的相互轉(zhuǎn)換

    Golang中String,rune和byte的相互轉(zhuǎn)換

    Go語言中,string就是只讀的采用utf8編碼的字節(jié)切片,rune是int32的別名,代表字符的Unicode編碼,這篇文章主要介紹了Golang中String,rune和byte的相互轉(zhuǎn)換,感興趣的小伙伴可以了解一下
    2023-10-10
  • 關(guān)于golang中平行賦值淺析

    關(guān)于golang中平行賦值淺析

    這篇文章主要給大家介紹了關(guān)于golang中平行賦值的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用golang具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • go語言 swagger 查詢 json 字段注釋的示例代碼

    go語言 swagger 查詢 json 字段注釋的示例代碼

    在Go語言中,使用Swagger通過swag工具和gin-gonic框架生成API文檔,涉及引入依賴、定義模型、添加注釋等步驟,示例中展示了如何為接受查詢參數(shù)的API端點(diǎn)添加注釋,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • 詳解Golang利用反射reflect動態(tài)調(diào)用方法

    詳解Golang利用反射reflect動態(tài)調(diào)用方法

    這篇文章主要介紹了詳解Golang利用反射reflect動態(tài)調(diào)用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • 深入理解Go語言中的數(shù)組和切片

    深入理解Go語言中的數(shù)組和切片

    Go語言中的數(shù)組大概相當(dāng)與C/C++中的數(shù)組,固定大小,不能夠動態(tài)擴(kuò)展大小,而切片大概相當(dāng)與C++中的Vector,可以動態(tài)擴(kuò)展大小,當(dāng)大小超過容量時,重新分配一塊內(nèi)存,然后將數(shù)據(jù)復(fù)制到新的內(nèi)存區(qū)域。下面我們通過幾個問題來更好理解golang 的數(shù)組和切片,一起來看看吧。
    2016-09-09
  • Golang項(xiàng)目搭配nginx部署反向代理負(fù)載均衡講解

    Golang項(xiàng)目搭配nginx部署反向代理負(fù)載均衡講解

    這篇文章主要為大家介紹了Golang項(xiàng)目搭配nginx部署正反向代理負(fù)載均衡講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04
  • Golang中基礎(chǔ)的命令行模塊urfave/cli的用法說明

    Golang中基礎(chǔ)的命令行模塊urfave/cli的用法說明

    這篇文章主要介紹了Golang中基礎(chǔ)的命令行模塊urfave/cli的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 在Linux系統(tǒng)中安裝Go語言的詳細(xì)教程

    在Linux系統(tǒng)中安裝Go語言的詳細(xì)教程

    這篇文章主要介紹了在Linux系統(tǒng)中安裝Go語言的詳細(xì)教程,由于國內(nèi)很多人對谷歌的盲目追捧,導(dǎo)致Go語言在國內(nèi)的人氣遠(yuǎn)超國外...需要的朋友可以參考下
    2015-06-06

最新評論