GO語言————8.6 將 map 的鍵值對調
8.6 將 map 的鍵值對調
這裡對調是指調換 key 和 value。如果 map 的值型別可以作為 key 且所有的 value 是唯一的,那麼通過下面的方法可以簡單的做到鍵值對調。
示例 8.7 invert_map.go:
package main
import (
"fmt"
)
var (
barVal = map[string]int{"alpha": 34, "bravo": 56, "charlie": 23,
"delta": 87, "echo": 56, "foxtrot": 12,
"golf": 34, "hotel": 16, "indio": 87,
"juliet": 65, "kili": 43, "lima": 98}
)
func main() {
invMap := make(map[int]string, len(barVal))
for k, v := range barVal {
invMap[v] = k
}
fmt.Println("inverted:")
for k, v := range invMap {
fmt.Printf("Key: %v, Value: %v / ", k, v)
}
}
輸出結果:
inverted:
Key: 34, Value: golf / Key: 23, Value: charlie / Key: 16, Value: hotel / Key: 87, Value: delta / Key: 98, Value: lima / Key: 12, Value: foxtrot / Key: 43, Value: kili / Key: 56, Value: bravo / Key: 65, Value: juliet /
如果原始 value 值不唯一那麼這麼做肯定會出錯;為了保證不出錯,當遇到不唯一的 key 時應當立刻停止,這樣可能會導致沒有包含原 map 的所有鍵值對!一種解決方法就是仔細檢查唯一性並且使用多值 map,比如使用 map[int][]string
型別。
練習 8.2
構造一個將英文飲料名對映為法語(或者任意你的母語)的集合;先列印所有的飲料,然後列印原名和翻譯後的名字。接下來按照英文名排序後再列印出來。
相關文章
- Go語言mapGo
- GO語言————8.5 map 的排序Go排序
- Go語言學習——mapGo
- GO語言————8.2 測試鍵值對是否存在及刪除元素Go
- Go語言map的底層實現Go
- GO語言————8.4 map 型別的切片Go型別
- Go語言——sync.Map原始碼分析Go原始碼
- go語言學習-陣列-切片-mapGo陣列
- Go語言入門系列(四)之map的使用Go
- Go語言將支援AndroidGoAndroid
- GO語言————8.1 MAP宣告、初始化和makeGo
- go語言變數的宣告與賦值Go變數賦值
- Go語言之對映(map)快速入門篇Go
- 2020 年 HackerEarth 調查:Go 語言成為最受歡迎的語言(內含 Go 語言圖譜下載)Go
- 將 VIM 打造成 go 語言的 ideGoIDE
- 2018年Go 語言調查報告Go
- 給 go 語言新增中文關鍵字Go
- 自定義Map集合,將重複的鍵值對不進行覆蓋而是進行疊加
- GO語言————6.9 應用閉包:將函式作為返回值Go函式
- Go 語言 2019 調查報告發布(內含 Go 語言圖譜下載)Go
- Go 為什麼不在語言層面支援 map 併發?Go
- Go語言 2019 調查報告發布Go
- Go語言————1、初識GO語言Go
- Go 語言 new 和 make 關鍵字的區別Go
- 深度解密Go語言之 map解密Go
- 《快學 Go 語言》第 4 課 —— 低調的陣列Go陣列
- Go語言的”坑“Go
- go語言的介面Go
- go語言與c語言的相互呼叫GoC語言
- GO語言————2、GO語言環境安裝Go
- Go 語言基礎 陣列、切片、對映Go陣列
- PHP轉Go系列:map對映PHPGo
- GO語言————6.7 將函式作為引數Go函式
- 【Go 語言入門專欄】Go 語言的起源與發展Go
- GO語言————6.2 函式引數與返回值Go函式
- Go 語言傳值和深淺複製問題Go
- 2021年Go語言開發者調查結果Go
- Go語言版本的forgeryGo