亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

普兰店市| 凉山| 旬邑县| 阜南县| 珲春市| 文登市| 法库县| 高陵县| 泗水县| 辛集市| 萨嘎县| 阿拉善左旗| 边坝县| 城市| 北宁市| 周口市| 秀山| 城步| 齐齐哈尔市| 福海县| 台北县| 财经| 定西市| 阿瓦提县| 敖汉旗| 甘谷县| 昌吉市| 德格县| 陇西县| 宜黄县| 江都市| 定州市| 梁平县| 周宁县| 广宗县| 微山县| 积石山| 安图县| 汉阴县| 化德县| 杂多县|