中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Go語言基礎中字典類型的遍歷和排序如何理解

發布時間:2022-01-17 16:14:20 來源:億速云 閱讀:162 作者:kk 欄目:大數據

這期內容當中小編將會給大家帶來有關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語言基礎中字典類型的遍歷和排序如何理解了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

常山县| 宁远县| 汽车| 沙雅县| 金昌市| 嘉峪关市| 绥宁县| 房产| 利辛县| 阳朔县| 周至县| 芜湖市| 新宁县| 开平市| 仲巴县| 江达县| 双柏县| 望谟县| 安宁市| 喜德县| 工布江达县| 托克逊县| 镇沅| 屯门区| 枣阳市| 广昌县| 本溪市| 甘洛县| 黄浦区| 佛坪县| 鸡东县| 汉中市| 准格尔旗| 根河市| 东源县| 肇源县| 丘北县| 固阳县| 金坛市| 遵义市| 张掖市|