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

Go語言中排序的3種實現(xiàn)方法

 更新時間:2023年08月15日 10:32:40   作者:AlwaysBeta  
在寫代碼過程中,排序是經常會遇到的需求,這篇文章主要為大家介紹三種常用的方法,文中的示例代碼簡潔易懂,需要的小伙伴可以參考下

在寫代碼過程中,排序是經常會遇到的需求,本文會介紹三種常用的方法。

廢話不多說,下面正文開始。

使用標準庫

根據(jù)場景直接使用標準庫中的方法,比如:

  • sort.Ints
  • sort.Float64s
  • sort.Strings

舉個例子:

s?:=?[]int{4,?2,?3,?1}
sort.Ints(s)
fmt.Println(s)?//?[1?2?3?4]

自定義比較器

使用 sort.Slice 方法排序時,可以自定義比較函數(shù) less(i, j int) bool,這樣就可以根據(jù)需要按不同的字段進行排序。

如果想要穩(wěn)定排序的話,就使用 sort.SliceStable 方法。

舉個例子:

family?:=?[]struct?{
????Name?string
????Age??int
}{
????{"Alice",?23},
????{"David",?2},
????{"Eve",?2},
????{"Bob",?25},
}
//?Sort?by?age,?keeping?original?order?or?equal?elements.
sort.SliceStable(family,?func(i,?j?int)?bool?{
????return?family[i].Age?<?family[j].Age
})
fmt.Println(family)?//?[{David?2}?{Eve?2}?{Alice?23}?{Bob?25}]

自定義數(shù)據(jù)結構

使用 sort.Sort 或者 sort.Stable 方法,它們可以對任意實現(xiàn)了 sort.Interface 的數(shù)據(jù)結構排序。

type?Interface?interface?{
????//?Len?is?the?number?of?elements?in?the?collection.
????Len()?int
????//?Less?reports?whether?the?element?with
????//?index?i?should?sort?before?the?element?with?index?j.
????Less(i,?j?int)?bool
????//?Swap?swaps?the?elements?with?indexes?i?and?j.
????Swap(i,?j?int)
}

意思就是說,只要某一個數(shù)據(jù)結構實現(xiàn)了 Len() int,Less(i, j int) bool 和 Swap(i, j int) 這三個方法,那么就可以使用 sort.Sort 來排序。

舉個例子:

type?Person?struct?{
????Name?string
????Age??int
}
//?ByAge?implements?sort.Interface?based?on?the?Age?field.
type?ByAge?[]Person
func?(a?ByAge)?Len()?int???????????{?return?len(a)?}
func?(a?ByAge)?Less(i,?j?int)?bool?{?return?a[i].Age?<?a[j].Age?}
func?(a?ByAge)?Swap(i,?j?int)??????{?a[i],?a[j]?=?a[j],?a[i]?}
func?main()?{
????family?:=?[]Person{
????????{"Alice",?23},
????????{"Eve",?2},
????????{"Bob",?25},
????}
????sort.Sort(ByAge(family))
????fmt.Println(family)?//?[{Eve?2}?{Alice?23}?{Bob?25}]
}

字典排序

我們都知道,字典是無序的,具體原因可以看之前寫的這篇文章 Go 語言 map 如何順序讀取?

如果想要字典按 key 或者 value 排序的話,可以這樣做。

m?:=?map[string]int{"Alice":?2,?"Cecil":?1,?"Bob":?3}
keys?:=?make([]string,?0,?len(m))
for?k?:=?range?m?{
????keys?=?append(keys,?k)
}
sort.Strings(keys)
for?_,?k?:=?range?keys?{
????fmt.Println(k,?m[k])
}
//?Output:
//?Alice?2
//?Bob?3
//?Cecil?1

到此這篇關于Go語言中排序的3種實現(xiàn)方法的文章就介紹到這了,更多相關Go排序內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Go語言集成mysql驅動、調用數(shù)據(jù)庫、查詢數(shù)據(jù)操作示例

    Go語言集成mysql驅動、調用數(shù)據(jù)庫、查詢數(shù)據(jù)操作示例

    這篇文章主要介紹了Go語言集成mysql驅動、調用數(shù)據(jù)庫、查詢數(shù)據(jù)操作,結合實例形式分析了Go語言安裝mysql驅動包、連接mysql數(shù)據(jù)庫及查詢等相關操作技巧,需要的朋友可以參考下
    2019-06-06
  • Go語言Gin框架獲取請求參數(shù)的兩種方式

    Go語言Gin框架獲取請求參數(shù)的兩種方式

    在添加路由處理函數(shù)之后,就可以在路由處理函數(shù)中編寫業(yè)務處理代碼了,而編寫業(yè)務代碼第一件事一般就是獲取HTTP請求的參數(shù)吧,Gin框架在net/http包的基礎上封裝了獲取參數(shù)的方式,本文小編給大家介紹了獲取參數(shù)的兩種方式,需要的朋友可以參考下
    2024-01-01
  • Go Sentinel 動態(tài)數(shù)據(jù)源配置指南(示例詳解)

    Go Sentinel 動態(tài)數(shù)據(jù)源配置指南(示例詳解)

    本文介紹了如何使用Go語言配置Sentinel的動態(tài)數(shù)據(jù)源,并通過本地文件和Nacos兩種方式實現(xiàn)動態(tài)配置,通過這種方式,可以靈活地管理和更新限流規(guī)則,提升系統(tǒng)的穩(wěn)定性和響應速度,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • 如何在Go中使用切片容量和長度

    如何在Go中使用切片容量和長度

    這篇文章主要介紹了如何在Go中使用切片容量和長度,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • Golang使用WebSocket通信的實現(xiàn)

    Golang使用WebSocket通信的實現(xiàn)

    這篇文章主要介紹了Golang使用WebSocket通信的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • Go基本數(shù)據(jù)類型的具體使用

    Go基本數(shù)據(jù)類型的具體使用

    本文主要介紹了Go的基本數(shù)據(jù)類型,包括布爾類型、整數(shù)類型、浮點數(shù)類型、復數(shù)類型、字符串類型,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • Go模塊布局管理文檔翻譯理解

    Go模塊布局管理文檔翻譯理解

    這篇文章主要為大家介紹了Go模塊布局管理文檔翻譯理解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • Golang?使用os?庫的?ReadFile()?讀文件最佳實踐

    Golang?使用os?庫的?ReadFile()?讀文件最佳實踐

    這篇文章主要介紹了Golang使用os庫的ReadFile()讀文件最佳實踐,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • golang切片內存應用技巧詳解

    golang切片內存應用技巧詳解

    這篇文章主要介紹了golang切片內存應用技巧詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • Golang中的time.Duration類型用法說明

    Golang中的time.Duration類型用法說明

    這篇文章主要介紹了Golang中的time.Duration類型用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12

最新評論