Go map排序的實(shí)現(xiàn)示例
更新時(shí)間:2023年12月25日 10:21:24 作者:metabit
map默認(rèn)是無(wú)序的,不管是按照key還是按照value默認(rèn)都不排序,本文主要介紹了Go map排序的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
1. 將key 或 value 單獨(dú)組成其類型的切片或數(shù)組,進(jìn)行排序
package main import ( "fmt" "sort" ) func main() { table := map[string]string{ "hello": "hello", "world": "world", "a": "a", "b": "b", "c": "c", "d": "d", } var keys, values []string for k, v := range table { keys = append(keys, k) values = append(values, v) } sort.Slice(keys, func(i, j int) bool { if keys[i] < keys[j] { //keys[i], keys[j] = keys[j], keys[i] values[i], values[j] = values[j], values[i] return true } return false }) fmt.Println(keys) fmt.Println(values) }
可以根據(jù)有序的key,找到對(duì)應(yīng)的value
for _, key := range keys { fmt.Println(table[key]) }
2. 將key,value放入結(jié)構(gòu)體,對(duì)結(jié)構(gòu)體切片排序,既可以對(duì)key排序,又可以對(duì)value排序
type Entity struct { K string V string } table := map[string]string{ "hello": "hello", "world": "world", "a": "a", "b": "b", "c": "c", "d": "d", } var entities []Entity for k, v := range table { entities = append(entities, Entity{k, v}) } sort.Slice(entities, func(i, j int) bool { return entities[i].K < entities[j].K }) fmt.Println(entities)
到此這篇關(guān)于Go map排序的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)GO map排序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
GoLang中生成UUID唯一標(biāo)識(shí)的實(shí)現(xiàn)
這篇文章主要介紹了GoLang中生成UUID唯一標(biāo)識(shí)的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-05-05golang?db事務(wù)的統(tǒng)一封裝的實(shí)現(xiàn)
這篇文章主要介紹了golang db事務(wù)的統(tǒng)一封裝的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12Go語(yǔ)言使用時(shí)會(huì)遇到的錯(cuò)誤及解決方法詳解
這篇文章主要為大家詳細(xì)介紹了Go語(yǔ)言使用時(shí)常常會(huì)遇到的一些錯(cuò)誤及解決方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-07-07Go語(yǔ)言利用接口實(shí)現(xiàn)鏈表插入功能詳解
這篇文章主要為大家介紹了Go語(yǔ)言中的接口,以及如何利用接口實(shí)現(xiàn)鏈表插入功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-04-04