C語言中文網 目錄
首頁 > Go語言教程 > Go語言容器 閱讀:8,271

Go語言遍歷map(訪問map中的每一個鍵值對)

map 的遍歷過程使用 for range 循環完成,代碼如下:
scene := make(map[string]int)

scene["route"] = 66
scene["brazil"] = 4
scene["china"] = 960

for k, v := range scene {
    fmt.Println(k, v)
}
遍歷對于 Go 語言的很多對象來說都是差不多的,直接使用 for range 語法。遍歷時,可以同時獲得鍵和值。如只遍歷值,可以使用下面的形式:
for _, v := range scene {
將不需要的鍵改為匿名變量形式。

只遍歷鍵時,使用下面的形式:
for k := range scene {
無須將值改為匿名變量形式,忽略值即可。

注意:遍歷輸出元素的順序與填充順序無關。不能期望 map 在遍歷時返回某種期望順序的結果。

如果需要特定順序的遍歷結果,正確的做法是排序,代碼如下:
scene := make(map[string]int)

// 準備map數據
scene["route"] = 66
scene["brazil"] = 4
scene["china"] = 960

// 聲明一個切片保存map數據
var sceneList []string

// 將map數據遍歷復制到切片中
for k := range scene {
    sceneList = append(sceneList, k)
}

// 對切片進行排序
sort.Strings(sceneList)

// 輸出
fmt.Println(sceneList)
代碼輸出如下:
[brazil china route]

代碼說明如下:
  • 第 1 行,創建一個 map 實例,鍵為字符串,值為整型。
  • 第 4~6 行,將 3 個鍵值對寫入 map 中。
  • 第 9 行,聲明 sceneList 為字符串切片,以緩沖和排序 map 中的所有元素。
  • 第 12 行,將 map 中元素的鍵遍歷出來,并放入切片中。
  • 第 17 行,對 sceneList 字符串切片進行排序。排序時,sceneList 會被修改。
  • 第 20 行,輸出排好序的 map 的鍵。

sort.Strings 的作用是對傳入的字符串切片進行字符串字符的升序排列。排序接口的使用將在后面的章節中介紹。

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo