您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關Go語言基礎中字典類型的遍歷和排序如何理解,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
go是什么
golang是一種編譯語言,可以將代碼編譯為機器代碼,編譯后的二進制文件可以直接部署到目標機器而無需額外的依賴,所以golang的性能優于其他的解釋性語言,且可以在golang中使用goroutine來實現并發性,它提供了一個非常優雅的goroutine調度程序系統,可以很容易地生成數百萬個goroutine。
我們可以像遍歷數據那樣對字段類型數據進行遍歷:
testMap := map[string]int{
"one": 1,
"two": 2,
"three": 3,
}
for key, value := range testMap {
fmt.Println(key, value)
}
這種遍歷模式和我們在 PHP 中通過 foreach
對關聯數組進行遍歷很像,上述代碼輸出結果是:
three 3one 1two 2
當然,我們還可以借助匿名變量只獲取字典的值:
for _, value := range testMap { fmt.Println(value)}
或者像這樣只獲取字典的鍵名:
for key := range testMap { fmt.Println(key)}
所謂鍵值對調指的是交換字典的鍵和值,在 PHP 關聯數組中,有內置數組函數 array_flip 來實現類似的功能,在 Go 語言中,我們需要手動編寫代碼來實現,比如我們要對調 testMap
字典的鍵值,可以這么做:
invMap := make(map[int] string, 3)
for k, v := range testMap {
invMap[v] = k
}
for k, v := range invMap {
fmt.Println(k, v)
}
上述代碼的打印結果是:
3 three1 one2 two
在上篇教程中,我們提到過 Go 語言的字典不同于 PHP 的關聯數組,是一個無序集合,如果你想要對字典進行排序,可以通過分別為字典的鍵和值創建切片,然后通過對切片進行排序來實現,換句話說,如果要對字典按照鍵進行排序,可以這么做:
keys := make([]string, 0)
for k, _ := range testMap {
keys = append(keys, k)
}
sort.Strings(keys) // 對鍵進行排序
fmt.Println("Sorted map by key:")
for _, k := range keys {
fmt.Println(k, testMap[k])
}
上述代碼打印結果是:
Sorted map by key:one 1three 3two 2
該結果是按照鍵名在字母表中的排序進行升序排序的結果。
如果要對字典按照值進行排序,可以這么做:
values := make([]int, 0)
for _, v := range testMap {
values = append(values, v)
}
sort.Ints(values) // 對值進行排序
fmt.Println("Sorted map by value:")
for _, v := range values {
fmt.Println(invMap[v], v)
}
這里我們借助了之前創建的 invMap
通過字典的值反查對應的鍵,上述代碼打印結果如下:
Sorted map by value:one 1two 2three 3
該結果是按照鍵值對應數字大小進行升序排序的結果。
另外,你可能已經注意到我們在對切片進行排序時,使用了 Go 語言內置的 sort 包,這個包提供了一系列對切片和用戶自定義集合進行排序的函數。
上述就是小編為大家分享的Go語言基礎中字典類型的遍歷和排序如何理解了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。