網站首頁 編程語言 正文
一、Map是什么?
map是一堆鍵值對的未排序集合,類似Python中字典的概念,它的格式為map[keyType]valueType,是一個key-value的hash結構。map的讀取和設置也類似slice一樣,通過key來操作,只是slice的index只能是int類型,而map多了很多類型,可以是int,可以是string及所有完全定義了==與!=操作的類型
二、詳細代碼
1.對調鍵值
Map原數據:
moMap := map[string]int{ "張三": 21, "李四": 56, "王五": 23, "趙六": 45, "周七": 32, "陳八": 21, "許九": 21, "王十": 16, "吳三": 45, "鄭六": 23, "許七": 43, "李三": 16, }
具體代碼如下(示例):
// 鍵值對調? // 傳入參數:moMap map[string]int // 返回值: map[int][]string func reserveMap(moMap map[string]int) map[int][]string { ?? ?// 建立一個 resMap 與 moMap 容量相同 ?? ?// 由于對調可能存在多個值對應一個Key ?? ?// string 需轉為 切片[]string ?? ?resMap := make(map[int][]string, len(moMap)) ?? ?// 通過for range 遍歷 moMap ?? ?// k 即為 Key v 即為 Value ?? ?for k, v := range moMap { ?? ??? ?// 由于現在對應為 切片[]string ?? ??? ?// 使用 append 達到添加多個的效果 ?? ??? ?resMap[v] = append(resMap[v], k) ?? ?} ?? ? ?? ?// 程序結束 ?? ?return resMap }
2.進行調用
詳細代碼如下(示例):
package main import ( ?? ?"fmt" ) func main() { ?? ?moMap := map[string]int{ ?? ??? ?"張三": 21, "李四": 56, "王五": 23, ?? ??? ?"趙六": 45, "周七": 32, "陳八": 21, ?? ??? ?"許九": 21, "王十": 16, "吳三": 45, ?? ??? ?"鄭六": 23, "許七": 43, "李三": 16, ?? ?} ?? ?// 打印對調前 ?? ?for k, v := range moMap { ?? ??? ?fmt.Printf("Key: %v, Value: %v \n", k, v) ?? ?} ?? ?resMap := reserveMap(moMap) ?? ?fmt.Println("reserve:") ?? ?// 打印對調后 ?? ?for k, v := range resMap { ?? ??? ?fmt.Printf("Key: %v, Value: %v \n", k, v) ?? ?} } // 鍵值對調 // 傳入參數:moMap map[string]int // 返回值: map[int][]string func reserveMap(moMap map[string]int) map[int][]string { ?? ?// 建立一個 resMap 與 moMap 容量相同 ?? ?// 由于對調可能存在多個值對應一個Key ?? ?// string 需轉為 切片[]string ?? ?resMap := make(map[int][]string, len(moMap)) ?? ?// 通過for range 遍歷 moMap ?? ?// k 即為 Key v 即為 Value ?? ?for k, v := range moMap { ?? ??? ?// 由于現在對應為 切片[]string ?? ??? ?// 使用 append 達到添加多個的效果 ?? ??? ?resMap[v] = append(resMap[v], k) ?? ?} ?? ?// 程序結束 ?? ?return resMap }
總結
鍵值的簡單調換是熟悉Golang Map 數據類型的前奏。
PS:golang 無序的鍵值對集合map
package main import "fmt" func main() { ? ? ?/*創建集合并初始化 */ ? ? countryCapitalMap := make(map[string]string) ? ? /* map插入key - value對,各個國家對應的首都 */ ? ? countryCapitalMap [ "France" ] = "巴黎" ? ? countryCapitalMap [ "Italy" ] = "羅馬" ? ? countryCapitalMap [ "Japan" ] = "東京" ? ? countryCapitalMap [ "India " ] = "新德里" ? ? /*使用鍵輸出value值 */ ? ? for country := range countryCapitalMap { ? ? ? ? fmt.Println(country, "首都是", countryCapitalMap [country]) ? ? } ? ? /*查看元素在集合中是否存在 */ ? ? capital, ok := countryCapitalMap [ "American" ] /*如果確定是真實的,則存在,否則不存在 */ ? ? /*fmt.Println(capital) */ ? ? /*fmt.Println(ok) */ ? ? if (ok) { ? ? ? ? fmt.Println("American 的首都是", capital) ? ? } else { ? ? ? ? fmt.Println("American 的首都不存在") ? ? } }
原文鏈接:https://blog.csdn.net/moer0/article/details/122849308
相關推薦
- 2023-02-17 Python排序算法之冒泡排序_python
- 2023-12-09 使用String.valueOf()的坑
- 2022-06-28 C#反射調用dll文件中的方法操作泛型與屬性字段_C#教程
- 2022-09-06 React封裝CustomSelect組件思路詳解_React
- 2022-03-31 用python實現彈球小游戲_python
- 2023-10-18 如何在linux中安裝ssh服務
- 2022-09-22 為什么float4個字節比long8個字節所表示的數值范圍廣
- 2022-08-30 C語言深入詳解四大內存函數的使用_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支